欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

阿帕奇游侠系列 VI:潜艇 Spark 安全插件安装(0.6.0 版)

最编程 2024-06-18 17:10:44
...

参考 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

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

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