如何授权Azure Synapse托管标识访问management.azure.com API以操作SQL池?
解决Azure Synapse托管身份权限不足问题
核心问题
你的系统分配托管身份缺少对目标专用SQL池的Microsoft.Synapse/workspaces/sqlPools/read权限,同时要完成暂停/恢复操作,还需额外的pause/action和resume/action权限。
所需权限说明
要实现完整的定时暂停/恢复流程,托管身份需具备以下权限:
- 状态检查:
Microsoft.Synapse/workspaces/sqlPools/read - 暂停操作:
Microsoft.Synapse/workspaces/sqlPools/pause/action - 恢复操作:
Microsoft.Synapse/workspaces/sqlPools/resume/action
推荐直接使用内置的Synapse SQL池管理员角色,该角色包含上述所有必要权限;若遵循最小权限原则,可创建自定义角色仅包含所需动作。
授权操作步骤
获取托管身份对象ID
- 打开Azure Synapse工作区的概述页面
- 在右侧托管标识区域,复制系统分配的对象ID(即错误信息中的
object id值)
为专用SQL池分配角色
- 进入目标专用SQL池的Azure门户页面,选择左侧菜单的访问控制(IAM)
- 点击添加 -> 添加角色分配
- 在角色选项卡中,搜索并选择
Synapse SQL池管理员(或自定义角色) - 在成员选项卡中,选择托管标识,点击选择成员
- 在弹窗中搜索并选中你的Synapse工作区系统托管身份(或粘贴对象ID直接定位)
- 依次点击选择 -> 查看 + 分配完成配置
等待权限生效
角色分配后通常需要5-10分钟同步,之后重新运行管道即可。
命令行快速授权(可选)
使用Azure CLI执行以下命令(替换占位符为你的实际资源信息):
az role assignment create \ --assignee <托管身份对象ID> \ --role "Synapse SQL池管理员" \ --scope "/subscriptions/<订阅ID>/resourceGroups/<资源组名>/providers/Microsoft.Synapse/workspaces/<工作区名>/sqlPools/<SQL池名>"
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

