如果没有“拒绝”策略,Ranger策略和HDFS ACL之间最宽松的访问将用于授予对资源的访问权限。换句话说,除非您明确定义了适用于所访问资源的“拒绝”策略,否则将始终考虑HDFS ACL进行授权。
启用HDFS“拒绝”策略
默认情况下,Ranger UI中不提供“拒绝”策略。这主要是因为这个概念很难理解,使用“拒绝”政策时,事情很快就会变得一团糟。此外,对于大多数用户,永远不会使用此功能。使用该功能时需要小心谨慎。
要启用它,请从Ranger管理服务器检索HDFS服务定义:
$ curl -k -u <user> https://<ranger_admin_server>:6080/service/public/v2/api/servicedef/1 > hdfs.json
ps: 端口根据部署ranger的端口来指定,可能不同;1代表HDFS,2代表HBASE,3代表HIVE,具体请查看RANGER REST APIS
然后,看看内容:
$ cat hdfs.json {...,"isEnabled":true,"name":"hdfs","options":{"enableDenyAndExceptionsInPolicies":"false"}...}
在“选项”字段中,您可以添加(或修改它,如果它已经存在):
"options":{"enableDenyAndExceptionsInPolicies":"true"}
然后你只需要更新服务定义:
$ curl -k -u <user> -X PUT -H "Accept: application/json" -H "Content-Type: application/json" -d @hdfs.json https://<ranger_admin_server>:6080/service/public/v2/api/servicedef/1
启用HIVE“拒绝”策略
同HDFS,将调用API改成3就可以了
效果如下图: