Azure Data Factory实时模式下使用KeyVault链接服务报NotFound错误
解决实时模式Data Factory引用KeyVault机密报错DEDICATED_DPERRORCODE0的问题
针对实时模式ADF(adf-qa)引用KeyVault机密失败,但Git模式ADF(adf-dev)配置相同却正常的问题,以下是针对性排查和解决步骤:
1. 检查KeyVault访问策略权限
- 确认ADF系统托管标识的KeyVault访问策略中,已明确授予机密的Get和List权限,且权限范围覆盖目标机密(选择"所有机密"或指定正确机密名称)。注意:KeyVault的RBAC角色(如Contributor)无法替代访问策略的机密权限,两者需同时配置。
- 验证添加的身份为ADF的系统托管标识,而非服务主体。实时模式ADF默认使用系统托管标识访问KeyVault,误加服务主体会导致权限失效。
2. 验证机密引用准确性
- 确保SQL链接服务中引用的机密名称与KeyVault中的名称完全匹配,包括大小写、特殊字符(KeyVault机密名称大小写敏感)。
- 尝试两种机密引用格式测试:
- 完整URI格式:
@Microsoft.KeyVault(SecretUri=https://kv-common.vault.azure.net/secrets/your-secret-name/) - 分离参数格式:
@Microsoft.KeyVault(VaultName=kv-common;SecretName=your-secret-name)
- 完整URI格式:
3. 处理实时模式ADF的特殊配置问题
- 实时模式ADF可能存在配置缓存,尝试删除并重新创建KeyVault链接服务,再重新配置SQL链接服务,避免旧缓存干扰。
- 确认ADF与KeyVault处于完全相同的Azure区域(如均为"East Asia",而非跨细分区域),跨区域访问可能存在隐性限制。
- 查看KeyVault的Azure活动日志,搜索"Get Secret"操作,定位失败请求的身份信息及具体错误原因(如权限不足、机密不存在),精准定位问题。
4. 对比两种模式的配置差异
- 导出adf-dev的SQL链接服务和KeyVault链接服务的ARM模板,与adf-qa的配置逐一对比,重点检查:
- KeyVault链接服务的
enableManagedIdentity是否设为true - SQL链接服务中机密引用的参数是否完全一致
- 是否存在Git模式下通过ARM部署自动设置,但实时模式需手动配置的隐藏参数
- KeyVault链接服务的
内容的提问来源于stack exchange,提问作者mreyes
相关产品推荐
相关产品推荐

