选择不安装Ranger Tagsync
ambari-server setup --jdbc-db=mysql --jdbc-driver=/opt/mysql-connector-java-5.1.49.jar
然后在ambari界面点击“TEST CONNECTION”进行测试
在CONFIGS->RANGER PLUGIN中,启用对应服务的Plugin
启用Plugin后,对应的服务(hdfs)重启
在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上
以tenant1和tenant2为测试对象,设置tenant1在hdfs上的目录为/testhdfs/tenant1,tenant2在hdfs上的目录为/testhdfs/tenant2,在Ranger上未设置任何权限策略的情况下
先以hdfs管理员账号nn/[email protected]登录kdc,然后创建对应的目录和赋权
kinit -kt /etc/security/keytabs/nn.service.keytab nn/[email protected]
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锁死
Ranger为HDFS提供联合授权模型:
配置完成后,重启hdfs服务
禁用Ranger上的tenant1策略,然后用tenant1和tenant2账号分别查看,因为/testhdfs/tenant1上没有策略,虽然hdfs权限为777,但因为非联合授权,因此仍被Ranger拒绝访问;而/testhdfs/tenant2在Ranger有策略控制,因此tenant2仍有权限查看
配置审计日志在hdfs上存储,路径为hdfs://hdp315/ranger/audit,将所有租户的执行行为进行记录
kinit -kt /etc/security/keytabs/nn.service.keytab nn/[email protected]
hdfs dfs -cat /ranger/audit/hdfs/20230303/hdfs_ranger_audit_hdp02.hdp.com.1.log
Ambari上启用Ranger HA,需要提前准备好负载均衡器,ambari上只是在另外一台服务器上配置好Ranger,实现两台的高可用关系,但前面的负载不是Ambari来负责管理。前面的负载采用KeepAlived+HAProxy实现。
复用在OpenLDAP中的KeepAlived+HAProxy
在hdp04和hdp05上修改配置文件中的部分内容,/etc/haproxy/haproxy.cfg
#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend tcp_389_openldap
bind *:389
mode tcp
stats uri /haproxy?stats
default_backend tcp_389_openldap
frontend http_6080_ranger
bind *:6080
http-request set-header X-Forwarded-Proto http
stats uri /haproxy?stats
default_backend http_6080_ranger
#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend tcp_389_openldap
mode tcp
balance roundrobin
server server1 hdp01.hdp.com:389 check weight 100
server server2 hdp02.hdp.com:389 check weight 1
backend http_6080_ranger
mode http
balance roundrobin
cookie LB insert
server server1 hdp01.hdp.com:6080 maxconn 200 weight 10 cookie 1 check inter 5000 rise 3 fall 3
server server2 hdp02.hdp.com:6080 maxconn 200 weight 10 cookie 2 check inter 5000 rise 3 fall 3
启动服务
systemctl restart haproxy
systemctl status haproyx
确认状态