teamiumtree/iac-security-patterns
GitHub: teamiumtree/iac-security-patterns
一个面向 GCP/Pulumi 的基础设施即代码安全模式库,通过可复用的代码示例和测试覆盖 IAM 权限覆盖、CI 密钥管理、资源漂移和容器供应链等高风险场景。
Stars: 0 | Forks: 0
# IaC 安全模式
这是一个包含 Pulumi/GCP 模式的小型库,专门针对基础设施即代码中那些细微错误会导致安全事件(而不仅仅是构建失败)的部分。每个模式的编写包含:**其阻止的故障模式**、一个**最小化的通用代码示例**,以及在适用时提供能**防止该错误再次发生的测试**。
## 模式列表
| 模式 | 阻止的问题 |
|---|---|
| **[authoritative-iam](authoritative-iam/)** | 权威 IAM 绑定悄无声息地互相覆盖成员——即那种“为什么那个角色一夜之间就失去了成员?”的故障。包含一个 **AST 回归测试**,如果某个角色再次出现第二个权威绑定,CI 就会失败。 |
| **[keyless-ci-wif](keyless-ci-wif/)** | CI 中长期存活的 Service Account **JSON 密钥**。使用 Workload Identity Federation 替代它们,并将信任固定在**不可变**的仓库声明上,这样仓库重命名或转移就无法劫持部署身份。 |
| **[adopting-clickops-into-iac](adopting-clickops-into-iac/)** | 失去对在控制台中手动创建的资源的控制。以**最小的爆炸半径**将它们纳入 Pulumi——强制执行一两个不变式,其余一切都交由操作员生命周期所有。 |
| **[binary-authorization](binary-authorization/)** | 未经验证的容器镜像进入生产环境。优先以**试运行模式**建立 Binary Authorization 策略,并提供记录在案的强制执行路径和风险接受备忘录。 |
## 为什么是这四个
它们是我见过的“部署成功”与“资产实际安全”之间差距造成影响最严重的模式:
- **IAM 权限**是大多数人最容易弄错的地方,因为这种故障是*悄无声息且具有延迟性*的——成员会在*下一次*不相关的部署中消失,而不是在导致该问题的那一次部署中。
- **CI 凭据**是你拥有的最高价值机密;泄露的部署密钥意味着满盘皆输,因此我们的目标根本就是不拥有它。
- **点击操作漂移**在任何真实的组织中都是不可避免的;技巧在于*安全地*接纳它,而不是要么无视它,要么重建它并导致故障。
- **供应链**(到底允许运行什么镜像)是大多数基础设施资产都会跳过的控制措施,而优先试运行是你在第一天添加它时不会破坏每次部署的方法。
## 关于代码的说明
每个示例都为了突出模式进行了精简。真实的 stack 会有更多的连接配置(配置管道、输出、边缘测试);为了使模式本身清晰易读,这些内容被刻意省略了。将这些内容整合在一起的配套架构位于 **[gcp-pulumi-reference-architecture](https://github.com/teamiumtree/gcp-pulumi-reference-architecture)**。
标签:CI/CD安全, GCP, IAM配置, Llama, Pulumi, 安全自动化测试