返回介绍

DB2 LDAP - DB2 教程

发布于 2025-02-22 13:46:35 字数 13466 浏览 0 评论 0 收藏 0

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: db<sid style="box-sizing: border-box;">adm 
# 
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 <sid style="box-sizing: border-box;"># 
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: db<sid style="box-sizing: border-box;">ctl 
# 
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: <sid style="box-sizing: border-box;">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</sid> </sid></sid></sid>

保存上面的文件为“/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            /<db2_ldap_pakg style="box-sizing: border-box;">/<os style="box-sizing: border-box;">/v10/IBMLDAPauthserver.so  
/home/db2inst2/sqllib/security<bit style="box-sizing: border-box;">/plugin/server/. 

cp            /<db2_ldap_pakg style="box-sizing: border-box;">/<os style="box-sizing: border-box;">/v10/IBMLDAPgroups.so 
/home/db2inst2/sqllib/security<bit style="box-sizing: border-box;">/plugin/group/.</bit></os></db2_ldap_pakg></bit></os></db2_ldap_pakg>

一旦插件被复制到指定目录下,登录到 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 
/<ibm_db_installation_directory style="box-sizing: border-box;">/db2_ldap_pkg/IBMLDAPSecurity.ini  
/home/db2inst2/sqllib/cfg/</ibm_db_installation_directory>

现在,需要重新启动 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 目录。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文