美文网首页
kerberos数据迁移后keytab的有效性验证

kerberos数据迁移后keytab的有效性验证

作者: _火山_ | 来源:发表于2020-12-14 17:12 被阅读0次

背景

现在线上的账户集中性管理系统有两个信息存储系统,一个是kerberos,一个是openldap,每次创建一个ldap账户,都会对应地生成一个kerberos的principal,且把该principal的keytab信息加密存储到ldap账户中,现在需要对这两个服务的数据进行迁移,想要验证数据迁移后会不会对keytab和principal的有效性有影响。

openldap数据迁移

迁移方数据备份

ldapsearch -x -D "cn=admin,dc=xitong,dc=com" -w123456 -b "dc=xitong,dc=com" -LLL -H ldap://localhost > ldap_user_bak.ldif

数据接收方导入数据

注意:

1、如果数据接受方ldap库中事先存在“dc=xitong,dc=com”节点,则需要先删除,再导入,否则数据无法导入。

2、为防止造成迁移方与接受方数据不一致,建议在迁移数据过程中停止openldap的上层服务。

3、是否考虑一同迁移配置?

拷贝副本文件到数据接受方服务器。

查看命令:

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”节点及其下的数据全部删除。

确认数据是否已删除:

ldapsearch -x -b "dc=xitong,dc=com" -LLL

数据确认删除后,导入openldap副本数据到数据接受方:

ldapadd -x -D "cn=admin,dc=xitong,dc=com" -w123456 -f ldap_user_bak.ldif -H ldap://localhost

查看数据是否已经导入:

ldapsearch -x -b "dc=xitong,dc=com" -LLL

通过对openldap的数据迁移,账户信息存在接受方的openldap底层数据库中,且keytab信息也随之迁移。

kerberos principal数据迁移

迁移方kerberos数据备份

kdb5_util dump -verbose kerberos_bak_file

数据接受方导入数据

注意:

1、迁移方与接受方的kdc域名需要保持一致。

2、如果数据接收方事先不存在数据库,则需要先创建数据库,kdc域名保持与迁移方一致。

kdb5_util create -r HADOOP.COM -s

3、是否考虑一同迁移配置?

拷贝副本文件到数据接受方服务器。

导入数据到数据库:

kdb5_util load -verbose kerberos_bak_file

查看数据是否已经导入:

执行kadmin.local;

进入交互界面后,执行listprincs查看数据是否已经导入。

验证迁移后的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

相关文章

网友评论

      本文标题:kerberos数据迁移后keytab的有效性验证

      本文链接:https://www.haomeiwen.com/subject/dyavgktx.html