db2 ldap
ldap是輕量級目錄訪問協(xié)議。 ldap是一個全球性的目錄服務,工業(yè)標準協(xié)議,該協(xié)議是基于客戶端 - 服務器模型,運行在一個層中tcp/ip棧的上方。ldap提供了一個工具來連接,訪問,修改和搜索互聯(lián)網(wǎng)目錄。
在ldap服務器包含該組織在一個目錄樹的形式信息。在客戶端請求的服務器,以提供信息或在一個特定的信息執(zhí)行一些操作。服務器對客戶機提供所需的信息,如果它有一個,或者它是指客戶到另一臺服務器上所需的信息操作。然后,客戶端獲取從另一個服務器所需的信息。
目錄樹結構保持在所有參與的服務器相同。這是ldap目錄服務的一個突出特點。因此,無論哪個的服務器是由客戶端的簡稱,在客戶端總是得到在無差錯的方式所需的信息。在這里,我們使用ldap驗證ibm db2作為替代操作系統(tǒng)認證。
有兩種類型的ldap:
- 透明度
- 插件
讓我們來看看如何配置透明ldap。
配置ldap
要開始使用ldap配置,需要配置ldap服務器。
ldap服務器配置
創(chuàng)建一個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服務器執(zhí)行此文件。這是一個linux命令;不是db2命令。
ldapadd r- -d ‘cn=manager,dc=example,dc=com” –w –f /var/lib/slapd.conf
注冊db2用戶和db2組的ldap服務器后,登錄到已安裝的實例和數(shù)據(jù)庫的特定用戶。需要配置ldap客戶端,以確認客戶端在服務器的位置,無論是遠程或本地。
ldap客戶端配置
ldap客戶端的配置保存在文件'ldap.conf'??捎糜谂渲脜?shù)兩個文件,一個是常見的,另一種是指定的。第一個在“/etc/ldap.conf”,而后者位于“/etc/openldap/ldap.conf”。
下面的數(shù)據(jù)是常見的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
需要根據(jù)db2配置改變服務器和域信息的位置。如果使用相同的系統(tǒng)服務器,提到它作為'localhost'為'host'和'基本',可以配置中提到“slapd.conf”文件ldap服務器。
插入式驗證模式(pam)是用于身份驗證服務的api。這是具有加密的密碼和類型的posixaccount特殊ldap對象ldap身份驗證的通用接口。這種類型的所有l(wèi)dap對象表示便攜式操作系統(tǒng)界面(posix)帳戶的屬性。
網(wǎng)絡安全服務(nss)是一組庫,以支持安全功能的客戶端和服務器應用程序的跨平臺開發(fā)。這包括像ssl,tls,pkcs s/mime等安全標準庫。
需要指定基本dn這個接口和兩個附加屬性映射。 openldap客戶端配置文件中包含如下條目:
host localhost base dc=example,dc=com
直到這一點,剛才定義的主機ldap的服務和基礎dn。
openldap驗證環(huán)境
當配置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/發(fā)出以下命令。
tail –f /var/log/messages
測試連接到ldap服務器ldapsearch
ldapsearch命令,打開到ldap服務器的連接,結合它并執(zhí)行它可以通過使用特殊的參數(shù)'-x'指定搜索查詢使用-x參數(shù),而不是一個簡單的身份驗證機制連接到ldap服務器喜歡簡單的身份驗證和安全層更復雜的機制(sasl)
ldapsearch –x
ldap服務器應該具有下面給出的回應答復,包含所有l(wèi)dap數(shù)據(jù)交換格式(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數(shù)據(jù)庫使用ldap。讓我們來討論如何安裝和配置數(shù)據(jù)庫使用ldap環(huán)境,為db2用戶的認證過程。
配置db2和ldap互動插件
ibm提供了一個免費的包ldap插件db2。 db2包包括三個db2安全性插件為每個以下內容:
- 服務器端驗證
- 客戶端身份驗證
- 組查找
根據(jù)要求,可以使用任何三個插件或全部。這個插件不支持,其中一些用戶在ldap和其他定義的操作系統(tǒng)環(huán)境。如果決定使用ldap插件,需要定義與ldap服務器中的數(shù)據(jù)庫相關聯(lián)的所有用戶。同樣的原則也適用于組插件。
必須決定哪些插件強制規(guī)定系統(tǒng)。在方案中使用的客戶端身份驗證插件,用戶id和密碼驗證提供一個連接或語句出現(xiàn)在客戶端系統(tǒng)上。這樣的數(shù)據(jù)庫管理器配置參數(shù)srvcon_auth或認證需要被設置為值客戶端??蛻舳说恼J證是難以確保和通常不建議。服務器插件通常建議,因為它執(zhí)行的用戶id和密碼的服務器端驗證,如果客戶端執(zhí)行connect或附加聲明,這是安全的方式。服務器插件還提供了一種映射ldap用戶id db2授權id。
現(xiàn)在,可以開始安裝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
創(chuàng)建一個名為“db2.ldif”文件,并粘貼上面的例子進去。使用這個文件,添加定義結構ldap目錄。
到db2用戶和db2組添加到ldap目錄中,則需要用戶為“rootdn”ldap服務器綁定,以得到確切的特權。
執(zhí)行以下語法,以填補ldap目錄中的信息與在ldif文件'db2.ldif“中定義所有的對象
ldapadd –x –d “cn=manager, dc=example,dc=com” –w –f <path>/db2.ldif
使用多個參數(shù)執(zhí)行搜索結果
ldapsearch –x |more
編寫文件系統(tǒng)使用db2
創(chuàng)建我們的ldap用戶db2inst2實例。此用戶需要與主目錄內的兩個空文件的主目錄。在創(chuàng)建一個新的實例,需要創(chuàng)建一個用戶誰將會是實例的所有者。
創(chuàng)建實例用戶后,應該有創(chuàng)建文件“.profile”,并在用戶主目錄“.login',這將是db2進行修改。在目錄中創(chuàng)建這個文件,執(zhí)行以下命令:
mkdir /home/db2inst2 mkdir /home/db2inst2/.login mkdir /home/db2inst2/.profile
已經(jīng)注冊了db2的ldap目錄相關所有用戶和組,現(xiàn)在可以使用名稱為“db2inst2”的實例所有者id“db2inst2”創(chuàng)建一個實例,并使用受防護用戶id“db2fenc1',這是需要用戶運行定義函數(shù)(udf)或存儲過程。
/opt/ibm/db2/v10.1/instance/db2icrt –u db2fenc1 db2inst2 dbi1070i program db2icrt completed successfully.
現(xiàn)在檢查的實例主目錄??梢钥吹叫碌淖幽夸浰^的“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實例所有者和更改數(shù)據(jù)庫管理器配置使用這些插件。
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插件工作使用當前l(fā)dap配置的主要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
現(xiàn)在,找到當前實例目錄中的ibmldapsecurity.ini文件。上面的示例內容復制到相同的。
cp //db2_ldap_pkg/ibmldapsecurity.ini /home/db2inst2/sqllib/cfg/
現(xiàn)在,需要重新啟動db2實例,采用如下兩種語法:
db2inst2> db2stop db2inst2> db2start
此時,如果嘗試'db2start“命令,會得到安全錯誤消息。因為db2的安全配置還沒有正確配置ldap環(huán)境。
定制兩種配置
保持ldap_host名稱可修改處理,其配置在slapd.conf文件中。
現(xiàn)在編輯 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環(huán)境完美地工作。
可以注銷并重新登錄到“db2inst2”的用戶。
現(xiàn)在,實例正在使用ldap目錄。
- Oracle教程
- Oracle Select語句
- Oracle Distinct語句
- Oracle Fetch子句
- Oracle Like子句
- Oracle Ascii()函數(shù)
- Oracle Chr()函數(shù)
- Memcached replace 命令
- Memcached append 命令
- Memcached prepend 命令
- Memcached stats slabs 命令
- DB2數(shù)據(jù)類型
- DB2約束
- DB2觸發(fā)器
- 關于ORA-04091異常的出現(xiàn)原因分析及解決方案
- navicat導入oracle導出的dmp文件
- oracle導出數(shù)據(jù)到文本、從文本導入數(shù)據(jù)的詳細步驟
- oracle丟失temp表空間的處理方法
- 關于oracle邏輯備份exp導出指定表名時需要加括號的問題解析
- Oracle常見分析函數(shù)實例詳解