Kerberos之使用Ambari启用Kerberos身份验证(三)

使用Ambari启用Kerberos身份验证

本节介绍如何在Ambari管理的集群中为Hadoop用户和主机配置Kerberos进行强认证。

检查表:安装和配置KDC

Ambari能够在集群中配置Kerberos,使其与现有的MIT KDC或现有的Active Directory安装一起工作。本节描述了准备此集成所需的步骤。
您可以选择让Ambari连接到KDC,并自动创建必要的服务和Ambari主体,生成和分发键选项卡(“自动Kerberos设置”)。Ambari还提供了手动配置Kerberos的高级选项。如果选择此选项,则必须创建主体、生成和分发键选项卡。Ambari不会自动完成这个操作(“手动Kerberos设置”)。
KDC (Key Distribution Center)版本支持

•微软活动目录2008及以上
•MIT Kerberos v5
•FreeIPA 4.x和上面

有四种安装/配置KDC的方法:
•使用现有的MIT KDC
•安装一个新的MIT KDC(参见“可选:安装一个新的MIT KDC”)
•使用现有的IPA
•使用现有广告
•使用Kerberos手动设置

选项 检查表
Using an existing MIT KDC Ambari服务器和集群主机都可以通过网络访问KDC和KDC管理主机。手头有KDC管理凭证。
Install a new MIT KDC 参见“可选:安装一个新的MIT KDC”
Using an existing IPA 参见“可选:使用现有的IPA”
Using an existing AD Ambari服务器和集群主机可以通过网络访问域控制器,并能够解析域控制器的DNS名称。•已配置LDAP (Active Directory secure LDAP)连接。•服务主体的Active Directory用户容器已经创建并准备就绪。例如,“OU=Hadoop,OU=People,dc=apache,dc=org”•在前面提到的用户容器上,• Active Directory管理凭据具有“创建、删除和管理用户帐户”的委托控制。
Using manual Kerberos setup 集群主机可以通过网络访问KDC。•每个集群主机上都安装了Kerberos客户端实用程序(如kinit)。•已经在Ambari服务器主机和集群中的所有主机上设置了Java加密扩展(JCE)。•在完成向导之前,Service和Ambari主体将在KDC中手动创建。•在完成向导之前,服务和Ambari主体的按键将手动创建并分发到集群主机。

可选:安装一个新的MIT KDC

下面对KDC安装过程进行了非常高级的描述。

关于这个任务

要获得更多信息,请参阅特定的操作系统文档,例如RHEL文档、CentOS文档或SLES文档(下面的链接)。

过程

  1. 安装KDC服务器:
    a)安装新版本的KDC服务器:
OS Flavor Enter
RHEL/CentOS/Oracle Linux yum install krb5-server krb5-libs krb5-workstation
SLES zypper install krb5 krb5-server krb5-client
Ubuntu/Debian apt-get install krb5-kdc krb5-admin-server

b)使用文本编辑器打开默认的KDC服务器配置文件:vi /etc/krb5.conf。
c)通过使用kdc服务器主机的完全限定域名替换kdc和admin_server属性的默认设置“kerberos.example.com”,更改该文件的[realms]部分。在下面的示例中,“kerberos.example.com”已被替换为“my.kdc.server”。

realms]
 EXAMPLE.COM = {
    
    
 kdc = my.kdc.server
 admin_server = my.kdc.server
}
  1. 使用实用程序kdb5_util创建Kerberos数据库:
OS Flavor Enter
RHEL/CentOS/Oracle Linux kdb5_util create -s
SLES kdb5_util create -s
Ubuntu/Debian krb5_newrealm
  1. 启动KDC服务器和KDC管理服务器:
OS Flavor Enter
RHEL/CentOS/Oracle Linux 6 /etc/rc.d/init.d/krb5kdc start /etc/rc.d/init.d/kadmin start
RHEL/CentOS/Oracle Linux 7 systemctl start krb5kdc systemctl start kadmin
SLES rckrb5kdc start rckadmind start
Ubuntu/Debian service krb5-kdc restart service krb5-admin-server restart
  1. 设置KDC服务器在引导时自动启动:
