5.HDP安全之集成kerberos/LDAP、ranger
集成HDP kerberos /LDAP/ranger之前必须先了解为什么要这样做,kerberos/LDAP是用来做身份认证的,ranger用来做授权审计的,KNOX负责集群安全,所以集成后应该要满足同一个账号,例如hux可以在linux、ambari、ranger、kerberos等等等均可使用,ranger上可以同步LDAP中的用户,并进行统一的用户权限管理,所以需要在linux中创建的用户与LDAP、kerberos中创建的用户相同,由于此次使用的是knox自带的LDAP,所以里面没有集成kerberos,需要在LDAP和kerberos中分别创建同样的账号,如果使用的AD、IPA就不需要这样做了,因为它们有集成kerberos。
下面以创建hux用户为例做集成。
[root@bigdata2 ~]# kadmin.local -q "addprinc hux" 密码为123456
5.1.安装部署kerberos
此处略,按照上面的安装方式。(注意:这里的KDC在bigdata2上),client在bigdata1和bigdata2上都有。
5.2.安装Knox
进入Ambari,点击添加Knox
勾选上knox
Knox Master Secret填写的是Admin123456
开始安装Knox。
5.3.安装LDAP
Knox网关自带了一个用于测试LDAP服务,并定义好了一些用户,同时它所有的认证配置都默认指向这个测试的LDAP。
5.3.1.启动LDAP
登陆Knox网关所在的服务器,进入安装目录并执行启动脚本。
[root@bigdata2 ~]# cd /usr/hdp/current/knox-server/bin/
[root@bigdata2 bin]# ls
gateway gateway.sh knoxcli.jar knox-functions.sh ldap.sh
gateway.cmd gateway.xml knoxcli.sh ldap.cmd ldap.xml
gateway.jar knoxcli.cmd knox-env.sh ldap.jar shell.jar
[root@bigdata2 bin]# ./ldap.sh start
Starting LDAP succeeded with PID 118746.
[root@bigdata2 bin]#
如果启动之后,意外停止了,可以执行:
[root@bigdata2 bin]# vim ldap.sh
[root@bigdata2 bin]# ./ldap.sh clean
Removed the LDAP PID file: /usr/hdp/current/knox-server/pids/ldap.pid.
Removed the LDAP OUT file: /usr/hdp/current/knox-server/logs/ldap.out.
Removed the LDAP ERR file: /usr/hdp/current/knox-server/logs/ldap.err.
[root@bigdata2 bin]# ./ldap.sh start
Starting LDAP succeeded with PID 34755.
[root@bigdata2 bin]#
ldap.sh中的命令有:start|stop|status|clean
5.3.1.1.查看端口
[root@bigdata2 config]# netstat -natp | grep 389
tcp6 0 0 :::33389 :::* LISTEN 118746/java
[root@bigdata2 config]#
5.3.2.登陆验证
LDAP测试服务预置的用户信息有两种途径查看,一种是登陆Knox网关所在的服务器查看配置文件,配置文件地址是”/etc/knox/conf/users.ldif”,另一种是通过Ambari的配置管理查看,如下图所示:
5.3.2.1.在windows下安装jxplorer
下载地址:http://jxplorer.org/downloads/users.html
在windows下安装:jxplorer-3.3.1.2-windows-installer.exe (这个工具依赖jdk)
这里只需要傻瓜式的下一步下一步的方式进行安装。
5.3.2.2.使用客户端连接LDAP
现在我们使用客户端工具链接到LDAP,测试一下服务是否正确启动。
在windows的菜单下,找到jxplorer,并点击:
没有连接时的界面如下:
配置如下:
可以将上面的配置保存成一个模板。
下面是几个比较重要的信息:
主机:192.168.106.135 (这里也可以直接输入IP地址,根据你的环境输入相应的主机名称即可)
端口:33389 (这个端口可以在ldap服务端使用netstat名称查看)
协定:LDAP v3
基底DN: dc=hadoop,dc=apache,dc=org
层次:用户 + 密码
使用者DN: uid=admin,ou=people,dc=hadoop,dc=apache,dc=org
密码:admin-password
登录之后我们会看到LDAP里面已经配置了一些组和用户的数据了,如下图所示:
5.3.3.验证Knox网关
5.3.3.1.配置resourcemanager
由于使用了Knox网关自带的LDAP服务,所以我们无须更改它的配置便可以直接使用。作为代理网关,Knox将所有支持代理的RESTful服务和页面进行了一层地址映射。现在我们来测试一下YARN的RESTful服务,打开浏览器输入:https://192.168.106.135:8443/gateway/default/resourcemanager/v1/cluster/apps。这是YARN查看任务集群的RESTFULL服务接口。如下图所示,Knox网关需要进行登录认证。
其中,用户名admin,密码是:admin-password
上面的用户名和密码是Knox Advanced users-ldif中配置的内容用户名和密码。
输入用户名和密码进行认证登录,认证通过之后我们如愿访问到数据了,如下图所示:
5.3.3.2.配置YARN的WebUI控制
接下来我们尝试访问YARN的Web UI控制台,Knox网关的默认配置中只代理了RESful接口,所以我们需要修改它的配置文件,添加想要代理的Web UI控制台。打开Ambari找到Knox网关的配置页面,选择Advanced topology配置项,在末尾添加YARN UI的配置,保存后需要重启Knox网关服务。
最终的内容如下:
<topology>
<gateway>
<provider>
<role>authentication</role>
<name>ShiroProvider</name>
<enabled>true</enabled>
<param>
<name>sessionTimeout</name>
<value>30</value>
</param>
<param>
<name>main.ldapRealm</name>
<value>org.apache.hadoop.gateway.shirorealm.KnoxLdapRealm</value>
</param>
<param>
<name>main.ldapRealm.userDnTemplate</name>
<value>uid={
0},ou=people,dc=hadoop,dc=apache,dc=org</value>
</param>
<param>
<name>main.ldapRealm.contextFactory.url</name>
<value>ldap://{
{
knox_host_name}}:33389</value>
</param>
<param>
<name>main.ldapRealm.contextFactory.authenticationMechanism</name>
<value>simple</value>
</param>
<param>
<name>urls./**</name>
<value>authcBasic</value>
</param>
</provider>
<provider>
<role>identity-assertion</role>
<name>Default</name>
<enabled