美文网首页
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