Isilon:使用 Isilon 的 Ambari 自动化 Kerberos 配置
Summary: 本文将指导您使用 Ambari 管理的 Hadoop 群集配置 Kerberos 安全性。
Symptoms
Cause
Resolution
本文介绍如何使用 Ambari 管理的 Hadoop 群集配置 Kerberos 安全性。
Kerberos 是 Hadoop 强身份验证和加密的核心,但配置和管理可能很困难。Ambari 2.0 引入了向导驱动的自动化 Kerberos 配置,使该过程更快、更不容易出错。从 OneFS 8.0.0.1 开始,Dell EMC Isilon 客户可以利用这一出色的功能。
前提条件
- OneFS 8.0.0.1 或更高版本。
- Ambari 2.0 或更高版本。
- 运行 MIT KDC(不支持 Heimdal)。按照此处的步骤设置 Kerberos 基础架构。
- 在所有主机之间转发和反向 DNS。
- 所有服务都在 Ambari 控制面板上运行(绿色)。
启用 Kerberos
预配置
启动向导之前,您必须设置两个配置并重新启动所有服务。- 在 HDFS 中 —> 自定义核心站点 将“hadoop.security.token.service.use_ip”设置为“false”
- 在 MapReduce2 中 —> 高级 mapred-site 将“'hadoop classpath':”添加到“mapreduce.application.classpath”的开头。记下冒号和背签(但不要复制引号)。
入门
导航至 Admin -> Kerberos ,然后按“Enable Kerberos”按钮。本部分中的标题请参阅 Kerberos 向导页面的标题。
选择“Existing MIT KDC”,并确保满足前提条件,然后单击“Next”。请注意,Isilon 不使用 Java,也不需要 JCE。
配置 Kerberos/安装和测试 Kerberos 客户端
填写所有 KDC 和管理员服务器信息。在步骤 3(安装和测试 Kerberos 客户端)上,Ambari 服务器将执行冒烟测试,以确保正确配置 Kerberos。
配置标识/确认配置
a) Ambari 用户主体 (UPN)
Ambari 以 $-$ @$ 的形式创建用户主体,然后使用 core-site.xml 中的hadoop.security.auth_to_local 将主体映射到文件系统上仅 $ 。Isilon 不遵守映射规则,因此您必须从“Ambari 主体”部分中的所有主体中删除 -$ 。Isilon 将剥离 @$ ,因此无需进行别名。在运行 HDFS、YARN、MapReduce2、Tez、Hive、HBase、Pig、Sqoop、Oozie、Zookeeper、Falcon、Storm、Flume、Accumulo、Ambari Metrics、Kafka、Knox、Mahout、滑块和 Spark 的 Ambari 2.2.1 群集中,在“General”选项卡中进行以下修改:
- Smokeuser 主体名称:${cluster-env/smokeuser}-$ @$ => ${cluster-env/smokeuser}@$
- spark.history.kerberos.principal:${spark-env/spark_user}-$ @$ => ${spark-env/spark_user}-@$
- 风暴主体名称:${storm-env/storm_user}-$ @$ => ${storm-env/storm_user}-@$
- HBase 用户主体:${hbase-env/hbase_user}-$ @$ => ${hbase-env/hbase_user}@$
- HDFS 用户主体:${hadoop-env/hdfs_user}-$ @$ => ${hadoop-env/hdfs_user}@$
- accumulo_principal_name:${accumulo-env/accumulo_user}-$ @$ => ${accumulo-env/accumulo_user}@$
- trace.user:tracer-$ @$ => tracer@$
b) 服务主体 (SPN)
Ambari 创建服务主体,其中一些与 UNIX 用户名不同。同样,由于 Isilon 不遵守映射规则,因此您必须修改主体名称以匹配其 UNIX 用户名。在 Ambari 2.2.1 群集中,在“Advanced”选项卡中进行以下修改:
- HDFS -> dfs.namenode.kerberos.principal:nn/_HOST@$ => hdfs/_HOST@$
- YARN —> yarn.resourcemanager.principal:rm/_HOST@$ => yarn/_HOST@$
- YARN —> yarn.nodemanager.principal:nm/_HOST@$ => yarn/_HOST@$
- MapReduce2 —> mapreduce.jobhistory.principal:jhs/_HOST@$ => 映射/_HOST@$
- Falcon -> *.dfs.namenode.kerberos.principal:nn/_HOST@$ => hdfs/_HOST@$

