如何通过REST API修改Azure Databricks SQL查询权限?
如何通过编程修改Azure Databricks SQL查询权限
1. 是否可以通过编程方式修改Azure Databricks的查询权限?
可以,Azure Databricks提供了专门的Databricks SQL权限API来管理SQL查询的访问权限,支持通过编程方式修改(包括分配CAN_MANAGE权限)。
2. 具体操作方法
需要使用Databricks SQL权限API的set端点,以下是详细步骤和示例代码:
核心前提
- 操作使用的个人访问令牌(PAT)必须拥有目标查询的
CAN_MANAGE权限,或者令牌持有者是工作区管理员。 - 权限层级为累积制:
CAN_MANAGE包含CAN_RUN和CAN_VIEW权限,无需重复配置。
示例代码(Python)
import requests import json # 替换为你的实际信息 DATABRICKS_WORKSPACE_HOST = "xxx.azuredatabricks.net" TARGET_QUERY_ID = "你的查询ID" PERSONAL_ACCESS_TOKEN = "你的PAT令牌" # 构建请求头 headers = { "Authorization": f"Bearer {PERSONAL_ACCESS_TOKEN}", "Content-Type": "application/json" } # 权限配置:可同时添加多个用户/组 permission_payload = { "access_control_list": [ # 给指定用户分配CAN_MANAGE权限 { "user_name": "target-user@example.com", "permission_level": "CAN_MANAGE" }, # 可选:给指定组分配权限 # { # "group_name": "data-analyst-group", # "permission_level": "CAN_RUN" # } ] } # 构建API请求URL api_url = f"https://{DATABRICKS_WORKSPACE_HOST}/api/2.0/sql/permissions/queries/{TARGET_QUERY_ID}" # 发送POST请求设置权限 response = requests.post(api_url, headers=headers, data=json.dumps(permission_payload)) # 处理响应 if response.status_code == 200: print("查询权限设置成功") else: print(f"权限设置失败,错误信息:{response.text}")
关键注意事项
set端点会覆盖当前查询的所有权限配置,如果需要保留原有权限,需先调用get端点(GET /api/2.0/sql/permissions/queries/{query_id})获取现有ACL,将新权限项合并后再传入set请求。- 通用权限API(
/api/2.0/permissions)不支持SQL查询对象,必须使用专门的Databricks SQL权限API路径。
内容的提问来源于stack exchange,提问作者followingell
相关产品推荐
相关产品推荐

