searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Doris集成Ranger权限管控实践

2024-05-30 01:31:19
175
0

1、版本要求说明:

Doris版本要求:2.1.0及以上。

Ranger版本要求:2.4.0及以上。

本文基于Doris-2.1.2和Ranger-2.4.0进行实践。

2、安装步骤

2.1、安装 Doris Ranger 插件

2.1.1、下载插件和驱动

1、ranger-doris-plugin-3.0.0-SNAPSHOT.jar

2、mysql-connector-java-8.0.25.jar

2.1.2、将下载好的文件放到 Ranger 服务的 plugins 目录下

比如:

/usr/local/service/ranger/ews/webapp/WEB-INF/classes/ranger-plugins/doris/ranger-doris-plugin-3.0.0-SNAPSHOT.jar
/usr/local/service/ranger/ews/webapp/WEB-INF/classes/ranger-plugins/doris/mysql-connector-java-8.0.25.jar

2.1.3、上传Doris Service流定义文件到Ranger

下载:ranger-servicedef-doris.json

curl -u <username>:<password> -X POST \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    <ranger_ip>:<ranger_port>/service/plugins/definitions \
    -d@ranger-servicedef-doris.json

其中username/password是登录 Ranger WebUI 所使用的用户名密码,ranger_ip/ranger_port是Ranger Web服务的ip和端口。

上传成功后,会得到类似以下响应:

{
  "id": 207,
  "guid": "d3ff9e41-f9dd-4217-bb5f-3fa9996454b6",
  "isEnabled": true,
  "createdBy": "Admin",
  "updatedBy": "Admin",
  "createTime": 1705817398112,
  "updateTime": 1705817398112,
  "version": 1,
  "name": "doris",
  "displayName": "Apache Doris",
  "implClass": "org.apache.ranger.services.doris.RangerServiceDoris",
  "label": "Doris",
  "description": "Apache Doris",
  "options": {
    "enableDenyAndExceptionsInPolicies": "true"
  },
  ...
}

2.2、配置 Doris Ranger 插件

安装完毕后,打开 Ranger WebUI,可以在 Service Manger 界面中看到 Apache Doris 插件:

点击插件旁边的 + 号添加一个 Doris 服务:

Config Properties 部分参数含义如下:

  • Username/Pasword:Doris 集群的用户名密码,这里建议使用 Admin 用户。
  • jdbc.driver_class:连接 Doris 使用的 JDBC 驱动。com.mysql.cj.jdbc.Driver
  • jdbc.url:Doris 集群的 JDBC url 连接串,比如:jdbc:mysql://172.21.0.101:9030?useSSL=false
  • 额外参数:
    • resource.lookup.timeout.value.in.ms:获取元信息的超时时间,建议填写 10000,即 10 秒。

可以点击 Test Connection 检查是否可以联通。

之后点击 Add 添加服务。

之后,可以在 Service Manger 界面的 Apache Doris 插件中看到创建的服务,点击服务,即可开始配置 Ranger。

2.3、配置 Doris 集群

2.3.1、在所有 FE 的 conf 目录创建 ranger-doris-security.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>ranger.plugin.doris.policy.cache.dir</name>
        <value>/usr/local/doris-fe/ranger/cache/</value>
    </property>
    <property>
        <name>ranger.plugin.doris.policy.pollIntervalMs</name>
        <value>30000</value>
    </property>
    <property>
        <name>ranger.plugin.doris.policy.rest.client.connection.timeoutMs</name>
        <value>60000</value>
    </property>
    <property>
        <name>ranger.plugin.doris.policy.rest.client.read.timeoutMs</name>
        <value>60000</value>
    </property>
    <property>
        <name>ranger.plugin.doris.policy.rest.url</name>
        <value><ranger_ip>:<ranger_port></value>
    </property>
    <property>
        <name>ranger.plugin.doris.policy.source.impl</name>
        <value>org.apache.ranger.admin.client.RangerAdminRESTClient</value>
    </property>
    <property>
        <name>ranger.plugin.doris.service.name</name>
        <value>doris</value>
    </property>