配置相应的主体后,按“下一步”。在“Confirm Configuration”(确认配置)屏幕中,按“Next”(下一步)。
停止服务/Kerberize 群集
停止和 Kerberizing 服务应成功。

请勿继续:Isilon 不允许 Ambari 为 Isilon 主体创建密钥表。相反,您必须使用以下步骤在 Isilon 上手动配置 Kerberos。
a) 创建 KDC 作为 Isilon 身份验证提供程序
提醒:如果此 Isilon 分区已配置为使用您的 MIT KDC,则可以跳过这些步骤。
isi auth krb5 create --realm=$REALM --admin-server=$admin_server --kdc=$kdc_server --user=$admin_principal --password=$admin_password
isi zone zones modify --zone=$isilon_zone --add-auth-provider=krb5:$REALM
b) 为 HDFS 和 HTTP(用于 WebHDFS)创建服务主体。
isi auth krb5 spn create --provider-name=$REALM --spn=hdfs/$isilon_smartconnect@$REALM --user=$admin_principal --password=$admin_password
isi auth krb5 spn create --provider-name=$REALM --spn=HTTP/$isilon_smartconnect@$REALM --user=$admin_principal --password=$admin_password
c) 创建任何必要的代理用户
在不安全的群集中,任何用户都可以模拟任何其他用户。在安全群集中,需要明确指定代理用户。
如果您有 Hive 或 Oozie,请添加相应的代理用户。
isi hdfs proxyusers create oozie --zone=$isilon_zone --add-user=ambari-qa
isi hdfs proxyusers create hive --zone=$isilon_zone --add-user=ambari-qa
d) 禁用简单身份验证
仅允许 Kerberos 或委派令牌身份验证。
isi hdfs settings modify --zone=$isilon_zone --authentication-mode=kerberos_only
现在还配置了 Isilon,请在 Ambari 中按“下一步”以继续执行向导的最后一步。
启动和测试服务

如果服务未启动,以下是调试 Kerberos 问题的一些技巧:
- 由于 YARN 中存在错误,您需要在 YARN ->Custom yarn-site 中将“yarn.resourcemanager.principal”设置为 yarn/$rm_hostname@$REALM。启用 Kerberos 时,“_HOST”语法不起作用。
- 要调试 Java GSSAPI/Kerberos 错误,请将“-Dsun.security.krb5.debug=true”添加到HADOOP_OPTS。
- 对于 HTTP 401 错误,请将 curl with -iv 用于额外的调试信息。
- 确保在所有主机之间设置正向和反向 DNS。
在 HDFS 中 —> 自定义核心站点 将“hadoop.rpc.protection”设置为“完整性”或“隐私”。除了身份验证之外,完整性还保证消息未被篡改,并且隐私对所有消息进行加密。
运行作业!
在任何客户端主机上,尝试 MapReduce 作业!
kinit <some-user> yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar pi 1 1000
Job Finished in 37.635 seconds
Estimated value of Pi is 3.14800000000000000000
Congratulations--you have secured your cluster with Kerberos!
(可选)禁用 Kerberos
清理 Isilon
您应该先清理 Isilon。这实质上是启用 Kerberos 的反向。
a) 禁用 Kerberos 身份验证
isi hdfs settings modify --authentication-mode=simple_only --zone=$isilon_zone
b) 删除任何代理用户
isi hdfs proxyusers delete oozie --zone=$isilon_zone
isi hdfs proxyusers delete hive --zone=$isilon_zone
c) 删除主体
isi auth krb5 spn delete --provider-name=$REALM --spn=hdfs/$isilon_smartconnect@$REALM --all
isi auth krb5 spn delete --provider-name=$REALM --spn=HTTP/$isilon_smartconnect@$REALM --all
请注意,上述命令仅从 Isilon 中删除这些主体,但不要从 KDC 中删除它们。使用以下命令从 KDC 中删除 Isilon 主体:
kadmin -p $admin_principal
kadmin: delete_principal hdfs/$isilon_smartconnect@$REALM
kadmin: delete_principal HTTP/$isilon_smartconnect@$REALM
d) 删除 KDC 作为 Isilon 身份验证提供程序
isi zone zones modify --zone=$isilon_zone --remove-auth-provider=krb5:$REALM
isi auth krb5 delete --provider-name=$REALM
使用 Ambari 清理客户端
在 Admin -> Kerberos 中按“Disable Kerberos”。所有服务都应呈绿色亮起。