Azure DevOps存储敏感数据:安全变量与KeyVault哪种安全性更高
结论优先:KeyVault存储方案的安全性远高于流水线Library的secure variables方案,敏感数据安全要求较高的场景下更推荐使用
- 权限管控能力差异
流水线secure variables的权限通常绑定到项目/流水线层级,只要拥有对应流水线的执行权限,就可以调用所有配置好的安全变量,无法针对单个敏感数据做细粒度的权限划分。KeyVault支持给每个密钥、机密单独配置访问策略,只有被明确授权的流水线身份才能读取指定敏感数据,最小权限原则的落地能力更强,未授权的用户、流水线都无法触碰存储的敏感信息。
- 生命周期管理能力差异
流水线secure variables普遍缺少敏感数据全生命周期管理能力,密码定期轮转、操作审计、异常访问告警这类安全能力基本没有,变量的修改、调用也很难做到全链路日志留存。KeyVault天然支持敏感数据版本管理、自动到期轮转、全操作链路审计、异常访问自动告警,不仅泄露风险更低,也能满足等保、行业合规的相关要求。
- 泄露风险控制差异
流水线secure variables存储在流水线平台侧,如果出现流水线配置错误,很容易被误打印到执行日志中引发泄露,项目导出、迁移时也有被连带导出的风险。KeyVault中的敏感数据不会同步存储到流水线平台,流水线执行时只会临时拉取使用,还可以配置拉取后即时销毁的策略,大幅降低敏感数据残留、泄露的概率。
如果你的使用场景是小团队、敏感数据量少且无强制合规要求,现有secure variables方案只要做好权限管控、配置日志敏感字段屏蔽规则也可以继续使用;如果是企业级场景、敏感数据量级大、有合规要求,更建议迁移到KeyVault方案。
内容的提问来源于stack exchange,提问作者Vidya

