Azure Data Factory集成Key Vault存储服务账号密码配置异常问询
解决ADF链接服务引用Key Vault后JSON格式异常、敏感信息暴露的问题
嘿,我之前在配置ADF链接服务用Key Vault存本地SQL Server凭证的时候也踩过类似的坑,给你分析下可能的原因和解决办法:
1. 高级选项里的JSON配置不符合ADF规范
当你改用Key Vault引用凭证时,链接服务的JSON结构需要严格遵循ADF的密钥引用格式,不能混合硬编码和密钥引用的配置。你可能是在JSON里保留了原来的userName和password字段,或者connectionString的写法不对。
正确的SQL Server链接服务JSON应该是这样的(重点看connectionString部分):
{ "name": "YourOnPremSQLService", "type": "Microsoft.DataFactory/factories/linkedservices", "properties": { "type": "SqlServer", "typeProperties": { "connectionString": "Server=你的本地SQL服务器地址;Database=目标数据库;User ID=@Secret('sql-service-username');Password=@Secret('sql-service-password');", "encryptedCredential": "这里是配置自托管IR后生成的加密凭证,不要手动修改" }, "connectVia": { "referenceName": "你的自托管集成运行时名称", "type": "IntegrationRuntimeReference" } } }
注意:@Secret('secret-name')是ADF引用Key Vault密钥的固定语法,必须严格按照这个格式写,而且要确保Key Vault里已经创建了对应的secret。
2. Key Vault的访问权限配置不到位
如果ADF的托管身份没有Key Vault的Secret读取权限,ADF无法正常获取密钥,就可能会 fallback 到你之前硬编码的凭证,导致JSON里依然显示用户名和密码。
解决步骤:
- 打开你的Azure Key Vault,进入「访问策略」
- 点击「添加访问策略」,选择「Secret权限」里的「Get」操作
- 在「主体」里搜索你的ADF工厂的托管身份(名字就是ADF工厂的名称),添加后保存
3. 编辑链接服务的操作顺序有误
如果你是先填了硬编码的用户名密码,再去高级选项修改JSON,ADF可能会自动保留原来的硬编码字段,导致JSON结构混乱。
正确的操作流程应该是:
- 创建新的链接服务时,先选择「SQL Server」类型
- 在「身份验证类型」选择「SQL身份验证」,然后点击「密码」旁边的「从Azure Key Vault中引用机密」
- 选择你已经创建好的Key Vault链接服务,再选择对应的用户名和密码的secret
- 最后再去「高级」选项里调整JSON(如果需要的话),不要先填硬编码再改
4. 冗余字段未清理
检查你的链接服务JSON里是否还存在userName、password这类硬编码的字段,如果有,一定要删掉!这些冗余字段会导致ADF解析异常,同时暴露敏感信息。
验证步骤
- 保存链接服务后,点击「测试连接」,确认能正常连接到本地SQL Server
- 再次查看链接服务的JSON定义,确认没有硬编码的用户名和密码,只有
connectionString里的@Secret引用 - 去Key Vault的「日志」里查看,确认ADF的托管身份成功执行了
GET /secrets/xxx的操作
内容的提问来源于stack exchange,提问作者emie
相关产品推荐
相关产品推荐

