gpt4 book ai didi

java - Hadoop Kerberos 安全性

转载 作者:行者123 更新时间:2023-12-02 22:01:21 24 4
gpt4 key购买 nike

我已经设置了单节点集群,并且 kdc 服务器以及客户端都在同一台机器上。我尝试了所有可能的选项,但仍然存在相同的错误。
从研究中,我按照答案的建议进行了以下更改。
1) 在 $JAVA_HOME/jre/lib/security 文件夹中安装 JCE jar。
2) 我编辑了 krb5.conf 文件以仅使用 aes256-cts 加密。

/etc/krb5.conf 如下所示,

[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log

[libdefaults]
dns_lookup_realm = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
default_realm = EXAMPLE.COM
default_ccache_name = KEYRING:persistent:%{uid}
default_tkt_enctypes = aes256-cts
default_tgs_enctypes = aes256-cts
permitted_enctypes = aes256-cts
[realms]
EXAMPLE.COM = {
kdc = localhost
admin_server = localhost
}

[domain_realm]
localhost = EXAMPLE.COM

/var/kerberos/krb5kdc/kdc.conf 如下所示
[kdcdefaults]  
kdc_ports = 88
kdc_tcp_ports = 88

[realms]
EXAMPLE.COM = {
#master_key_type = aes256-cts
acl_file = /var/kerberos/krb5kdc/kadm5.acl
dict_file = /usr/share/dict/words
admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
max_life = 24h 0m 0s
max_renewable_life = 7d 0h 0m 0s
}

namenode 和 datanode 使用 keytab 文件中提供的凭据启动。在 namenode 和 datanode 启动后,我使用 addprinc 命令创建了一个已经是 hadoop 组中的 unix 用户的主体,即“hdfs”。然后我使用了 kinit 命令(kinit hadoop),这是成功的。 klist -e 命令结果显示 enc 类型为 aes-256 符合预期。但是当我尝试使用 hadoop fs -ls/命令时,我得到以下错误。

Java 配置名称:空
native 配置名称:/etc/krb5.conf
从 native 配置加载
KinitOptions 缓存名称为/tmp/krb5cc_1001
15/06/26 13:20:18 WARN ipc.Client:连接到服务器时遇到异常:javax.security.sasl.SaslException:GSS 启动失败 [由 GSSException 引起:未提供有效凭据(机制级别:找不到任何 Kerberos tgt)]
ls:本地异常失败:java.io.IOException:javax.security.sasl.SaslException:GSS启动失败[由GSSException引起:未提供有效凭据(机制级别:找不到任何Kerberos tgt)];主机详细信息:本地主机为:“/”;目标主机是:“”:9000;

请帮助。

最佳答案

错误的原因已经在消息中:您的配置列出了 default_ccache_name = KEYRING:persistent:%{uid} ,它将凭据存储在 linux 上的安全内核缓冲区中。 Java 无法读取此缓冲区,因此您将收到错误消息。

您需要将其设置为:

default_ccache_name = /tmp/krb5cc_%{uid}



或用 KRB5CCNAME 覆盖它

关于java - Hadoop Kerberos 安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30943614/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com