SuperAPI AI 工具集

policy-as-code

部署与运维

查看项目

更新于 10-23 02:19

技能介绍

Policy as Code 是一套关于“策略即代码”的实践指南,目标是通过代码自动化策略执行,在合规违规进入生产环境之前将其拦截。资料围绕 OPA/Rego、Kyverno、Checkov 以及 CI/CD 集成展开,提供可直接参考的策略与命令示例。

一、用途 该技能用于在基础设施即代码(IaC)变更上执行安全与合规策略,防止错误配置的 Kubernetes 工作负载被部署,在 CI/CD 流水线中为 Terraform、CloudFormation 或 Helm 自动设置护栏,落实必须一致应用的组织标准,并以自动化策略检查替代人工审批关卡。

二、主要能力

  1. Open Policy Agent(OPA)Rego 策略:资料给出多个 Rego 示例,包括禁止 S3 桶使用 public-read 或 public-read-write ACL(no-public-s3)、要求 RDS/EBS/S3 启用加密(require-rds-encryption、require-ebs-encryption、require-s3-encryption)、强制必填标签 Environment、Owner、CostCenter、DataClassification(required-tags)、限制资源部署到已批准区域(approved-regions)。
  2. Kyverno Kubernetes 策略:资料给出多个 ClusterPolicy 示例,包括要求所有 Pod 具备 app.kubernetes.io/name、app.kubernetes.io/version、team 标签(require-labels)、禁止特权容器(disallow-privileged-containers)、要求容器定义 CPU 与内存限制(require-resource-limits)、禁止使用 latest 镜像标签(disallow-latest-tag)、限制镜像来源为已批准仓库(restrict-image-registries)、要求命名空间存在 NetworkPolicy(require-networkpolicy,validationFailureAction 为 Audit)。
  3. Checkov 自定义检查:资料给出 Python 自定义检查示例,包括确保 S3 桶启用版本控制(CUSTOM_S3_001)、确保 RDS 备份保留至少 7 天(CUSTOM_RDS_001),并展示如何以 external-checks-dir 运行自定义检查、按检查 ID 运行、生成 SARIF 输出用于 GitHub Advanced Security 集成,以及跳过特定检查。

三、使用方式 资料展示的典型流程为:先执行 terraform plan -out=tfplan 并 terraform show -json tfplan > tfplan.json 生成计划 JSON;再用 opa eval --data policies/ --input tfplan.json "data.terraform.aws.s3.deny" --format pretty 评估策略;或使用 conftest test tfplan.json --policy policies/ --output table 便于 CI 集成。Checkov 侧可执行 checkov -d ./terraform --framework terraform --external-checks-dir ./custom_checks --output cli --compact,或指定检查 ID、输出 SARIF、跳过检查。Kyverno 策略以 YAML 形式定义 ClusterPolicy,通过 match、validate、pattern、preconditions 等字段描述规则。

四、适用场景 适用于对基础设施即代码变更执行安全与合规策略、阻止错误配置的 Kubernetes 工作负载部署、在 CI/CD 中为 Terraform/CloudFormation/Helm 自动设置护栏、实施组织级统一标准、以自动化策略检查替代人工审批。

五、限制 资料明确说明:本内容仅为指导与检查清单,不构成法律建议,也不能替代合格的审计人员;属于仅文档导入,上游模板与脚本未随附。资料未提供具体收费、价格、平台支持范围或效果承诺等信息。