目录
Part.01 关于HDP
Part.02 核心组件原理
Part.03 资源规划
Part.04 基础环境配置
Part.05 Yum源配置
Part.06 安装OracleJDK
Part.07 安装MySQL
Part.08 部署Ambari集群
Part.09 安装OpenLDAP
Part.10 创建集群
Part.11 安装Kerberos
Part.12 安装HDFS
Part.13 安装Ranger
Part.14 安装YARN+MR
Part.15 安装HIVE
Part.16 安装HBase
Part.17 安装Spark2
Part.18 安装Flink
Part.19 安装Kafka
Part.20 安装Flume
十三、安装Ranger
1.安装服务
(1)Choose Services
(2)Assign Masters
(3)Assign Slaves and Clients
选择不安装Ranger Tagsync
(4)Customize Services
- 设置RANGER ADMIN
DB FLAVOR:选择MySQL,依据ambari使用的数据库来定
Ranger DB name:设置ranger在数据库中的DB,默认ranger
Ranger DB host:hdp01.hdp.com,选择安装MySQL的主机名
Ranger DB username:设置ranger用户名,默认rangeradmin
Ranger DB password:设置ranger密码,此处设置lnyd@LNsy115
JDBC connect string for a Ranger database:自动生成
DBA username:填入数据库连接用户名,默认root
DBA password:填入数据库连接密码,此处设置lnyd@LNsy115
JDBC connect string:数据库连接,前面的信息填写好后会自动生成
在hdp01上设置ambari的MySQL JDBC
ambari-server setup --jdbc-db=mysql --jdbc-driver=/opt/mysql-connector-java-5.1.49.jar
然后在ambari界面点击“TEST CONNECTION”进行测试
- 设置RANGER USER INFO
Sync Source:选择“LDAP/AD”
子选项卡:COMMON CONFIGS
LDAP/AD URL:ldap://192.168.111.222:389
Bind User:cn=admin,dc=hdp315,dc=com
Bind User Password:设置为lnyd@LNsy115
子选项卡:USER CONFIGS
Username Attribute:uid
User Object Class:posixAccount
User Search Base:ou=People,dc=hdp315,dc=com
User Search Filter:cn=*
User Search Scope:sub
User Group Name Attribute:memberUid
子选项卡:GROUP CONFIGS
Group Member Attribute:memberUid(对应template.ldif中的memberUid属性)
Group Name Attribute:cn
Group Object Class:posixGroup
Group Search Base:ou=Group,dc=hdp315,dc=com
Group Search Filter:cn=*
- 设置RANGER AUDIT
未安装solr,关闭向Solr审计功能;将审计日志存储到HDFS
- 设置ADVANCED
此处的用户密码统一设置为lnyd@LNsy115
ADMIN Settings中的Ldap Base DN改为dc=hdp315,dc=com
Ranger Settings中的External URL设置为http://hdp02.hdp.com:6080,此处设置为hdp01即可,不应该设置为192.168.111.222的vIP,否在调用相关URL时,会使用principal:HTTP/192.168.111.222@HDP315.COM,因为没有相关账号而报错401
(5)Review
(6)Install,Start and Test
(7)Summary
2.安装plugin
在CONFIGS->RANGER PLUGIN中,启用对应服务的Plugin
启用Plugin后,对应的服务(hdfs)重启
3.测试
(1)用户同步测试
在OpenLDAP上新建测试账号tenant2
ldapadd -x -w "lnyd@LNsy115" -D "cn=admin,dc=hdp315,dc=com" -f /root/template.ldif
在ambari上重启UserSync服务,以重新同步(正常会周期性同步,为了即时同步,可重启该服务)
登录Ranger界面,http://192.168.111.201:6080,查看用户,确认OpenLDAP账号已经同步至Ranger上
(2)权限测试
以tenant1和tenant2为测试对象,设置tenant1在hdfs上的目录为/testhdfs/tenant1,tenant2在hdfs上的目录为/testhdfs/tenant2,在Ranger上未设置任何权限策略的情况下
先以hdfs管理员账号nn/hdp01.hdp.com@HDP315.COM登录kdc,然后创建对应的目录和赋权
kinit -kt /etc/security/keytabs/nn.service.keytab nn/hdp01.hdp.com@HDP315.COM
hdfs dfs -mkdir -p /testhdfs/tenant1
hdfs dfs -mkdir -p /testhdfs/tenant2
hdfs dfs -chmod 777 /testhdfs/tenant1
hdfs dfs -chmod 777 /testhdfs/tenant2
hdfs dfs -ls /testhdfs
LDAP上已经有tenant1和tenant2两个账号,还需要在kerberos中同步建立好对应的账号
kadmin.local
addprinc -randkey tenant1
addprinc -randkey tenant2
ktadd -kt /root/keytab/tenant1.keytab tenant1
ktadd -kt /root/keytab/tenant2.keytab tenant2
分别以tenant1和tenant2账号登录kdc后,上传测试文件到自身的目录下
kinit -kt /root/keytab/tenant1.keytab tenant1
hdfs dfs -put /root/file1 /testhdfs/tenant1/
hdfs dfs -ls /testhdfs/tenant1
kdestroy
kinit -kt /root/keytab/tenant2.keytab tenant2
hdfs dfs -put /root/file2 /testhdfs/tenant2/
hdfs dfs -ls /testhdfs/tenant2
分别用两个账号查看对方目录下的文件内容,目前是以hdfs自身的权限控制为准,即777权限,因此可以查看
kinit -kt /root/keytab/tenant1.keytab tenant1
hdfs dfs -cat /testhdfs/tenant2/file2
kdestroy
kinit -kt /root/keytab/tenant2.keytab tenant2
hdfs dfs -cat /testhdfs/tenant1/file1
在Ranger上添加策略
设置完成后,再次分别以tenant1和tenant2登录并查看权限情况
kinit -kt /root/keytab/tenant1.keytab tenant1
hdfs dfs -cat /testhdfs/tenant1/file1
hdfs dfs -cat /testhdfs/tenant2/file2
kinit -kt /root/keytab/tenant2.keytab tenant2
hdfs dfs -cat /testhdfs/tenant1/file1
hdfs dfs -cat /testhdfs/tenant2/file2
说明权限已经生效,账号仅能查看自身目录下的文件,其他目录权限已被Ranger锁死
(3)联合授权
Ranger为HDFS提供联合授权模型:
- 用于HDFS的Ranger插件检查Ranger策略,如果存在策略,则授予用户访问权限。
- 如果Ranger中不存在策略,则Ranger将默认使用HDFS(POSIX或HDFS ACL)中的本机权限模型。
联合模型适用于Ranger中的HDFS和Yarn服务。对于其他服务,例如Hive或HBase,Ranger作为唯一授权者运行,这意味着只有Ranger策略生效。
在HDFS中,CONFIGS->ADVANCED->Advanced ranger-hdfs-security中设置
xasecure.add-hadoop-authorization=true,表示启用联合授权,即如果不存在权限,则由hdfs权限控制;false表示禁用联合授权,hdfs的权限不再生效,而是仅有Ranger来控制。
配置完成后,重启hdfs服务
禁用Ranger上的tenant1策略,然后用tenant1和tenant2账号分别查看,因为/testhdfs/tenant1上没有策略,虽然hdfs权限为777,但因为非联合授权,因此仍被Ranger拒绝访问;而/testhdfs/tenant2在Ranger有策略控制,因此tenant2仍有权限查看
(4)查看审计日志
配置审计日志在hdfs上存储,路径为hdfs://hdp315/ranger/audit,将所有租户的执行行为进行记录
kinit -kt /etc/security/keytabs/nn.service.keytab nn/hdp01.hdp.com@HDP315.COM
hdfs dfs -cat /ranger/audit/hdfs/20230303/hdfs_ranger_audit_hdp02.hdp.com.1.log
4.启用HA
Ambari上启用Ranger HA,需要提前准备好负载均衡器,ambari上只是在另外一台服务器上配置好Ranger,实现两台的高可用关系,但前面的负载不是Ambari来负责管理。前面的负载采用KeepAlived+HAProxy实现。
复用在OpenLDAP中的KeepAlived+HAProxy
(1)配置HAProxy
在hdp04和hdp05上修改配置文件中的部分内容,/etc/haproxy/haproxy.cfg
#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend tcp_389_openldapbind *:389mode tcpstats uri /haproxy?statsdefault_backend tcp_389_openldapfrontend http_6080_rangerbind *:6080http-request set-header X-Forwarded-Proto httpstats uri /haproxy?statsdefault_backend http_6080_ranger#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend tcp_389_openldapmode tcpbalance roundrobinserver server1 hdp01.hdp.com:389 check weight 100server server2 hdp02.hdp.com:389 check weight 1backend http_6080_rangermode httpbalance roundrobincookie LB insertserver server1 hdp01.hdp.com:6080 maxconn 200 weight 10 cookie 1 check inter 5000 rise 3 fall 3server server2 hdp02.hdp.com:6080 maxconn 200 weight 10 cookie 2 check inter 5000 rise 3 fall 3
启动服务
systemctl restart haproxy
systemctl status haproyx
(2)Ambari上启用HA
确认状态