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: db
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
#
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
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:
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
使用多個參數執行搜索結果
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目錄。