Azure Synapse Serverless Pool使用Key Vault时权限问题求助
解决Azure Synapse Serverless Pool链接服务使用Key Vault时的权限问题
1. 检查Key Vault访问策略配置
- 必须将Synapse工作区托管标识(而非个人用户标识)添加到Key Vault的访问策略中,至少授予以下权限:
- 若存储的是数据库/池名称类机密,需赋予
Get权限 - 若使用密钥认证,需赋予密钥的
Get权限
- 若存储的是数据库/池名称类机密,需赋予
- 确认权限范围覆盖你存储Serverless Pool信息的具体机密,不要仅设置Key Vault全局权限,需细化到单个机密层面。
2. 验证Key Vault机密引用的准确性
- 链接服务中填写的机密名称要和Key Vault中的完全一致,注意大小写——Key Vault机密名称是大小写敏感的,字符差异会导致权限失败
- 查看Key Vault内的机密内容,确保Serverless Pool名称、数据库名称无拼写错误,没有多余空格或特殊字符(比如默认Serverless Pool名称为
sqlondemand,不要写成SqlOnDemand)
3. 给Synapse托管标识添加Serverless Pool数据访问权限
- 链接服务测试成功不代表能读取数据,需在Serverless Pool对应的目标数据库中,为Synapse工作区托管标识添加读取权限:
登录到Serverless Pool数据库,执行以下T-SQL语句:
将CREATE USER [你的Synapse工作区名称] FROM EXTERNAL PROVIDER; ALTER ROLE db_datareader ADD MEMBER [你的Synapse工作区名称];你的Synapse工作区名称替换为实际的工作区名称即可。
4. Copy Activity的额外权限验证
- 当用Copy Activity复制视图到SQL Server时,除上述权限外,还需:
- 为Synapse托管标识赋予目标SQL Server的写入权限,比如添加
db_datawriter角色 - 如果目标SQL Server的凭据也存储在Key Vault中,同样要确保托管标识拥有该机密的
Get权限
- 为Synapse托管标识赋予目标SQL Server的写入权限,比如添加
内容的提问来源于stack exchange,提问作者Junaid Bilal
相关产品推荐
相关产品推荐

