db2 ldap
ldap是轻量级目录访问协议。 ldap是一个全球性的目录服务,工业标准协议,该协议是基于客户端 - 服务器模型,运行在一个层中tcp/ip栈的上方。ldap提供了一个工具来连接,访问,修改和搜索互联网目录。
在ldap服务器包含该组织在一个目录树的形式信息。在客户端请求的服务器,以提供信息或在一个特定的信息执行一些操作。服务器对客户机提供所需的信息,如果它有一个,或者它是指客户到另一台服务器上所需的信息操作。然后,客户端获取从另一个服务器所需的信息。
目录树结构保持在所有参与的服务器相同。这是ldap目录服务的一个突出特点。因此,无论哪个的服务器是由客户端的简称,在客户端总是得到在无差错的方式所需的信息。在这里,我们使用ldap验证ibm db2作为替代操作系统认证。
有两种类型的ldap:
- 透明度
- 插件
让我们来看看如何配置透明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目录。
- Oracle教程
- Oracle Select语句
- Oracle Distinct语句
- Oracle Fetch子句
- Oracle Like子句
- Oracle Ascii()函数
- Oracle Chr()函数
- Memcached replace 命令
- Memcached append 命令
- Memcached prepend 命令
- Memcached stats slabs 命令
- DB2数据类型
- DB2约束
- DB2触发器
- 关于ORA-04091异常的出现原因分析及解决方案
- navicat导入oracle导出的dmp文件
- oracle导出数据到文本、从文本导入数据的详细步骤
- oracle丢失temp表空间的处理方法
- 关于oracle逻辑备份exp导出指定表名时需要加括号的问题解析
- Oracle常见分析函数实例详解