Apache Ranger系列六:Submarine Spark Security Plugin安装(0.6.0版本)
阅读原文时间:2023年07月08日阅读:5

参考 https://submarine.apache.org/zh-cn/docs/0.6.0/userDocs/submarine-security/spark-security/

从ranger的github地址https://github.com/apache/ranger中可以发现当前ranger并没有提供专门的Ranger Spark插件。

当然我们还可以通过Ranger HDFS插件做存储级别的权限控制,但是这种方式不利于做更细粒度(表,字段)的权限控制或者data masking的。

submarine-spark-security 支持基于标准SQL方式的Spark鉴权,包括:

  1. Table/Column级别的鉴权;(注:Database级别的鉴权功能没有问题,但有两点地方需要注意:1需要提前配置spark_catalog的权限;2可以use没有权限的库,但是后续鉴权会报错)
  2. Row级别的过滤;
  3. Data masking

编译

git clone -b release-0.6.0-RC0 https://github.com/apache/submarine

mvn clean package -Dmaven.javadoc.skip=true -DskipTests -pl :submarine-spark-security -Pspark-3.0 -Pranger-2.1

支持的版本如下:

Spark: -Pspark-2.3-Pspark-2.4-Pspark-3.0

Ranger: -Pranger-1.2-Pranger-2.0

直接看代码,-Pranger-2.1是已经支持了的

下面介绍下两个配置文件

ranger-spark-security.xml

ranger.plugin.spark.policy.rest.url ranger admin address like http://ranger-admin.org:6080 可以配置多个,用逗号','隔开 ranger.plugin.spark.service.name a ranger hive service name ranger.plugin.spark.policy.cache.dir ./a ranger hive service name/policycache ranger.plugin.spark.policy.pollIntervalMs 5000适当调整一下 ranger.plugin.spark.policy.source.impl org.apache.ranger.admin.client.RangerAdminRESTClient

  ranger-spark-audit.xml (审计的相关配置)

官网虽然提供了模版,最好可以将ranger-hive-plugin安装后的ranger-hive-audit.xml改个名字ranger-spark-audit.xml

安装

sudo sed -i '$aspark.yarn.stagingDir /user/ranger/spark/staging' /etc/spark/conf/spark-defaults.conf
sudo sed -i '$aspark.sql.extensions=org.apache.submarine.spark.security.api.RangerSparkSQLExtension' /etc/spark/conf/spark-defaults.conf

sudo sed -i "s|# livy.impersonation.enabled true|livy.impersonation.enabled true|g" /etc/livy/conf/livy.conf

sudo cp submarine-spark-security-0.6.0.jar /usr/lib/spark/jars/
sudo cp ranger-spark-audit.xml /usr/lib/spark/conf/
sudo cp ranger-spark-security.xml /usr/lib/spark/conf/

sudo systemctl restart livy-server.service