文档中心 托管Hadoop(KMR) KMR Serverless StarRocks 用户实践指南 用户实践 StarRocks 对接 Apache Ranger 行列级权限

StarRocks 对接 Apache Ranger 行列级权限

最近更新时间: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

操作流程

步骤一:Ranger 集群准备

本节仅摘录 StarRocks 对接所需的 Ranger 侧步骤。Apache Ranger 的安装、数据库配置、User Sync、高可用和备份等操作,请以 Apache Ranger 官方文档 StarRocks使用 Apache Ranger 管理权限官方文档为准。

可选择自建 Ranger 集群 或者 创建包含了Ranger服务的 KMR 集群。

1. 部署 Ranger Admin

部署 Apache Ranger 2.1.0 或更高版本,并确保 Ranger Admin Web 页面可访问。生产环境建议按照企业安全规范配置 Ranger Admin 数据库、高可用、访问控制、日志和备份。

部署完成后,访问以下地址并使用管理员账号登录:

http://<ranger-admin-host>:<ranger-admin-port>/login.jsp

Ranger Admin 默认端口为 6080

2. 安装 ranger-starrocks-plugin

如果您的Ranger集群是高可用集群,则需要在所有Ranger节点安装ranger-starrocks-plugin插件。

  1. 若您创建包含了Ranger服务的 KMR 集群,可以通过SSH方式登录KMR集群。

  2. 在 Ranger Admin 的 ews/webapp/WEB-INF/classes/ranger-plugins 目录下创建 starrocks 目录。

  3. ranger-starrocks-plugin-*.jarmysql-connector-j.jar 放入该目录。

  4. 重启 Ranger Admin。Ranger 高可用环境需要在所有 Ranger Admin 节点完成相同配置。

3. 注册 StarRocks Service Definition
  1. 从 StarRocks 官方仓库获取 ranger-servicedef-starrocks.json

  2. 根据是否安装 ranger-starrocks-plugin 设置文件中的 implClass

    • 未安装插件:"implClass": ""

    • 已安装插件:"implClass": "org.apache.ranger.services.starrocks.RangerServiceStarRocks"

  3. 使用 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
  4. 登录 Ranger Admin,在 Access Manager 页面确认已显示 STARROCKS 服务类型。

4. 创建 StarRocks Service
  1. 在 Ranger Admin 的 Access Manager 页面,单击 STARROCKS 后的添加按钮。

  2. 配置 Service 信息。

    配置项

    是否必填

    说明

    Service Name

    Ranger 中的唯一服务名称。后续必须在金山云控制台填写完全相同的名称。

    Display Name

    Ranger 页面显示名称。

    Username、Password

    使用自动补全时必填

    StarRocks FE 账号和密码,仅用于对象名称自动补全。建议使用默认激活 db_admin 角色的专用账号。

    jdbc.url

    使用自动补全时必填

    StarRocks FE 查询地址,例如 jdbc:mysql://<fe-host>:9030

  3. 如已安装 ranger-starrocks-plugin,单击 Test Connection 验证连接;未安装插件时可跳过该测试。

  4. 保存 Service。

Ranger Service 中的 Username、Password 和 JDBC 地址不用于 StarRocks FE 连接 Ranger Admin。StarRocks FE 通过控制台中配置的 Ranger Admin 地址拉取策略。

5. 配置管理员保护策略

启用 Ranger 前,应先为 StarRocks 管理员创建允许策略,并确认该账号对实例所需对象具有管理权限。建议至少完成以下检查:

  • Ranger 中存在与 StarRocks 管理员同名的用户。

  • 管理员已被加入覆盖必要 Catalog、数据库、表和系统对象的 Access Policy。

  • 管理员已获得实际运维需要的访问类型和 Delegated Admin 权限。

  • 已准备一个独立的应急管理员账号,并验证其策略配置。

6. 创建行列级策略

进入已创建的 StarRocks Service,根据业务需求创建策略:

  • 行级过滤:创建 Row-level Filter Policy,选择目标数据库和表,为指定用户或用户组设置过滤表达式,例如 region = '华东'

  • 列级脱敏:创建 Masking Policy,选择目标数据库、表和列,为指定用户或用户组选择脱敏方式。

  • 对象访问:创建 Access Policy,为用户或用户组授予访问目标对象所需的权限。

策略保存后,暂不启用 StarRocks 侧 Ranger 鉴权,继续执行下一步骤。

