最近更新时间:2026-08-10 19:20:10
本文介绍如何将用户自建的 Apache Ranger 与金山云 KMR Serverless StarRocks 实例对接,并通过 Ranger 为 StarRocks 内表配置访问策略、行级过滤策略和列级脱敏策略。
开始操作前,请完成以下准备工作。
实例与集群准备:
已创建 KMR Serverless StarRocks (要求3.3.19-ksc2.4 或更高版本)实例,并拥有该实例配置管理权限。
已自建Ranger集群,或者创建包含了Ranger服务的 KMR 集群。
Ranger部署 Apache Ranger 2.1.0 或更高版本,Ranger Admin 服务运行正常。
网络连通性:
确保 Ranger Admin 与 Serverless StarRocks 实例网络互通。请按网络规划配置 VPC、路由和安全组规则,允许 StarRocks FE 访问 Ranger Admin 服务端口,默认端口为 6080。
本节仅摘录 StarRocks 对接所需的 Ranger 侧步骤。Apache Ranger 的安装、数据库配置、User Sync、高可用和备份等操作,请以 Apache Ranger 官方文档 和 StarRocks使用 Apache Ranger 管理权限官方文档为准。
可选择自建 Ranger 集群 或者 创建包含了Ranger服务的 KMR 集群。
部署 Apache Ranger 2.1.0 或更高版本,并确保 Ranger Admin Web 页面可访问。生产环境建议按照企业安全规范配置 Ranger Admin 数据库、高可用、访问控制、日志和备份。
部署完成后,访问以下地址并使用管理员账号登录:
http://<ranger-admin-host>:<ranger-admin-port>/login.jspRanger Admin 默认端口为 6080。
如果您的Ranger集群是高可用集群,则需要在所有Ranger节点安装ranger-starrocks-plugin插件。
若您创建包含了Ranger服务的 KMR 集群,可以通过SSH方式登录KMR集群。
在 Ranger Admin 的 ews/webapp/WEB-INF/classes/ranger-plugins 目录下创建 starrocks 目录。
将 ranger-starrocks-plugin-*.jar 和 mysql-connector-j.jar 放入该目录。
重启 Ranger Admin。Ranger 高可用环境需要在所有 Ranger Admin 节点完成相同配置。
从 StarRocks 官方仓库获取 ranger-servicedef-starrocks.json。
根据是否安装 ranger-starrocks-plugin 设置文件中的 implClass:
未安装插件:"implClass": ""
已安装插件:"implClass": "org.apache.ranger.services.starrocks.RangerServiceStarRocks"
使用 Ranger 管理员账号调用 Ranger Admin 接口注册 Service Definition:
curl -u <ranger_admin_user>:<ranger_admin_password> \
-X POST \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
http://<ranger-admin-host>:<ranger-admin-port>/service/plugins/definitions \
-d @ranger-servicedef-starrocks.json登录 Ranger Admin,在 Access Manager 页面确认已显示 STARROCKS 服务类型。
在 Ranger Admin 的 Access Manager 页面,单击 STARROCKS 后的添加按钮。
配置 Service 信息。
配置项 | 是否必填 | 说明 |
|---|---|---|
Service Name | 是 | Ranger 中的唯一服务名称。后续必须在金山云控制台填写完全相同的名称。 |
Display Name | 否 | Ranger 页面显示名称。 |
Username、Password | 使用自动补全时必填 | StarRocks FE 账号和密码,仅用于对象名称自动补全。建议使用默认激活 |
jdbc.url | 使用自动补全时必填 | StarRocks FE 查询地址,例如 |
如已安装 ranger-starrocks-plugin,单击 Test Connection 验证连接;未安装插件时可跳过该测试。
保存 Service。
Ranger Service 中的 Username、Password 和 JDBC 地址不用于 StarRocks FE 连接 Ranger Admin。StarRocks FE 通过控制台中配置的 Ranger Admin 地址拉取策略。
启用 Ranger 前,应先为 StarRocks 管理员创建允许策略,并确认该账号对实例所需对象具有管理权限。建议至少完成以下检查:
Ranger 中存在与 StarRocks 管理员同名的用户。
管理员已被加入覆盖必要 Catalog、数据库、表和系统对象的 Access Policy。
管理员已获得实际运维需要的访问类型和 Delegated Admin 权限。
已准备一个独立的应急管理员账号,并验证其策略配置。
进入已创建的 StarRocks Service,根据业务需求创建策略:
行级过滤:创建 Row-level Filter Policy,选择目标数据库和表,为指定用户或用户组设置过滤表达式,例如 region = '华东'。
列级脱敏:创建 Masking Policy,选择目标数据库、表和列,为指定用户或用户组选择脱敏方式。
对象访问:创建 Access Policy,为用户或用户组授予访问目标对象所需的权限。
策略保存后,暂不启用 StarRocks 侧 Ranger 鉴权,继续执行下一步骤。
登录金山云控制台,选择托管 Hadoop,选择 Serverless StarRocks,进入 Serverless StarRocks 控制台。
在实例列表中单击目标实例名称。
进入 集群管理 > 配置管理。
在配置类型中选择 ranger-security。
配置以下参数。
配置项 | 填写说明 |
|---|---|
| 填写 Ranger 中创建的 StarRocks Service Name,例如 |
| 填写 Ranger Admin 完整地址,例如 |
| 平台预置为 |
单击 保存。
在确认对话框中核对配置项和生效范围,然后单击 确认生效。
平台将根据配置生成 ranger-starrocks-security.xml,并下发至所有 FE 节点。此时仅完成配置文件下发,Ranger 鉴权尚未启用。
如果页面提示 Ranger Admin 不可达,请检查 Ranger Admin 服务状态、地址和端口,以及 VPC、路由和安全组配置。不要在连通性异常时继续启用 Ranger 鉴权。
在 配置管理 页面将配置类型切换为 FE。
搜索配置项 access_control。
将参数值设置为 ranger。
单击 保存,并在确认对话框中单击 确认生效。
如果页面提示需要重启,按照控制台提示重启 FE。多 FE 实例请等待所有 FE 完成滚动重启。
在配置修改历史或任务中心确认配置任务执行成功。
FE 重启后会加载 Ranger 插件和 ranger-starrocks-security.xml,并从 Ranger Admin 拉取策略。
使用已在 Ranger 中授权的普通业务用户连接 StarRocks,查询允许访问的表。查询应正常返回结果。
再查询一个未授权对象,预期返回权限不足错误。
使用命中 Row-level Filter Policy 的用户执行查询,例如:
SELECT region, order_id, amount
FROM sales.orders
ORDER BY order_id;确认结果中仅包含策略允许的行。例如策略表达式为 region = '华东' 时,结果中不应出现其他区域的数据。
使用命中 Masking Policy 的用户查询敏感列,例如:
SELECT customer_name, id_card
FROM sales.customers
LIMIT 20;确认敏感列按照 Ranger 策略返回脱敏值。再使用未命中该脱敏策略且具有明文权限的管理员账号查询,确认两类账号的结果符合预期。
在 Ranger 中修改一条测试策略,等待 FE 下一次拉取策略后重新执行查询,确认更新后的权限生效。策略拉取存在短暂延迟,具体时间取决于插件的轮询配置。
对于 Hive 等 External Catalog,可以复用 Ranger 中已有的外部 Service。仅在业务需要对外表进行 Ranger 鉴权时执行本节。
在 配置管理 > ranger-security 中配置 Hive Service Name 和 Ranger Admin 地址。平台生成并下发 ranger-hive-security.xml。
根据控制台提示重启 FE,使外表 Ranger 配置生效。
创建 External Catalog 时绑定对应的 Hive Service:
CREATE EXTERNAL CATALOG hive_catalog_1
PROPERTIES (
"type" = "hive",
"hive.metastore.type" = "hive",
"hive.metastore.uris" = "thrift://<hms-host>:9083",
"ranger.plugin.hive.service.name" = "<ranger_hive_service_name>"
);对已有 External Catalog,可以执行:
ALTER CATALOG hive_catalog_1
SET ("ranger.plugin.hive.service.name" = "<ranger_hive_service_name>");使用与 Ranger 用户同名的 StarRocks 用户查询外表,验证访问策略。
如果 Ranger 服务异常或策略配置导致业务访问异常,可以将鉴权方式回退到 StarRocks 原生 RBAC。
确认目标用户已具备必要的 StarRocks 原生角色和授权。Ranger 鉴权启用期间,应持续维护应急回退所需的 RBAC 配置。
进入 配置管理 > FE,找到 access_control。
将鉴权方式切换为控制台提供的原生 RBAC 选项 native 。
保存并确认生效;如果页面提示需要重启,按照提示重启 FE。
使用管理员和业务用户分别验证登录、查询及管理操作。
回退完成后,StarRocks 内表及内部对象恢复使用原生 RBAC;Ranger 中的相关策略不再参与这部分对象的权限鉴定。