位置:首頁 > 數據庫 > DB2教學 > DB2 LDAP

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目錄。