You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Databricks中能否将Azure AD用户映射至多个组以管理RLS与CLS?

实现Azure AD用户批量加入Databricks多业务组(基于邮箱映射)

前置条件

  • 具备Databricks工作区管理员或用户组管理权限
  • Azure AD目标用户已同步至Databricks(邮箱匹配)
  • 已在Databricks中创建好需要关联的业务组

操作步骤

1. 通过邮箱获取Databricks用户ID

使用Databricks SCIM API查询目标用户的唯一ID:

curl -n -X GET 'https://<databricks-workspace-url>/api/2.0/scim/v2/Users?filter=emails%20eq%20%22user@domain.com%22' \
-H 'Authorization: Bearer <your-access-token>'

从返回的JSON结果中提取Resources[0].id值,即为用户的Databricks ID。

2. 批量将用户添加至业务组

方式1:单组手动API调用

先查询目标业务组的ID:

curl -n -X GET 'https://<databricks-workspace-url>/api/2.0/scim/v2/Groups?filter=displayName%20eq%20%22group-name%22' \
-H 'Authorization: Bearer <your-access-token>'

再执行添加用户的PATCH请求:

curl -n -X PATCH 'https://<databricks-workspace-url>/api/2.0/scim/v2/Groups/<group-id>' \
-H 'Authorization: Bearer <your-access-token>' \
-H 'Content-Type: application/json' \
-d '{
  "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
  "Operations": [
    {
      "op": "add",
      "path": "members",
      "value": [{"value": "<user-id>"}]
    }
  ]
}'

方式2:Python脚本批量处理

适合同时添加到多组的场景:

import requests

workspace_url = "https://<databricks-workspace-url>"
token = "<your-access-token>"
headers = {"Authorization": f"Bearer {token}", "Content-Type": "application/json"}

# 配置目标信息
user_email = "user@domain.com"
target_groups = ["sales-team", "finance-team", "operations-team"]

# 获取用户ID
user_res = requests.get(
    f"{workspace_url}/api/2.0/scim/v2/Users?filter=emails eq '{user_email}'",
    headers=headers
)
user_id = user_res.json()["Resources"][0]["id"]

# 遍历组完成添加
for group_name in target_groups:
    # 获取组ID
    group_res = requests.get(
        f"{workspace_url}/api/2.0/scim/v2/Groups?filter=displayName eq '{group_name}'",
        headers=headers
    )
    group_id = group_res.json()["Resources"][0]["id"]
    
    # 执行添加操作
    patch_data = {
        "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
        "Operations": [{"op": "add", "path": "members", "value": [{"value": user_id}]}]
    }
    requests.patch(
        f"{workspace_url}/api/2.0/scim/v2/Groups/{group_id}",
        json=patch_data,
        headers=headers
    )
    print(f"用户 {user_email} 已成功加入组 {group_name}")

3. 验证用户组归属

通过API或Databricks UI确认用户已加入目标组:

curl -n -X GET 'https://<databricks-workspace-url>/api/2.0/scim/v2/Users/<user-id>' \
-H 'Authorization: Bearer <your-access-token>'

查看返回结果中的groups字段,确认所有目标组已出现在列表中。

RLS/CLS关联管理

完成用户组映射后,直接以业务组为权限主体配置安全策略:

  • 行级安全(RLS)示例:
CREATE OR REPLACE ROW FILTER POLICY sales_region_filter ON sales_db.sales_data
FOR SELECT USING (region IN (SELECT allowed_region FROM security.allowed_regions WHERE group_name = 'sales-team'))
TO `sales-team`;
  • 列级安全(CLS)示例:
CREATE OR REPLACE COLUMN MASK POLICY salary_mask ON hr_db.employees
FOR (salary DOUBLE)
USING (CASE WHEN is_member('hr-team') THEN salary ELSE '***' END)
TO `hr-team`, `finance-team`;

内容的提问来源于stack exchange,提问作者kaa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 23:27:14