数据库教程-DB2 LDAP

跨零代码为大家提供高品质的解决方案,请大家多多来访,跨零不胜感激,在此谢过。

LDAP是轻量级目录访问协议。 LDAP是一个全球性的目录服务,工业标准协议,该协议是基于客户端 – 服务器模型,运行在一个层中TCP/IP栈的上方。LDAP提供了一个工具来连接,访问,修改和搜索互联网目录。

在LDAP服务器包含该组织在一个目录树的形式信息。在客户端请求的服务器,以提供信息或在一个特定的信息执行一些操作。服务器对客户机提供所需的信息,如果它有一个,或者它是指客户到另一台服务器上所需的信息操作。然后,客户端获取从另一个服务器所需的信息。

目录树结构保持在所有参与的服务器相同。这是LDAP目录服务的一个突出特点。因此,无论哪个的服务器是由客户端的简称,在客户端总是得到在无差错的方式所需的信息。在这里,我们使用LDAP验证IBM DB2作为替代操作系统认证。

有两种类型的LDAP:

  1. 透明度
  2. 插件

让我们来看看如何配置透明LDAP。

配置LDAP

要开始使用LDAP配置,需要配置LDAP服务器。

LDAP服务器配置

创建一个slapd.conf的文件,它包含所有有关LDAP用户和组对象的信息。当安装LDAP服务器,默认情况下它被配置在机器上的基本LDAP目录树。

下面所示的表表示修改后的文件配置。

文本高亮度显示黄代码框表示为以下几点:

DBA user-id = “db2my1”, group = “db1my1adm”, password= “db2my1” ;管理员 user-id = “my1adm”, group = “dbmy1ctl”.

 # base dn: example.com  dn: dc=example,dc=com  dc: example  o: example  objectClass: organization  objectClass: dcObject  # pc box db  dn: dc=db697,dc=example,dc=com  dc: db697  o: db697  objectClass: organization  objectClass: dcObject  #  # Group: dbadm  #  dn: cn=dbmy1adm,dc=db697,dc=example,dc=com  cn: dbmy1adm  objectClass: top  objectClass: posixGroup  gidNumber: 400  objectClass: groupOfNames  member: uid=db2my1,cn=dbmy1adm,dc=db697,dc=example,dc=com  memberUid: db2my1  #  # User: db2  #  dn: uid=db2my1,cn=dbmy1adm,dc=db697,dc=example,dc=com  cn: db2my1  sn: db2my1  uid: db2my1  objectClass: top  objectClass: inetOrgPerson  objectClass: posixAccount  uidNumber: 400  gidNumber: 400  loginShell: /bin/csh  homeDirectory: /db2/db2my1  #  # Group: dbctl  #  dn: cn=dbmy1ctl,dc=db697,dc=example,dc=com  cn: dbmy1ctl  objectClass: top  objectClass: posixGroup  gidNumber: 404  objectClass: groupOfNames  member: uid=my1adm,cn=dbmy1adm,dc=db697,dc=example,dc=com  memberUid: my1adm  #  # User: adm  #  dn: uid=my1adm,cn=dbmy1ctl,dc=db697,dc=example,dc=com  cn: my1adm  sn: my1adm  uid: my1adm  objectClass: top  objectClass: inetOrgPerson  objectClass: posixAccount  uidNumber: 404  gidNumber: 404  loginShell: /bin/csh  homeDirectory: /home/my1adm 

保存上面的文件为“/var/lib/slapd.conf',然后通过以下命令将这些值添加到LDAP服务器执行此文件。这是一个linux命令;不是DB2命令。

 ldapadd r- -D cn=Manager,dc=example,dc=com W f  /var/lib/slapd.conf 

注册DB2用户和DB2组的LDAP服务器后,登录到已安装的实例和数据库的特定用户。需要配置LDAP客户端,以确认客户端在服务器的位置,无论是远程或本地。

LDAP客户端配置

LDAP客户端的配置保存在文件'ldap.conf'。可用于配置参数两个文件,一个是常见的,另一种是指定的。第一个在“/etc/ldap.conf”,而后者位于“/etc/openldap/ldap.conf”。

下面的数据是常见的LDAP客户端提供的配置文件

 # File: /etc/ldap.conf   # The file contains lots of more entries and many of them   # are comments. You show only the interesting values for now   host localhost   base dc=example,dc=com   ldap_version 3   pam_password crypt   pam_filter objectclass=posixAccount   nss_map_attribute uniqueMember member  nss_base_passwd dc=example,dc=com   nss_base_shadow dc=example,dc=com   nss_base_group dc=example,dc=com 