OS Flavor Enter
RHEL/CentOS/Oracle Linux 6 chkconfig krb5kdc on , chkconfig kadmin on
RHEL/CentOS/Oracle Linux 7 systemctl enable krb5kdc , systemctl enable kadmin
SLES chkconfig rckrb5kdc on , chkconfig rckadmind on
Ubuntu/Debian update-rc.d krb5-kdc defaults , update-rc.d krb5-admin-server defaults
  1. 创建一个Kerberos管理员:

Kerberos主体可以在KDC机器本身上创建,也可以使用“admin”主体通过网络创建。下面的说明假设您正在使用KDC机器和kadmin.local

命令行管理实用程序。允许您使用kadmin.local 在KDC机器上的创建主体,而不需要在开始之前创建单独的“admin”主体。
a)通过创建一个admin主体来创建KDC管理员:kadmin.local -q “addprinc admin/admin”。
b)确认这个admin主体在KDC ACL中具有权限。使用文本编辑器,打开KDC ACL文件:

OS Flavor Enter
RHEL/CentOS/Oracle Linux vi /var/kerberos/krb5kdc/kadm5.acl
SLES vi /var/lib/kerberos/krb5kdc/kadm5.acl
Ubuntu/Debian vi /etc/krb5kdc/kadm5.acl

c)确保KDC ACL文件包括一个条目,以便允许admin主体管理您特定领域的KDC。当使用与不同的领域的EXAMPLE.COM时,请确保有您正在使用的领域的条目。如果不存在,则主体创建将失败。例如,对于admin/ [email protected]主体,您应该有一个条目:*/[email protected] *。
d)编辑并保存kadm5后。acl文件,必须重新启动kadmin进程:

OS Flavor Enter
RHEL/CentOS/Oracle Linux 6 /etc/rc.d/init.d/kadmin restart
RHEL/CentOS/Oracle Linux 7 systemctl restart kadmin
SLES rckadmind restart
Ubuntu/Debian service krb5-admin-server restart

可选:使用现有的IPA

可以使用Kerberos使用现有的FreeIPA设置。

要使用自动Kerberos设置的现有IPA KDC,必须准备以下内容:

•所有集群主机都应该加入IPA域,并在DNS中注册——如果IPA没有被配置为授权管理DNS,建议在所有主机的/etc/hosts文件中明确配置所有主机的私有IP和相应的完全合格域名。
•如果不打算使用Ambari来管理krb5.conf文件,请确保在集群的每个krb5.conf文件中设置如下:default_ccache_name = /tmp/krb5cc_%{uid} - Redhat/Centos 7。x将默认票据缓存更改为keyring,这对hadoop组件来说是个问题。
•已经在Ambari服务器主机和集群中的所有主机上安装了Java加密扩展(JCE)——如果在安装过程中你选择使用Ambari提供的JDK,这已经为你完成了。如果您配置了一个自定义JDK,请确保在所有节点上都设置了unlimited strength JCE策略。有关更多信息,请参见“安装用于Kerberos的JCE”。

也请注意:

•如果你计划利用这个IPA来创建与其他kdc的信任,请遵循FreeIPA的“Active Directory integration的考虑”,以确保你的主机使用不重叠的DNS域,与匹配的大写域。
•Kerberos认证允许最多3秒的时间差异。建议所有集群主机(包括FreeIPA主机)使用IPA的NTP服务器或外部时间管理服务。
•为了避免暴露IPA admin帐户,考虑创建一个专用的hadoopadmin帐户,它是admins组的成员,或者已经添加到具有用户和服务管理权限的角色。在使用Ambari之前,请记得重置帐户的初始临时密码。有关此过程的更多细节,请参见下面的部分。

创建一个与Ambari一起使用的IPA帐户

使用实例创建具有显式权限的hadoopadmin帐户

# obtain valid ticket as IPA administrator
kinit admin
# create a new principal to be used for ambari kerberos administration
ipa user-add hadoopadmin --first=Hadoop --last=Admin --password
# create a role and and give it privilege to manage users and services
ipa role-add hadoopadminrole
ipa role-add-privilege hadoopadminrole --privileges="User Administrators" 
ipa role-add-privilege hadoopadminrole --privileges="Service Administrators"
# add the hadoopadmin user to the role
ipa role-add-member hadoopadminrole --users=hadoopadmin
# login once, or kinit, to reset the initial temporary password for the
 hadoopadmin account
