【问题标题】:Stderr: kinit: Client - not found in Kerberos database while getting initial credentialsStderr:kinit:客户端 - 在获取初始凭据时未在 Kerberos 数据库中找到
【发布时间】:2019-11-04 21:04:39
【问题描述】:

我已经设置了一个 python docker 映像,并包含了一个 krb5.conf 文件、keytab 文件和 python 库。我正在运行一个对 kerborized hadoop 集群进行身份验证的 python 脚本。我遇到了错误:Stderr: kinit: Client 'root@MY.DOMAIN.LOCAL' not found in Kerberos database while getting initial credentials. 当我设置svc_account 时,我不知道为什么它在客户端root 上失败了。我是否需要在这个 krb5.conf 文件中添加一些东西或类似的东西?

以下是我的python代码:

import ssl
from impala.dbapi import connect
import os

os.system("kinit")
conn = connect(host='impala/server2primary.my.domain.local@MY.DOMAIN.LOCAL', port=21050, use_ssl=True, user='svc_account@MY.DOMAIN.LOCAL',  auth_mechanism = 'GSSAPI')
cur = conn.cursor()
cur.execute('SHOW DATABASES;')
result=cur.fetchall()
for data in result:
    print (data)

我已经设置了krb5.keytab 文件:

addent -password -p svc_account@MY.DOMAIN.LOCAL -k 1 -e rc4-hmac
addent -password -p svc_account@MY.DOMAIN.LOCAL -k 1 -e aes256-cts
addent -password -p svc_account@MY.DOMAIN.LOCAL -k 1 -e aes128-cts
wkt /etc/krb5.keytab 

以下是我的krb5.conf文件:

[libdefaults]
default_realm = MY.DOMAIN.LOCAL
dns_lookup_kdc = false
dns_lookup_realm = false
ticket_lifetime = 86400
renew_lifetime = 604800
forwardable = true
default_tgs_enctypes = aes256-cts aes128-cts rc4-hmac
default_tkt_enctypes = aes256-cts aes128-cts rc4-hmac
permitted_enctypes = aes256-cts aes128-cts rc4-hmac
udp_preference_limit = 1
kdc_timeout = 3000

[realms]
MY.DOMAIN.LOCAL = {
kdc = server1primary.my.domain.local
admin_server = server1primary.my.domain.local
default_domain = MY.DOMAIN.LOCAL
}

[domain_realm]
MY.DOMAIN.LOCAL = MY.DOMAIN.LOCAL

【问题讨论】:

  • 您是否阅读了 kinitman 页面?!?!?
  • 是的,所以你认为我应该试试 os.system(“kinit -t krb5.keytab”) 我关闭了吗? @Samson Scharfrichter
  • kinit -kt /blah/blah/my-app.keytab my-app-account@MY.DOMAIN.LOCAL
  • [typoedited] 并且不要将您的应用程序特定的凭据转储到/etc/krb5.keytab,它被 SSSD 等安全服务用来“绑定”到外部身份验证/授权系统...并且应该只有 root 可以访问
  • 我不熟悉 python 语法,但一般来说,当给定的用户主体(服务帐户 ID)和/或密码不正确时会出现此问题。潜在错误是“标识符与预期值不匹配 (906)” - 表示 KDC 无法在 AD 中找到给定的主体。按照 Samson 的建议,使用 keytab 尝试 kinit。如果 keytab 中的任何信息都是正确的,那么您应该会收到票。否则尝试生成新的 keytab。

标签: python docker kerberos impala


【解决方案1】:

以下解决了我的问题:

os.system("kinit -kt /etc/krb5.keytab svc_account@MY.DOMAIN.LOCAL")

【讨论】:

    猜你喜欢
    • 2014-12-03
    • 1970-01-01
    • 2017-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-20
    相关资源
    最近更新 更多