Basic Authentication API凭据轮换自动安全通知方案咨询
对接不定期轮换Basic Auth密钥的第三方API的零/低人工安全同步方案
基于你现有Azure Data Factory(ADF)+Azure Key Vault(KV)的架构,按第三方可提供的对接能力从优到劣,可落地的方案如下,全程尽可能减少人工接触密钥的环节:
优先方案:第三方加密回调推送(零人工、最高安全等级)
这是不需要你方暴露额外长期访问凭据、也不需要轮询的最优实现,要求第三方配合完成以下逻辑即可:
- 你方部署一个HTTP触发的无服务器函数(Azure Function),仅对第三方的出口IP段开放访问权限,关闭匿名访问,校验请求头里的预共享签名(提前和第三方约定签名生成规则,比如用时间戳+请求体哈希做HMAC签名,避免伪造请求)
- 你方提前生成一对非对称RSA密钥,私钥存入KV且只给该函数的托管身份开放读取权限,公钥提前交付给第三方
- 第三方每次执行密钥轮换时,将新的Basic Auth凭据用你方提供的公钥加密后,POST到你方的回调端点
- 函数收到请求后先校验签名合法性,再从KV取出私钥解密得到新凭据,直接调用KV接口写入对应密钥的新版本,同时根据第三方提供的旧凭据失效窗口,给旧版本密钥设置对应的过期时间
- 你现有ADF管道不需要做任何改造:ADF本身通过托管身份从KV拉取最新版本的有效密钥即可,全程密钥不落地、没有任何人工接触环节,轮换过程无感知
次选方案:受控轮询拉取(零人工、依赖第三方提供凭据查询接口)
如果第三方不支持主动推送,但提供了可查询当前有效凭据的专用接口(可通过当前生效的Basic Auth密钥鉴权访问),可以用定时任务自动拉取更新:
- 部署时间触发的Azure Function,触发间隔根据第三方的轮换频率设置(比如第三方平均30天轮换一次,就设置每24小时轮询一次,避免触发限流)
- 函数通过托管身份从KV取出当前生效的密钥,调用第三方的凭据查询接口,比对返回的有效凭据和KV中存储的版本是否一致
- 检测到新凭据时,先拿新凭据调用第三方的业务测试接口验证有效性,验证通过后将新凭据写入KV作为新版本,旧版本凭据按失效时间设置过期规则
- 轮询逻辑必须加幂等判断,避免重复写入相同密钥产生冗余版本,同时配置异常告警:连续3次轮询失败、新凭据验证失败时立刻推送告警给运维人员
兜底方案:受控入口提交(极低人工、适配第三方仅能人工通知的场景)
如果第三方既不支持推送也不提供查询接口,只能人工同步新密钥时,不要走邮件、即时通讯等明文渠道传输密钥,做最小权限的提交入口:
- 搭建仅对第三方负责密钥轮换的运维人员开放的提交表单,表单后端直接对接KV写入接口,提交人只有提交新密钥的权限,没有读取、修改已有密钥的权限
- 表单收到新密钥提交后,后端自动调用第三方测试接口验证密钥有效性,验证通过再写入KV,验证失败直接返回错误给提交人,同时通知你方运维
- 写入KV后自动触发一次ADF测试管道运行,确认业务调用正常后将旧密钥设置为过期,全程不需要你方人员接触明文密钥
所有方案必须遵守的安全基线
- 所有访问KV的服务(ADF、函数、自动化任务)全部启用系统分配托管身份做鉴权,禁止在代码、配置项中硬编码任何访问凭据
- KV必须开启软删除和清除保护,避免误删密钥导致业务中断
- 开启KV的全量审计日志,所有密钥的读取、写入、更新操作全部留痕,可追溯操作主体和时间
- 禁止任何人通过本地终端、聊天工具、邮件等渠道传输明文密钥,所有密钥流转全程加密
- 密钥更新后必须自动完成可用性校验,校验失败自动回滚到上一个有效版本并触发告警
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