kinit hadoopadmin

注意:不要在IPA主机上安装Ambari代理。

•IPA利用SPNEGO主体(HTTP/ipa.your.domain.com)安全访问其Web UI组件。在IPA主机上安装Ambari代理会导致SPNEGO主体的kvno增加,从而导致IPA HTTP服务器出现问题。如果你已经不小心这样做了,IPA不能启动,符号链接IPA的http keytab路径(/var/lib/ IPA /gssproxy/http.keytab)到/etc/security/keytab /spnego.service。keytab,并联系您的IPA提供商的支持。

•IPA主机上的/etc/krb5.conf文件有一些额外的属性在Ambari的krb5.conf模板中没有捕捉到。因为建议让Ambari管理集群主机上的krb5.conf,所以使用IPA

对于IPA服务来说,托管集群的一部分是有问题的。如果在安装ambari代理时选中了此选项,并且没有原始krb5的备份。参考“krb5.conf模板”来恢复立即的功能。

安装用于Kerberos的JCE

在集群中启用Kerberos之前,必须在Ambari服务器和集群中的所有主机(包括Ambari服务器)上部署Java Cryptography Extension (JCE)安全策略文件。如果您正在使用OpenJDK,一些OpenJDK发行版(如RHEL/CentOS和Ubuntu)会自动提供无限强度的JCE,因此不需要安装JCE。

过程

  1. 在Ambari服务器上,获取适合JDK版本的JCE策略文件:
选项 地址
Oracle JDK 1.8 JCE Unlimited Strength Jurisdiction Policy Files 8 Download
Oracle JDK 1.7 JCE Unlimited Strength Jurisdiction Policy Files 7 Download
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" "http://
download.oracle.com/otn-pub/java/jce/8/jce_policy-8.zip"
  1. 将策略文件存档保存在临时位置。

  2. 在Ambari服务器和集群中的每个主机上,将无限安全策略JCE jar添加到$JAVA_HOME/ jre/lib/security/。

例如,运行以下命令将策略jar解压缩到安装在主机上的JDK中:

unzip -o -j -q jce_policy-8.zip -d /usr/jdk64/jdk1.8.0_40/jre/lib/
security/
  1. 重启Ambari服务器:sudo Ambari - Server重启。

下一步要做的

继续“运行Kerberos安全向导”。

启用Kerberos安全性

无论选择自动还是手动Kerberos设置,Ambari都提供了一个向导来帮助在集群中启用Kerberos。本节提供了在运行向导之前准备Ambari的信息,以及运行向导的步骤。

先决条件

•在集群上的所有主机上安装JCE(包括Ambari服务器)。
•将Ambari服务器作为集群的一部分。
•创建主体和UNIX用户名之间的映射。创建映射可以帮助解决与主体用户名和本地用户名不匹配相关的访问问题。

先决条件

除非将Ambari度量配置为分布式度量存储,否则Kerberos无法保护Ambari度量。默认情况下,它使用嵌入式度量存储,作为Kerberos向导的一部分并不安全。如果希望使用Kerberos保护Ambari度量,请参阅“自定义度量收集器模式”,在运行Kerberos向导之前启用分布式度量存储。

Centrify服务器套件

如果在集群中的任何服务器上安装并使用了Centrify,那么在尝试在集群上启用Kerberos安全性之前,一定要参考Centrify的集成指南。文档可以在Centrify服务器套件文档库中找到。直接链接到特定于hortonworks的配置指南可以在下面找到。

创建主体和UNIX用户名之间的映射

HDP使用基于规则的系统在服务主体和它们相关的UNIX用户名之间创建映射。这些规则在core-site.xml配置文件中指定为可选密钥hadoop.security.auth_to_local的值。

关于这个任务