步骤二:在金山云控制台配置 Ranger 连接

  1. 登录金山云控制台,选择托管 Hadoop,选择 Serverless StarRocks,进入 Serverless StarRocks 控制台。

  2. 在实例列表中单击目标实例名称。

  3. 进入 集群管理 > 配置管理

  4. 在配置类型中选择 ranger-security

  5. 配置以下参数。

    配置项

    填写说明

    ranger.plugin.starrocks.service.name

    填写 Ranger 中创建的 StarRocks Service Name,例如 starrocks-prod。名称区分大小写时须保持完全一致。

    ranger.plugin.starrocks.policy.rest.url

    填写 Ranger Admin 完整地址,例如 http://192.168.10.20:6080

    ranger.plugin.starrocks.policy.source.impl

    平台预置为 org.apache.ranger.admin.client.RangerAdminRESTClient,无需修改。

  6. 单击 保存

  7. 在确认对话框中核对配置项和生效范围,然后单击 确认生效

平台将根据配置生成 ranger-starrocks-security.xml,并下发至所有 FE 节点。此时仅完成配置文件下发,Ranger 鉴权尚未启用。

如果页面提示 Ranger Admin 不可达,请检查 Ranger Admin 服务状态、地址和端口,以及 VPC、路由和安全组配置。不要在连通性异常时继续启用 Ranger 鉴权。

步骤三:启用 Ranger 鉴权

  1. 配置管理 页面将配置类型切换为 FE

  2. 搜索配置项 access_control

  3. 将参数值设置为 ranger

  4. 单击 保存,并在确认对话框中单击 确认生效

  5. 如果页面提示需要重启,按照控制台提示重启 FE。多 FE 实例请等待所有 FE 完成滚动重启。

  6. 在配置修改历史或任务中心确认配置任务执行成功。

FE 重启后会加载 Ranger 插件和 ranger-starrocks-security.xml,并从 Ranger Admin 拉取策略。

步骤四:验证配置结果

1. 验证基本访问权限

使用已在 Ranger 中授权的普通业务用户连接 StarRocks,查询允许访问的表。查询应正常返回结果。

再查询一个未授权对象,预期返回权限不足错误。

2. 验证行级过滤

使用命中 Row-level Filter Policy 的用户执行查询,例如:

SELECT region, order_id, amount
FROM sales.orders
ORDER BY order_id;

确认结果中仅包含策略允许的行。例如策略表达式为 region = '华东' 时,结果中不应出现其他区域的数据。

3. 验证列级脱敏

使用命中 Masking Policy 的用户查询敏感列,例如:

SELECT customer_name, id_card
FROM sales.customers
LIMIT 20;

确认敏感列按照 Ranger 策略返回脱敏值。再使用未命中该脱敏策略且具有明文权限的管理员账号查询,确认两类账号的结果符合预期。

4. 验证策略更新

在 Ranger 中修改一条测试策略,等待 FE 下一次拉取策略后重新执行查询,确认更新后的权限生效。策略拉取存在短暂延迟,具体时间取决于插件的轮询配置。

配置 External Catalog 鉴权(可选)

对于 Hive 等 External Catalog,可以复用 Ranger 中已有的外部 Service。仅在业务需要对外表进行 Ranger 鉴权时执行本节。

  1. 配置管理 > ranger-security 中配置 Hive Service Name 和 Ranger Admin 地址。平台生成并下发 ranger-hive-security.xml

  2. 根据控制台提示重启 FE,使外表 Ranger 配置生效。

  3. 创建 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>"
    );
  4. 对已有 External Catalog,可以执行:

    ALTER CATALOG hive_catalog_1
    SET ("ranger.plugin.hive.service.name" = "<ranger_hive_service_name>");
  5. 使用与 Ranger 用户同名的 StarRocks 用户查询外表,验证访问策略。

回退到 StarRocks 原生 RBAC

如果 Ranger 服务异常或策略配置导致业务访问异常,可以将鉴权方式回退到 StarRocks 原生 RBAC。

  1. 确认目标用户已具备必要的 StarRocks 原生角色和授权。Ranger 鉴权启用期间,应持续维护应急回退所需的 RBAC 配置。

  2. 进入 配置管理 > FE,找到 access_control

  3. 将鉴权方式切换为控制台提供的原生 RBAC 选项 native

  4. 保存并确认生效;如果页面提示需要重启,按照提示重启 FE。

  5. 使用管理员和业务用户分别验证登录、查询及管理操作。

回退完成后,StarRocks 内表及内部对象恢复使用原生 RBAC;Ranger 中的相关策略不再参与这部分对象的权限鉴定。

上一篇:Starrocks即席查询
下一篇:计算组管理
以上内容是否对您有帮助?
有帮助
没帮助