更新时间:2024-11-29 GMT+08:00

Ranger鉴权与ACL鉴权

问题

查询或建表时报错:

  1. 使用Ranger鉴权失败。
    org.apache.ranger.authorization.spark.authorizer.SparkAccessControlException: Permission denied: user [username] does not have [SELECT] privilege on [databasename/tablename] 
  2. 使用ACL鉴权失败。
    org.apache.hadoop.security.AccessControlException: Permission denied 

原因

  1. 未配置对应鉴权方式中用户的权限。
  1. 配置用户权限后未使用对应的鉴权方法:添加Spark的Ranger访问权限策略后使用ACL鉴权或添加ACL访问权限策略后使用ranger鉴权。

解决方法

  1. 查看当前使用的鉴权方法:

    查看配置参数:

    方法一:在spark-defaults.conf配置文件中查看spark.ranger.plugin.authorization.enable参数值,true表示使用的是Ranger鉴权,false表示使用的是ACL鉴权。

    方法二:在Spark应用中执行set spark.ranger.plugin.authorization.enable命令,查看结果true表示使用的是Ranger鉴权,false表示使用的是ACL鉴权。

  2. 配置访问权限策略:

    Ranger访问权限策略:具体请参考添加Spark的Ranger访问权限策略

    ACL访问权限策略:具体请参考SparkSQL权限管理(安全模式)