背景
現(xiàn)在線上的賬戶集中性管理系統(tǒng)有兩個信息存儲系統(tǒng)撵渡,一個是kerberos渠缕,一個是openldap仰楚,每次創(chuàng)建一個ldap賬戶岔霸,都會對應地生成一個kerberos的principal薛躬,且把該principal的keytab信息加密存儲到ldap賬戶中,現(xiàn)在需要對這兩個服務的數(shù)據進行遷移呆细,想要驗證數(shù)據遷移后會不會對keytab和principal的有效性有影響型宝。
openldap數(shù)據遷移
遷移方數(shù)據備份
ldapsearch -x -D "cn=admin,dc=xitong,dc=com" -w123456 -b "dc=xitong,dc=com" -LLL -H ldap://localhost > ldap_user_bak.ldif
數(shù)據接收方導入數(shù)據
注意:
1、如果數(shù)據接受方ldap庫中事先存在“dc=xitong,dc=com”節(jié)點絮爷,則需要先刪除诡曙,再導入,否則數(shù)據無法導入略水。
2价卤、為防止造成遷移方與接受方數(shù)據不一致,建議在遷移數(shù)據過程中停止openldap的上層服務渊涝。
3慎璧、是否考慮一同遷移配置床嫌?
拷貝副本文件到數(shù)據接受方服務器。
查看命令:
ldapsearch -x -b "dc=xitong,dc=com" -LLL
刪除命令:
ldapdelete -x -D "cn=admin,dc=xitong,dc=com" -w123456 -r "dc=xitong,dc=com"
把“dc=xitong,dc=com”節(jié)點及其下的數(shù)據全部刪除胸私。
確認數(shù)據是否已刪除:
ldapsearch -x -b "dc=xitong,dc=com" -LLL
數(shù)據確認刪除后厌处,導入openldap副本數(shù)據到數(shù)據接受方:
ldapadd -x -D "cn=admin,dc=xitong,dc=com" -w123456 -f ldap_user_bak.ldif -H ldap://localhost
查看數(shù)據是否已經導入:
ldapsearch -x -b "dc=xitong,dc=com" -LLL
通過對openldap的數(shù)據遷移,賬戶信息存在接受方的openldap底層數(shù)據庫中岁疼,且keytab信息也隨之遷移阔涉。
kerberos principal數(shù)據遷移
遷移方kerberos數(shù)據備份
kdb5_util dump -verbose kerberos_bak_file
數(shù)據接受方導入數(shù)據
注意:
1、遷移方與接受方的kdc域名需要保持一致捷绒。
2瑰排、如果數(shù)據接收方事先不存在數(shù)據庫,則需要先創(chuàng)建數(shù)據庫暖侨,kdc域名保持與遷移方一致椭住。
kdb5_util create -r HADOOP.COM -s
3、是否考慮一同遷移配置字逗?
拷貝副本文件到數(shù)據接受方服務器京郑。
導入數(shù)據到數(shù)據庫:
kdb5_util load -verbose kerberos_bak_file
查看數(shù)據是否已經導入:
執(zhí)行kadmin.local;
進入交互界面后葫掉,執(zhí)行l(wèi)istprincs查看數(shù)據是否已經導入些举。
驗證遷移后的principal及keytab是否有效:
1、通過openldap底層查詢獲取到keytab的base64編碼文件俭厚,然后再解碼得到keytab信息户魏,具體如下:
1)獲取keytab編碼信息:
ldapsearch -x -D "cn=admin,dc=xitong,dc=com" -w123456 -b "dc=xitong,dc=com" cn=xxx -LLL -H ldap://localhost
得到用戶信息:
dn: cn=ee,cn=default,dc=xitong,dc=com
postalCode: BQIAAAAzAAEACkhBRE9PUC5DT00AAmVlAAAAAV/XEi8CABEAEBE854e/YwjpWpokU2
zicx0AAAACAAAAOwABAApIQURPT1AuQ09NAAJlZQAAAAFf1xIvAgAQABhuvPcEPsHfQ3+ugOqUQzd
A0L9JDs5t7FsAAAACAAAAMwABAApIQURPT1AuQ09NAAJlZQAAAAFf1xIvAgAXABApvyoOZZ/NHw92
9P3sBIpbAAAAAgAAACsAAQAKSEFET09QLkNPTQACZWUAAAABX9cSLwIACAAIxEZiEHzqx20AAAACA
AAAKwABAApIQURPT1AuQ09NAAJlZQAAAAFf1xIvAgADAAg4uQvfDQhG7wAAAAI=
objectClass: top
objectClass: posixAccount
objectClass: inetOrgPerson
gidNumber: 100
uid: ee
uidNumber: 1017
cn: ee
userPassword:: cXExMjM0NTY=
其中,postalCode屬性值即為keytab編碼結果套腹。
注:xxx表示用戶名绪抛。
為什么要對keytab信息進行base64編碼资铡?
因為直接從kerberos導出的keytab文件內容是二進制的电禀,里面的內容是亂碼來的,所以為了存儲有效的信息笤休,先通過cat xxx.keytab | base64 -w 0對keytab文件進行編碼尖飞,然后把編碼結果存儲到openldap中,需要使用時再下載下來進行解碼即可使用店雅。
2)拷貝keytab編碼信息到一個臨時文件中xxx.tmp.keytab政基;
3)對keytab進行解碼,得到真正的keytab信息:
cat xxx.tmp.keytab | base64 -d --ignore-garbage > xxx.keytab
xxx.keytab即為最終的keytab文件闹啦。
4)通過klist -k xxx.keytab查看keytab文件信息是否正常沮明,如我這里查看用戶ee的keytab文件myee.keytab
5)通過kinit驗證遷移后的keytab的有效性:
kinit -kt xxx.keytab xxx