默认规则简单地命名为default。它将默认域中的所有主体转换为它们的第一个组件。例如,myusername@APACHE。ORG和myusername / admin@APACHE。假设你的默认域名是apache.ORG,它们都变成myusername。
在映射Kerberos主体时,如果Kerberos主体名称是大写或驼峰式的,则在Linux机器上无法识别这些名称(因为Linux用户总是小写的)。您必须在规则定义中添加额外的开关“/L”,以强制转换为小写。

创建规则

为了适应更复杂的转换,您可以创建一组分层规则来添加到默认设置中。每个规则分为三个部分:基本、过滤和替换。

过程

•基础:
基的开头是主体名称中的组件数量(不包括领域),后面是冒号,以及从主体名称的各部分构建用户名的模式。在模式部分中,$0转换为领域,$1转换为第一个组件,$2转换为第二个组件。

[1:$1@$0] translates [email protected] to [email protected] 
[2:$1] translates myusername/[email protected] to myusername 
[2:$1%$2] translates myusername/[email protected] to “myusername%admin"

•过滤器:

该过滤器由圆括号中的正则表达式(regex)组成。它必须与要应用的规则所生成的字符串匹配

(.*%admin) matches any string that ends in %admin 
(.*@SOME.DOMAIN) matches any string that ends in @SOME.DOMAIN

•替换:

替换是一个sed规则,它将regex转换为固定的字符串。

s/@ACME\.COM// removes the first instance of @ACME.DOMAIN
s/@[A-Z]*\.COM// remove the first instance of @ followed by a name
 followed by COM. 
s/X/Y/g replace all of X's in the name with Y

例子

如果您的默认领域是APACHE.ORG,但您还希望从ACME.COM获取的所有主体且仅知道具有单个组件[email protected],下面的规则会这样做:


例子

要用第二个组件翻译名称,你可以使用以下规则:

RULE:[1:$1@$0](.@ACME.COM)s/@.//
RULE:[2:$1@$0](.@ACME.COM)s/@.// DEFAULT

例子

处理来自APACHE的所有主体。ORG的扩展名/admin作为admin,你的规则看起来像这样:

RULE[2:$1%$2@$0](.%admin@APACHE.ORG)s/./admin/
DEFAULT

例子
要强制用户名从驼峰式或大写转换为小写,你可以建模以下auth_to_local规则示例,这些示例添加了小写开关:

RULE:[1:$1]/L
RULE:[2:$1]/L
RULE:[2:$1;$2](^.*;admin$)s/;admin$///L
RULE:[2:$1;$2](^.*;guest$)s/;guest$//g/L

根据这些规则,以下是以下输入的预期输出:

"[email protected]" to "joe" "Joe/[email protected]" to "joe" "Joe/[email protected]" to "joe" "Joe/
[email protected]" to "joe"

运行Kerberos安全向导

Ambari为启用Kerberos提供了三种选项:使用现有的MIT KDC(自动设置)、使用现有的活动目录(自动设置)或手动管理Kerberos主体和键选项卡(手动设置)。

自动设置

在选择现有的MIT KDC或现有的Active Directory时,Kerberos向导提示输入与KDC、KDC管理帐户、服务和Ambari主体相关的信息。一旦提供,Ambari将自动创建主体、生成键选项卡并将键选项卡分发给集群中的主机。将为Kerberos配置服务,并重新启动服务组件以对KDC进行身份验证。这是自动设置选项。有关更多细节,请参见“启动Kerberos向导(自动设置)”。

如果您选择使用自动Kerberos设置选项启用Kerberos,那么作为启用Kerberos过程的一部分,Ambari将在集群主机上安装Kerberos客户机。根据不同的操作系统,安装的软件包如下:

Ambari为Kerberos客户机安装的包

操作系统
RHEL/CentOS/Oracle Linux 7 krb5-workstation
RHEL/CentOS/Oracle Linux 6 krb5-workstation
SLES 11 krb5-client
Ubuntu/Debian krb5-user, krb5-config

手工设置

当选择手动管理Kerberos主体和键选项卡时,必须创建主体、生成和分发键选项卡;包括执行“Ambari服务器Kerberos设置”。安巴里不会自动这么做。这是手动设置选项。有关更多细节,请参见“启动Kerberos向导(手动设置)”。

启动Kerberos向导(自动设置)

