文档中心 托管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-*.jar 和 mysql-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即席查询
下一篇:计算组管理
以上内容是否对您有帮助?
有帮助
没帮助