需要根据DB2配置改变服务器和域信息的位置。如果使用相同的系统服务器,提到它作为'localhost'为'host'和'基本',可以配置中提到“slapd.conf”文件LDAP服务器。

插入式验证模式(PAM)是用于身份验证服务的API。这是具有加密的密码和类型的posixAccount特殊LDAP对象LDAP身份验证的通用接口。这种类型的所有LDAP对象表示便携式操作系统界面(POSIX)帐户的属性。

网络安全服务(NSS)是一组库,以支持安全功能的客户端和服务器应用程序的跨平台开发。这包括像SSL,TLS,PKCS S/MIME等安全标准库。

需要指定基本DN这个接口和两个附加属性映射。 OpenLDAP客户端配置文件中包含如下条目:

 host localhost   base dc=example,dc=com

直到这一点,刚才定义的主机LDAP的服务和基础DN。

OpenLDAP验证环境

当配置LDAP服务器和LDAP客户端,通信同时验证。

第一步:检查本地LDAP服务器正在运行。使用下面的命令:

 ps -ef | grep -i ldap

该命令应列出LDAP守护进程,表示LDAP服务器:

 /usr/lib/openldap/slapd -h ldap:/// -u ldap -g ldap -o slp=on

这表示LDAP服务器正在运行,正在等待来自客户端的请求。如果没有这样的过程以前的命令就可以启动LDAP服务器,使用的“rcldap”命令。

 rcldap start 

当服务器启动时,可以将文件“‘/var/log/messages/发出以下命令。

 tail f /var/log/messages 

测试连接到LDAP服务器ldapsearch

ldapsearch命令,打开到LDAP服务器的连接,结合它并执行它可以通过使用特殊的参数'-x'指定搜索查询使用-x参数,而不是一个简单的身份验证机制连接到LDAP服务器喜欢简单的身份验证和安全层更复杂的机制(SASL)

 ldapsearch x  

LDAP服务器应该具有下面给出的回应答复,包含所有LDAP数据交换格式(LDIF)的LDAP条目。

 # extended LDIF   #   # LDAPv3   # base <> with scope subtree   # filter: (objectclass=*)  # requesting: ALL   # example.com   dn: dc=example, dc=com  dc: example   o: example   objectClass: organization   objectClass: dcObject   # search result   search: 2   result: 0 Success   # numResponses: 2   # numEntries: 1  

配置DB2

使LDAP服务器和客户机的工作后,需要配置DB2数据库使用LDAP。让我们来讨论如何安装和配置数据库使用LDAP环境,为DB2用户的认证过程。

配置DB2和LDAP互动插件

IBM提供了一个免费的包LDAP插件DB2。 DB2包包括三个DB2安全性插件为每个以下内容:

  • 服务器端验证
  • 客户端身份验证
  • 组查找

根据要求,可以使用任何三个插件或全部。这个插件不支持,其中一些用户在LDAP和其他定义的操作系统环境。如果决定使用LDAP插件,需要定义与LDAP服务器中的数据库相关联的所有用户。同样的原则也适用于组插件。

必须决定哪些插件强制规定系统。在方案中使用的客户端身份验证插件,用户ID和密码验证提供一个连接或语句出现在客户端系统上。这样的数据库管理器配置参数SRVCON_AUTH或认证需要被设置为值客户端。客户端的认证是难以确保和通常不建议。服务器插件通常建议,因为它执行的用户ID和密码的服务器端验证,如果客户端执行CONNECT或附加声明,这是安全的方式。服务器插件还提供了一种映射LDAP用户ID DB2授权ID。

现在,可以开始安装DB2安全性插件和配置,需要考虑DB2所需的目录信息树。DB2使用间接的授权,这意味着一个用户属于一个组,这个组被授予较少的部门。需要定义所有DB2用户和DB2组的LDAP目录。

图片/镜像