如果要使用现有的MIT KDC或活动目录,请选择Kerberos向导自动设置,而不是手动管理Kerberos主体和键选项卡。

程序

1.确保已安装并配置了KDC,并且已在群集中的每个主机上准备了JCE。
2.登录到Ambari Web并浏览到“管理”>“ Kerberos”。
3.单击“启用Kerberos”以启动向导。
4.选择您正在使用的KDC的类型,并确认您已满足先决条件。
5.提供有关KDC和管理员帐户的信息。
a)在“ KDC”部分中,输入以下信息:
•在“ KDC主机”字段中,为KDC主机的IP地址或FQDN。可选地,可以包括端口号。
•在“领域名称”字段中,创建服务主体时要使用的默认领域。
•(可选)在“域”字段中,提供模式列表,以用于将集群中的主机映射到适当的领域。例如,如果主机在其FQDN中具有公共域,例如host1.hortonworks.local和host2.hortonworks.local,则可以将其设置为:
.hortonworks.local,hortonworks.local
b)在“ Kadmin”部分中,输入以下信息:
•在“ Kadmin主机”字段中,为KDC管理主机的IP地址或FQDN。可选地,可以包括端口号。
•用于创建主体和密钥表的管理员主体和密码。
•(可选)如果已为Ambari配置了加密密码,则将启用“保存管理员凭据”选项。使用此选项,您可以让Ambari存储KDC管理员凭据,以在进行集群更改时使用。有关此选项的更多信息,请参阅“更新KDC管理员凭据”。
6.根据您的环境修改任何高级Kerberos设置。
a)(可选)要手动管理Kerberos客户端krb5.conf(而不让Ambari管理krb5.conf),请展开“高级krb5-conf”部分,然后取消选中“管理”选项。您必须在每个主机上配置krb5.conf。
手动管理krb5.conf时,建议确保不要将DNS用于查找KDC和REALM条目。依赖DNS可能会导致负面性能和功能影响。
为了确保不使用DNS,请确保在配置的libdefaults部分中设置了以下条目。

[libdefaults]
dns_lookup_kdc = false
dns_lookup_realm = false

b)(可选)配置用于此环境的任何其他KDC,将每个其他KDC的条目添加到Advanced krb5-conf的krb5-conf模板的领域部分。

kdc = {
    
    {
    
    kdc_host}}
kdc = otherkdc.example.com

c)(可选)要不让Ambari在所有主机上安装Kerberos客户端库,请展开“高级kerberos-env”部分,然后取消选中“安装特定于操作系统的Kerberos客户端软件包”选项。你必须有
每个主机上安装的Kerberos客户端实用程序。
d)(可选)如果您的Kerberos客户端库位于非标准路径位置,请展开“高级kerberos env”部分并调整“可执行搜索路径”选项。
e)(可选)如果您的KDC具有密码策略,请展开“高级kerberos-env”部分并调整“密码”选项。
f)(可选)Ambari将通过生成测试主体并对该主体进行身份验证来测试您的Kerberos设置。要自定义Ambari将使用的测试主体名称,请展开“高级kerberos-env”部分并调整“测试Kerberos主体”值。默认情况下,测试主体名称是群集名称和日期($ {cluster_name}-$ {short_date})的组合。测试完成后,该测试主体将被删除。
g)(可选)如果需要自定义Ambari将创建的主体的属性,则在使用Active Directory时,请参阅“自定义属性模板”以获取更多信息。使用MIT KDC时,可以在“高级kerberos-env”部分中传递“主体属性”选项。例如,您可以设置与预验证或最大相关的选项。通过传递生命:
-requires_preauth -maxrenewlife“ 7 days”
7.继续安装。
8. Ambari将在主机上安装Kerberos客户端,并通过测试Ambari可以创建一个Kerberos客户端来测试对KDC的访问。
主体,生成一个密钥表并分发该密钥表。
9.自定义Hadoop使用的Kerberos身份,然后继续对集群进行内核化。
在“配置身份”步骤中,请确保检查主体名称,尤其是在常规选项卡。默认情况下,这些主体名称会将群集名称附加到每个Ambari主体。您可以将其保留为默认值,也可以通过从主体名称字符串中删除“-$ {cluster-name}”来进行调整。为了
例如,如果您的集群名为HDP,而您的领域为EXAMPLE.COM,则将hdfs主体创建为[email protected]
10.确认您的配置。您可以选择下载Ambari的主体和密钥表的CSV文件将自动创建。
11.单击“下一步”开始该过程。
12.在创建主体并生成并分发密钥表之后,Ambari更新集群配置,然后启动并测试群集中的服务。
13.完成后退出向导。
14. Ambari Server与群集中的组件进行通信,现在通过Kerberos设置,您需要
确保为Kerberos设置了Ambari服务器。作为自动Kerberos设置过程的一部分,Ambari Server具有
已获得密钥标签并执行设置。您需要做的就是重新启动Ambari Server,以使其生效。
因此,此时请重新启动Ambari Server:ambari-server restart。

