知识卡片
验证部署了什么而不只是谁部署的
内容
只检查发起部署操作的人有没有权限是不够的——权限正常的人一样可能手滑部署错误版本,也可能账号已被攻击者控制。真正靠得住的防线是让部署环境验证”即将上线的这个工件本身”是否满足要求,比如是不是经由官方CI/CD系统签名生成的,而不是简单信任”这个请求看起来来自可信的人”。这是最小特权原则在软件供应链场景下的自然延伸:授权检查决定谁能发起部署,工件验证决定即将部署的东西本身能不能被信任,两者缺一不可。
参考来源
- 位置:《Google系统架构解密:构建安全可靠的系统》第14章《部署代码》14.3.3节(源文件:`../OREILY动物书合辑 图灵新版/_epub-src/text/part0014_split_113.html`)
- 结论依据:原文明确指出"仅验证是谁发起了部署操作是不够的,因为参与者可能会犯错误或故意部署恶意变更内容……部署环境应该验证正在部署的内容是什么",并举例GKE二进制授权默认只接受CI/CD系统签名的镜像。
- 原始内容:仅验证是谁发起了部署操作是不够的,因为参与者可能会犯错误或故意部署恶意变更内容。部署环境应该验证正在部署的内容是什么……可以使用二进制授权功能,默认情况下只接受由自身CI/CD系统签名的镜像。