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