</configuration>

其中需要将 ranger.plugin.doris.policy.cache.dir 和 ranger.plugin.doris.policy.rest.url 改为实际值。

2.3.2、在所有 FE 的 conf 目录创建 ranger-doris-audit.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
</configuration>

2.3.3、在所有 FE 的 conf 目录创建 log4j.properties 文件

log4j.rootLogger = debug,stdout,D
  
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
  
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = /usr/local/doris-fe/log/ranger.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = INFO
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

其中 log4j.appender.D.File 改为实际值,用于存放 Ranger 插件的日志。

2.3.4、在所有 FE 的 fe.conf 中添加配置

access_controller_type=ranger-doris

2.3.5、重启所有 FE 节点

3、资源和权限

3.1、目前 Ranger 中支持的 Doris 资源

  • Catalog
  • Database
  • Table
  • Column
  • Resource
  • Workload Group

3.2、目前 Ranger 中支持的 Doris 权限

  • SHOW
  • SHOW_VIEW
  • SHOW_RESOURCES
  • SHOW_WORKLOAD_GROUP
  • LOAD
  • ALTER
  • CREATE
  • ALTER_CREATE
  • ALTER_CREATE_DROP
  • DROP
  • SELECT
  • USAGE

4、权限验证

4.1、Doris创建普通用户doris

CREATE USER doris@'%' IDENTIFIED BY 'xxxxx';

4.2、Ranger创建同名用户doris

4.3、Catalog相关权限验证

4.3.1、catalog支持的权限范围

SHOW/CREATE/ALTER/DROP。

4.3.2、给用户doris赋予所有catalog权限

这样就可以也给doris用户授予所有catalog的权限。

4.3.2.1、show catalog验证

可以看到用户doris和用户root查看到的所有catalog是一致的。

database、table、column的授权配置依此类推。

 

0条评论
0 / 1000
h****n
4文章数
1粉丝数
h****n
4 文章 | 1 粉丝
h****n
4文章数
1粉丝数
h****n
4 文章 | 1 粉丝
原创

Doris集成Ranger权限管控实践

2024-05-30 01:31:19
175
0

1、版本要求说明:

Doris版本要求:2.1.0及以上。

Ranger版本要求:2.4.0及以上。

本文基于Doris-2.1.2和Ranger-2.4.0进行实践。

2、安装步骤

2.1、安装 Doris Ranger 插件

2.1.1、下载插件和驱动

1、ranger-doris-plugin-3.0.0-SNAPSHOT.jar

2、mysql-connector-java-8.0.25.jar

2.1.2、将下载好的文件放到 Ranger 服务的 plugins 目录下

比如:

/usr/local/service/ranger/ews/webapp/WEB-INF/classes/ranger-plugins/doris/ranger-doris-plugin-3.0.0-SNAPSHOT.jar
/usr/local/service/ranger/ews/webapp/WEB-INF/classes/ranger-plugins/doris/mysql-connector-java-8.0.25.jar

2.1.3、上传Doris Service流定义文件到Ranger

下载:ranger-servicedef-doris.json

curl -u <username>:<password> -X POST \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    <ranger_ip>:<ranger_port>/service/plugins/definitions \
    -d@ranger-servicedef-doris.json

其中username/password是登录 Ranger WebUI 所使用的用户名密码,ranger_ip/ranger_port是Ranger Web服务的ip和端口。

上传成功后,会得到类似以下响应:

{
  "id": 207,
  "guid": "d3ff9e41-f9dd-4217-bb5f-3fa9996454b6",
  "isEnabled": true,
  "createdBy": "Admin",
  "updatedBy": "Admin",
  "createTime": 1705817398112,
  "updateTime": 1705817398112,
  "version": 1,
  "name": "doris",
  "displayName": "Apache Doris",
  "implClass": "org.apache.ranger.services.doris.RangerServiceDoris",
  "label": "Doris",
  "description": "Apache Doris",
  "options": {
    "enableDenyAndExceptionsInPolicies": "true"
  },
  ...
}