LDIF文件openldap.ldif应包含下面的代码:

 #   # LDAP root object   # example.com   #   dn: dc=example, dc=com   dc: example   o: example   objectClass: organization   objectClass: dcObject   #    # db2 groups    #    dn: cn=dasadm1,dc=example,dc=com    cn: dasadm1    objectClass: top    objectClass: posixGroup    gidNumber: 300    objectClass: groupOfNames   member: uid=dasusr1,cn=dasadm1,dc=example,dc=com    memberUid: dasusr1    dn: cn=db2grp1,dc=example,dc=com    cn: db2grp1    objectClass: top    objectClass: posixGroup    gidNumber: 301    objectClass: groupOfNames    member: uid=db2inst2,cn=db2grp1,dc=example,dc=com  memberUid: db2inst2    dn: cn=db2fgrp1,dc=example,dc=com    cn: db2fgrp1    objectClass: top   objectClass: posixGroup    gidNumber: 302    objectClass: groupOfNames   member: uid=db2fenc1,cn=db2fgrp1,dc=example,dc=com    memberUid: db2fenc1    #    # db2 users    #    dn: uid=dasusr1,  cn=dasadm1,  dc=example,dc=com    cn: dasusr1    sn: dasusr1    uid: dasusr1    objectClass: top    objectClass: inetOrgPerson   objectClass: posixAccount   uidNumber: 300    gidNumber: 300    loginShell: /bin/bash   homeDirectory: /home/dasusr1    dn: uid=db2inst2,cn=db2grp1,dc=example,dc=com    cn: db2inst2    sn: db2inst2    uid: db2inst2    objectClass: top    objectClass: inetOrgPerson    objectClass: posixAccount    uidNumber: 301    gidNumber: 301    loginShell: /bin/bash    homeDirectory: /home/db2inst2    dn: uid=db2fenc1,cn=db2fgrp1,dc=example,dc=com    cn: db2fenc1    sn: db2fenc1    uid: db2fenc1    objectClass: top    objectClass: inetOrgPerson    objectClass: posixAccount    uidNumber: 303    gidNumber: 303    loginShell: /bin/bash    homeDirectory: /home/db2fenc1   

创建一个名为“db2.ldif”文件,并粘贴上面的例子进去。使用这个文件,添加定义结构LDAP目录。

到DB2用户和DB2组添加到LDAP目录中,则需要用户为“rootdn”LDAP服务器绑定,以得到确切的特权。

执行以下语法,以填补LDAP目录中的信息与在LDIF文件'db2.ldif“中定义所有的对象

 ldapadd x D cn=Manager, dc=example,dc=com W f <path>/db2.ldif 

使用多个参数执行搜索结果

 ldapsearch x |more 

编写文件系统使用DB2

创建我们的LDAP用户db2inst2实例。此用户需要与主目录内的两个空文件的主目录。在创建一个新的实例,需要创建一个用户谁将会是实例的所有者。

创建实例用户后,应该有创建文件“.profile”,并在用户主目录“.login',这将是DB2进行修改。在目录中创建这个文件,执行以下命令:

 mkdir /home/db2inst2   mkdir /home/db2inst2/.login  mkdir /home/db2inst2/.profile  

已经注册了DB2的LDAP目录相关所有用户和组,现在可以使用名称为“db2inst2”的实例所有者ID“db2inst2”创建一个实例,并使用受防护用户ID“db2fenc1',这是需要用户运行定义函数(UDF)或存储过程。

 /opt/ibm/db2/V10.1/instance/db2icrt u db2fenc1 db2inst2   DBI1070I Program db2icrt completed successfully.  

现在检查的实例主目录。可以看到新的子目录所谓的“SQLLIB”和.profile文件和定制DB2使用.login文件。

配置认证公共插件在DB2 LDAP支持

所需的LDAP插件复制到相应目录DB2:

 cp            ///v10/IBMLDAPauthserver.so   /home/db2inst2/sqllib/security/plugin/server/.    cp            ///v10/IBMLDAPgroups.so  /home/db2inst2/sqllib/security/plugin/group/.

一旦插件被复制到指定目录下,登录到DB2实例所有者和更改数据库管理器配置使用这些插件。

 Su  db2inst2   db2inst2> db2 update dbm cfg using svrcon_pw_plugin  IBMLDAPauthserver  db2inst2> db2 update dbm cfg using group_plugin  IBMLDAPgroups  db2inst2> db2 update dbm cfg using authentication  SERVER_ENCRYPT  db2inst2> db2stop  db2inst2> db2start  

这一修改生效启动DB2实例之后。重新启动实例后,需要安装和配置名为“IBMLDAPSecurity.ini”,使DB2插件工作使用当前LDAP配置的主要DB2 LDAP配置文件。

