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 秒。
- resource.lookup.timeout.value.in.ms:获取元信息的超时时间,建议填写
可以点击 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的授权配置依此类推。