2.2、配置 Doris Ranger 插件

安装完毕后,打开 Ranger WebUI,可以在 Service Manger 界面中看到 Apache Doris 插件:

点击插件旁边的 + 号添加一个 Doris 服务:

Config Properties 部分参数含义如下:

  • Username/Pasword:Doris 集群的用户名密码,这里建议使用 Admin 用户。
  • jdbc.driver_class:连接 Doris 使用的 JDBC 驱动。com.mysql.cj.jdbc.Driver
  • jdbc.url:Doris 集群的 JDBC url 连接串,比如:jdbc:mysql://172.21.0.101:9030?useSSL=false
  • 额外参数:
    • resource.lookup.timeout.value.in.ms:获取元信息的超时时间,建议填写 10000,即 10 秒。

可以点击 Test Connection 检查是否可以联通。

之后点击 Add 添加服务。

之后,可以在 Service Manger 界面的 Apache Doris 插件中看到创建的服务,点击服务,即可开始配置 Ranger。

2.3、配置 Doris 集群

2.3.1、在所有 FE 的 conf 目录创建 ranger-doris-security.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>ranger.plugin.doris.policy.cache.dir</name>
        <value>/usr/local/doris-fe/ranger/cache/</value>
    </property>
    <property>
        <name>ranger.plugin.doris.policy.pollIntervalMs</name>
        <value>30000</value>
    </property>
    <property>
        <name>ranger.plugin.doris.policy.rest.client.connection.timeoutMs</name>
        <value>60000</value>
    </property>
    <property>
        <name>ranger.plugin.doris.policy.rest.client.read.timeoutMs</name>
        <value>60000</value>
    </property>
    <property>
        <name>ranger.plugin.doris.policy.rest.url</name>
        <value><ranger_ip>:<ranger_port></value>
    </property>
    <property>
        <name>ranger.plugin.doris.policy.source.impl</name>
        <value>org.apache.ranger.admin.client.RangerAdminRESTClient</value>
    </property>
    <property>
        <name>ranger.plugin.doris.service.name</name>
        <value>doris</value>
    </property>
</configuration>

其中需要将 ranger.plugin.doris.policy.cache.dir 和 ranger.plugin.doris.policy.rest.url 改为实际值。

2.3.2、在所有 FE 的 conf 目录创建 ranger-doris-audit.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
</configuration>

2.3.3、在所有 FE 的 conf 目录创建 log4j.properties 文件

log4j.rootLogger = debug,stdout,D
  
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
  
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = /usr/local/doris-fe/log/ranger.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = INFO
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

其中 log4j.appender.D.File 改为实际值,用于存放 Ranger 插件的日志。

2.3.4、在所有 FE 的 fe.conf 中添加配置

access_controller_type=ranger-doris

2.3.5、重启所有 FE 节点

3、资源和权限

3.1、目前 Ranger 中支持的 Doris 资源

  • Catalog
  • Database
  • Table
  • Column
  • Resource
  • Workload Group

3.2、目前 Ranger 中支持的 Doris 权限

  • SHOW
  • SHOW_VIEW
  • SHOW_RESOURCES
  • SHOW_WORKLOAD_GROUP
  • LOAD
  • ALTER
  • CREATE
  • ALTER_CREATE
  • ALTER_CREATE_DROP
  • DROP
  • SELECT
  • USAGE

4、权限验证

4.1、Doris创建普通用户doris

CREATE USER doris@'%' IDENTIFIED BY 'xxxxx';

4.2、Ranger创建同名用户doris

4.3、Catalog相关权限验证

4.3.1、catalog支持的权限范围

SHOW/CREATE/ALTER/DROP。

4.3.2、给用户doris赋予所有catalog权限

这样就可以也给doris用户授予所有catalog的权限。

4.3.2.1、show catalog验证

可以看到用户doris和用户root查看到的所有catalog是一致的。

database、table、column的授权配置依此类推。

 

文章来自个人专栏
大数据技术专栏
4 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0