用途:为 Azure 上的 IaC 流水线(GitHub Actions、Azure DevOps、GitLab)做安全设计与加固,把配置错误拦截在 PR 评审阶段,而非部署后由 Defender for Cloud 发现。不适用于仅做 K8s 准入控制、通用 CI/CD 架构或应用层安全。
主要能力:流水线身份用 OIDC 联合替代客户端密钥,并按环境/分支固定主体;PR 前扫描采用 Microsoft Security DevOps(MSDO)Action/Extension,捆绑 template-analyzer、checkov、terrascan、trivy、bandit、ESLint security 及 CredScan 密钥扫描;策略即代码用 Azure Policy 的 Audit/Deny 模式,CI 侧通过 az policy what-if 或 az deployment what-if 预检;Defender for Cloud DevOps Security 连接器汇总 IaC、密钥、代码与依赖发现;漂移检测依赖 Defender for Cloud、定时 terraform plan 与 AKS 上的 Flux/ArgoCD;供应链含签名提交、依赖审查、Notation/cosign 制品签名与模块注册表白名单。
Bicep 要点:CI 中运行 bicep build 与 bicep lint;用 template specs 复用并版本化共享模式;用 deployment stacks 的 denySettings 防止人工漂移;模块走私有 ACR 或 Bicep 注册表并签名。Terraform 要点:状态存于带私有终点的 Azure Storage,启用 Customer Lockbox、RBAC、软删除、版本控制与锁定;固定 provider 版本;CI 用 tflint 与 checkov(tfsec 已弃用,由 trivy 替代);plan 产物贴到 PR,Apply 需审批;定时 plan 检测漂移。
限制与护栏:禁止长期密钥,一律 OIDC;流水线身份不得为订阅 Owner,按 RG/资源范围授权;Terraform 状态文件明文含密钥,后端加固不可省略;仅 Audit 模式策略不足,关键控制需 Deny;分支保护须有强制人工评审;MSDO 不替代各语言 linter;Defender DevOps Security 需连接器与每仓库负责人。常见反模式包括在 GitHub Actions 存服务主体密钥、订阅级 Contributor、跳过 what-if、状态存默认公开存储账户、关闭 push-protection、Action 固定 @main、provider 版本随机、GitOps 在生产关闭协调。具体收费、价格与平台支持范围资料未提供。