IBMLDAPSecurity.ini文件包含

 ;-----------------------------------------------------------   ; SERVER RELATED VALUES   ;-----------------------------------------------------------   ; Name of your LDAP server(s).   ; This is a space separated list of LDAP server addresses,   ; with an optional port number for each one:   ; host1[:port] [host2:[port2] ... ]   ; The default port number is 389, or 636 if SSL is enabled.   LDAP_HOST = my.ldap.server   ;-----------------------------------------------------------   ; USER RELATED VALUES   ;-----------------------------------------------------------   rs   ; LDAP object class used for use USER_OBJECTCLASS = posixAccount   ; LDAP user attribute that represents the "userid"   ; This attribute is combined with the USER_OBJECTCLASS and   ; USER_BASEDN (if specified) to construct an LDAP search   ; filter when a user issues a DB2 CONNECT statement with an   ; unqualified userid. For example, using the default values  ; in this configuration file, (db2 connect to MYDB user bob   ; using bobpass) results in the following search filter:   OrgPerson)(uid=bob)   ; &(objectClass=inet USERID_ATTRIBUTE = uid   representing the DB2 authorization ID   ; LDAP user attribute, AUTHID_ATTRIBUTE = uid   ;-----------------------------------------------------------   ; GROUP RELATED VALUES   ;-----------------------------------------------------------   ps   ; LDAP object class used for grou GROUP_OBJECTCLASS = groupOfNames   at represents the name of the group   ; LDAP group attribute th GROUPNAME_ATTRIBUTE = cn   ; Determines the method used to find the group memberships   ; for a user. Possible values are:   ; SEARCH_BY_DN - Search for groups that list the user as   ; a member. Membership is indicated by the   ; group attribute defined as   ; GROUP_LOOKUP_ATTRIBUTE.  ; USER_ATTRIBUTE - A user's groups are listed as attributes   ; of the user object itself. Search for the   ; user attribute defined as   TRIBUTE to get the groups.   ; GROUP_LOOKUP_AT GROUP_LOOKUP_METHOD = SEARCH_BY_DN   ; GROUP_LOOKUP_ATTRIBUTE   ; Name of the attribute used to determine group membership,   ; as described above.   llGroups   ; GROUP_LOOKUP_ATTRIBUTE = ibm-a GROUP_LOOKUP_ATTRIBUTE = member 

现在,找到当前实例目录中的IBMLDAPSecurity.ini文件。上面的示例内容复制到相同的。

 Cp  //db2_ldap_pkg/IBMLDAPSecurity.ini   /home/db2inst2/sqllib/cfg/ 

现在,需要重新启动DB2实例,采用如下两种语法:

 db2inst2> db2stop   Db2inst2> db2start 

此时,如果尝试'db2start“命令,会得到安全错误消息。因为DB2的安全配置还没有正确配置LDAP环境。

定制两种配置

保持LDAP_HOST名称可修改处理,其配置在slapd.conf文件中。

现在编辑 IMBLDAPSecurity.ini 文件,并键入LDAP_HOST名称。同时在所述文件中的LDAP_HOST名称必须相同。

文件的内容如下所示:

       ;-----------------------------------------------------------         ; SERVER RELATED VALUES         ;-----------------------------------------------------------         LDAP_HOST = localhost         ;-----------------------------------------------------------         ; USER RELATED VALUES         ----------------------------         ;-------------------------------         USER_OBJECTCLASS = posixAccount         USER_BASEDN = dc=example,dc=com         USERID_ATTRIBUTE = uid         AUTHID_ATTRIBUTE = uid         ;-----------------------------------------------------------         ; GROUP RELATED VALUES         ;-----------------------------------------------------------         GROUP_OBJECTCLASS = groupOfNames     GROUP_BASEDN = dc=example,dc=com         GROUPNAME_ATTRIBUTE = cn         GROUP_LOOKUP_METHOD = SEARCH_BY_DN         GROUP_LOOKUP_ATTRIBUTE = member 

改变这些值后,LDAP立即生效,并与LDAP DB2环境完美地工作。

可以注销并重新登录到“db2inst2”的用户。

现在,实例正在使用LDAP目录。

  

从零到一,创造未来!跨零综合IT问题解决服务站,欢迎你的到来。Oracle数据库教程 db2教程 只为你绽放。

本文固定链接: http://kua0.com/2019/01/27/数据库教程-db2-ldap/

为您推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注