如何将Key Vault与Bot Composer集成 以获取HTTP请求所需机密值
Bot Composer 对接Key Vault获取敏感参数实现HTTP请求的方案
前置基础配置
- 先给你的Bot对应的Azure应用服务开启系统分配托管标识,全程不用硬编码服务主体密钥,从根源上减少敏感值泄露风险。
- 打开目标Key Vault的权限配置,给刚才生成的托管标识分配最小权限:仅开放机密的Get读取权限,不要授予更新、删除等无关权限。
项目层配置打通
不管你是用Composer导出的C#还是JS/TS版本Bot项目,都不需要在代码里写硬编码的机密拉取逻辑,直接复用Bot Framework SDK内置的Key Vault配置加载能力就行:
- 先把Key Vault的地址写进非敏感配置项,比如在
appsettings.json(C#项目)或者default.js(JS项目)里加配置项:KeyVault:VaultUri,值填你的Key Vault实例地址。 - 在配置加载入口启用Key Vault配置源,SDK会自动通过托管身份鉴权,把Key Vault里的机密值映射到全局配置上下文:只要你在配置里写的占位格式和Key Vault里的机密名匹配,运行时会自动替换成真实的机密值,不会把明文机密写进本地配置文件或者代码仓库。
Composer流设计阶段的使用方式
- 你不需要在Composer的可视化设计器里手输明文的敏感请求参数,只需要在配置HTTP请求动作时,对应该填敏感值的参数位置,用自适应表达式引用全局配置里从Key Vault拉取到的机密项即可。
- 举个实际配置例子:如果Key Vault拉取的机密被映射为配置项
settings.ThirdPartyApi.ApiSecret,那你在HTTP请求的鉴权Header位置,直接填表达式{{settings.ThirdPartyApi.ApiSecret}},运行时Bot会自动从内存配置上下文拿到解密后的机密值完成请求。
避坑提示
- 别图省事用带密钥的服务主体鉴权连接Key Vault,不然你又多了一个要保管的敏感值,完全失去了用Key Vault的意义,全程用托管身份的无密钥鉴权最稳妥。
- 本地用Composer调试时,需要先在本地用Azure CLI登录你自己的开发账号,并且给这个开发账号也分配对应Key Vault的机密读取权限,不要把真实的机密值存在本地配置里同步到云端代码仓库。
- Composer的设计预览界面不会明文展示从Key Vault拉取到的机密值,所有敏感参数只会在服务运行时的内存里加载,不会在设计操作环节被泄露。
- 如果是用Composer云端托管能力部署的Bot,不需要手动改项目代码,只需要在部署流程中关联对应的Key Vault实例,平台会自动完成托管身份的权限打通和配置加载逻辑。
内容的提问来源于stack exchange,提问作者be3112 Rahul garg
相关产品推荐
相关产品推荐

