Skip to main content
  • Place orders quickly and easily
  • View orders and track your shipping status
  • Create and access a list of your products

Isilon:使用 Isilon 的 Ambari 自动化 Kerberos 配置

Summary: 本文将指导您使用 Ambari 管理的 Hadoop 群集配置 Kerberos 安全性。

This article applies to   This article does not apply to 

Symptoms

不适用

Cause

不适用

Resolution

提醒:本主题是 将 Hadoop 与 OneFS 配合使用 - Isilon 信息中心 的一部分。

本文介绍如何使用 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 向导页面的标题。

SLN319432_en_US__1i_isilon-1-enable

选择“Existing MIT KDC”,并确保满足前提条件,然后单击“Next”。请注意,Isilon 不使用 Java,也不需要 JCE。

配置 Kerberos/安装和测试 Kerberos 客户端

填写所有 KDC 和管理员服务器信息。在步骤 3(安装和测试 Kerberos 客户端)上,Ambari 服务器将执行冒烟测试,以确保正确配置 Kerberos。


SLN319432_en_US__2i_isilon-2-安装


配置标识/确认配置

 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.usertracer-$ @$ => tracer@$

SLN319432_en_US__3i_isilon-3-标识

b) 服务主体 (SPN)

Ambari 创建服务主体,其中一些与 UNIX 用户名不同。同样,由于 Isilon 不遵守映射规则,因此您必须修改主体名称以匹配其 UNIX 用户名。在 Ambari 2.2.1 群集中,在“Advanced”选项卡中进行以下修改:
  • HDFS -> dfs.namenode.kerberos.principalnn/_HOST@$ => hdfs/_HOST@$
  • YARN —> yarn.resourcemanager.principalrm/_HOST@$ => yarn/_HOST@$
  • YARN —> yarn.nodemanager.principalnm/_HOST@$ => yarn/_HOST@$
  • MapReduce2 —> mapreduce.jobhistory.principaljhs/_HOST@$ => 映射/_HOST@$
  • Falcon -> *.dfs.namenode.kerberos.principalnn/_HOST@$ => hdfs/_HOST@$
 

SLN319432_en_US__4i_isilon-4-identitiesconfig


配置相应的主体后,按“下一步”。在“Confirm Configuration”(确认配置)屏幕中,按“Next”(下一步)。

停止服务/Kerberize 群集

停止和 Kerberizing 服务应成功。
 

SLN319432_en_US__5i_isilon-5 群集


请勿继续: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 中按“下一步”以继续执行向导的最后一步。

启动和测试服务
 

SLN319432_en_US__6i_isilon-6-start 服务

 

如果服务未启动,以下是调试 Kerberos 问题的一些技巧:
  1. 由于 YARN 中存在错误,您需要在 YARN ->Custom yarn-site 中将“yarn.resourcemanager.principal”设置为 yarn/$rm_hostname@$REALM。启用 Kerberos 时,“_HOST”语法不起作用。
  2. 要调试 Java GSSAPI/Kerberos 错误,请将“-Dsun.security.krb5.debug=true”添加到HADOOP_OPTS
  3. 对于 HTTP 401 错误,请将 curl with -iv 用于额外的调试信息。
  4. 确保在所有主机之间设置正向和反向 DNS。
(可选)强大的 RPC 安全性

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”。所有服务都应呈绿色亮起。

Affected Products

Isilon, PowerScale OneFS, Isilon with HDFS