启动Kerberos向导(手动设置)
如果要手动管理Kerberos主体和密钥表,而不是使用现有的MIT KDC或Active Directory,请选择“ Kerberos向导手动设置”。

更新KDC管理员凭证

如何在Ambari中更新以前保存的KDC凭据。

关于此任务

启用Kerberos时,如果选择使用现有的MIT KDC或现有的Active Directory,则Kerberos向导会提示您提供与KDC,KDC管理员帐户凭据以及服务和Ambari主体有关的信息。 提供后,Ambari将自动创建主体,生成密钥表并将密钥表分发到群集中的主机。 将为Kerberos配置服务,并重新启动服务组件以针对KDC进行身份验证。 这是“ Kerberos自动安装”选项。

默认情况下,除非您已加密存储在Ambari中的密码(请参阅“在Ambari中加密数据库和LDAP密码”),否则Ambari不会保留您提供的KDC管理员帐户凭据。 如果尚未为密码加密配置Ambari,则每当集群更改需要KDC主体和/或密钥表更改(例如添加服务,组件和主机)时,系统都会提示您提供KDC管理员帐户凭据。

如果已将Ambari配置为用于密码加密,则可以选择“保存管理员凭据”。 Ambari将使用保留的KDC管理员帐户凭据自动进行KDC更改。

注意

如果您没有为Ambari启用密码加密,则不会启用“保存管理员凭据”选项。

更新KDC凭证
如果在启用Kerberos时选择了“保存管理凭据”,则可以使用以下方法从Ambari更新或删除凭据:
a)在Ambari Web中,浏览到“管理”>“ Kerberos”,然后单击“管理KDC凭据”按钮。 将显示“管理KDC凭据”对话框。
b)如果以前保存过凭据,请单击“删除”以删除当前存储在Ambari中的凭据。
删除后,如果需要KDC主体和/或keytab更改的集群更改(例如添加服务,组件和主机),将提示您输入KDC管理员帐户凭据。
c)或者,要更新KDC管理员帐户凭据,请输入管理员主体和密码值,然后单击保存。

自定义属性模板

如果您将Kerberos自动安装程序与Active Directory一起使用,则取决于您的KDC策略,您可以自定义Ambari在创建主体时设置的属性。

在向导的“配置Kerberos”步骤上的“高级kerberos-env”部分中,您可以访问Ambari属性模板。 可以修改此模板(基于Apache Velocity模板语法),以调整在主体上设置的属性以及如何导出这些属性值。

下表列出了选择修改模板时可用的一组计算属性变量:

属性变量 例子
$normalized_principal nn/[email protected]
$principal_name nn/c6401.ambari.apache.org
$principal_primary nn
$principal_digest SHA1 hash of the $normalized_principal
$principal_digest_256 SHA256 hash of the $normalized_principal
$principal_digest_512 SHA512 hash of the $normalized_principal
$principal_instance c6401.ambari.apache.org
$realm EXAMPLE.COM
$password password

Disable Kerberos Security
启用Kerberos安全性之后,您可以禁用Kerberos。

程序
1.登录到Ambari Web并浏览到“管理”>“ Kerberos”。
2.单击“禁用Kerberos”以启动向导。
3.完成向导。

猜你喜欢

转载自blog.csdn.net/m0_48187193/article/details/114881634