Kerberos集成配置
外观
Kerberos集成配置[编辑 | 编辑源代码]
介绍[编辑 | 编辑源代码]
Kerberos 是一种网络认证协议,用于在非安全网络中安全地验证用户和服务。在Hadoop生态系统中,Kerberos被广泛用于保护集群资源,防止未经授权的访问。通过Kerberos集成,Hadoop能够实现强身份验证,确保只有经过认证的用户和服务才能访问集群资源。
Kerberos的核心概念包括:
- 主体(Principal):代表用户或服务的唯一标识,格式为 `primary/instance@REALM`。
- 密钥分发中心(KDC):包含认证服务器(AS)和票据授予服务器(TGS),负责颁发和管理票据。
- 票据(Ticket):用于证明用户或服务的身份。
Kerberos与Hadoop集成配置步骤[编辑 | 编辑源代码]
1. 安装和配置KDC[编辑 | 编辑源代码]
在Kerberos服务器上安装KDC(如MIT Kerberos)并配置`/etc/krb5.conf`和`/var/kerberos/krb5kdc/kdc.conf`。
# 安装MIT Kerberos
sudo apt-get install krb5-kdc krb5-admin-server
2. 创建Kerberos数据库并初始化[编辑 | 编辑源代码]
使用`kdb5_util`创建Kerberos数据库:
sudo kdb5_util create -s
3. 添加Hadoop主体[编辑 | 编辑源代码]
为Hadoop服务(如NameNode、ResourceManager)和用户创建主体:
# 添加HDFS主体
kadmin.local -q "addprinc -randkey hdfs/hadoop-cluster@EXAMPLE.COM"
kadmin.local -q "addprinc -randkey HTTP/hadoop-cluster@EXAMPLE.COM"
# 生成keytab文件
kadmin.local -q "xst -k /etc/security/keytabs/hdfs.keytab hdfs/hadoop-cluster HTTP/hadoop-cluster"
4. 配置Hadoop以使用Kerberos[编辑 | 编辑源代码]
修改`core-site.xml`和`hdfs-site.xml`:
<!-- core-site.xml -->
<property>
<name>hadoop.security.authentication</name>
<value>kerberos</value>
</property>
<property>
<name>hadoop.security.authorization</name>
<value>true</value>
</property>
<!-- hdfs-site.xml -->
<property>
<name>dfs.namenode.kerberos.principal</name>
<value>hdfs/hadoop-cluster@EXAMPLE.COM</value>
</property>
<property>
<name>dfs.namenode.keytab.file</name>
<value>/etc/security/keytabs/hdfs.keytab</value>
</property>
5. 启动Hadoop服务[编辑 | 编辑源代码]
在配置完成后,重新启动Hadoop服务:
# 启动HDFS
hdfs --daemon start namenode
hdfs --daemon start datanode
实际案例[编辑 | 编辑源代码]
假设一个金融公司使用Hadoop存储敏感数据,他们需要确保只有授权用户能够访问数据。通过Kerberos集成: 1. 每个用户必须通过Kerberos认证才能提交作业。 2. 所有Hadoop服务(如HDFS、YARN)必须使用有效的Kerberos票据通信。 3. 未经认证的请求会被拒绝,防止数据泄露。
常见问题与解决[编辑 | 编辑源代码]
- 问题:票据过期导致作业失败
解决方法:配置`renewal_lifetime`或使用`kinit -R`续订票据。
- 问题:Keytab文件权限不正确
解决方法:确保keytab文件仅对服务用户可读(如`chmod 400 hdfs.keytab`)。
总结[编辑 | 编辑源代码]
Kerberos集成是Hadoop安全机制的核心部分,通过强身份验证保护集群资源。配置过程包括设置KDC、创建主体、生成keytab文件,并更新Hadoop配置。尽管配置复杂,但Kerberos提供了企业级的安全性,适合需要严格访问控制的场景。
进一步阅读[编辑 | 编辑源代码]
- MIT Kerberos官方文档
- Hadoop安全指南