本文目录导读:

针对关键信息基础设施(关基)的IaC(基础设施即代码)模板检查,需要采用安全左移和合规驱动的策略,关基的检查不仅关注代码缺陷,更关注是否满足等保2.0、关键信息基础设施安全保护条例等法规要求。
以下是针对关基IaC模板的专业检查方法与建议:
检查核心维度
检查不应仅限于语法正确性,应覆盖以下五个维度:
- 配置合规性:是否符合等保2.0、密码法、关基保护条例等要求(如加密、日志、备份)。
- 身份与访问管理:是否存在硬编码密钥、权限是否遵循最小权限原则、是否启用了IAM/RBAC。
- 网络安全:网络ACL、安全组是否过于宽松(例如
0.0.0/0),是否允许高危端口全开。 - 数据安全:存储是否加密(静态/传输中)、是否配置了数据脱敏、备份与灾备策略。
- 运行时安全:容器镜像是否扫描、主机安全配置(如SSH配置、系统基线)。
具体检查方法与工具
静态分析工具(核心手段)
这些工具可以嵌入CI/CD流水线,自动扫描IaC模板。
| 工具类型 | 推荐工具 | 检查对象 | 针对关基的特别关注点 |
|---|---|---|---|
| 云原生扫描 | Checkov (推荐) | Terraform, CloudFormation, Kubernetes, ARM | 检查是否启用了加密、日志审计、网络隔离,Checks包含CIS基准。 |
| 通用IaC扫描 | tfsec / Trivy | Terraform, CloudFormation | 快速发现硬编码密钥、开放安全组、缺少加密。 |
| K8s专用 | Kube-bench / kubeaudit | Kubernetes YAML | Pod安全策略、Seccomp、AppArmor配置是否符合等保要求。 |
| 云厂商原生 | AWS Config / Azure Policy / GCP Organization Policy | 云资源 | 创建策略即代码,防止部署不合规资源。 |
检查命令示例:
# 使用 Checkov 检查 Terraform 模板 checkov -d ./terraform/ --framework terraform # 使用 Trivy 扫描 trivy config ./terraform/
策略即代码(Policy as Code)
对于关基,不能仅依赖默认规则,需要编写自定义策略来匹配内部基线。
- 工具:OPA (Open Policy Agent) / Rego 语言。
- 检查场景:
- 存储加密:Rego规则要求所有S3 Bucket必须启用
server_side_encryption = "aws:kms",否则拒绝部署。 - 网络隔离:要求所有子网必须关联网络ACL,且不允许从
0.0.0/0访问SSH(22)或RDP(3389)。 - 审计日志:要求所有数据库集群必须启用审计日志。
- 区域限制:限制IaC只能将资源部署在指定国家/地区的可用区。
- 存储加密:Rego规则要求所有S3 Bucket必须启用
手动审查清单(结合自动化)
自动化工具无法100%覆盖业务逻辑,以下是关基必须人工复核的项目:
- 备份策略:模板中定义的备份窗口、保留周期是否满足RPO/RTO要求?是否跨AZ或跨Region?
- 密钥管理:是否使用了托管密钥服务(如AWS KMS/阿里云KMS)?密钥的轮转策略是否配置?
- 高可用与容灾:资源是否部署在单点?是否配置了负载均衡、Auto Scaling、跨可用区复制?
- 日志完整性:所有关键服务(数据库、API网关、OS)的日志是否发送到了集中日志服务(如Splunk, ELK)?日志是否被篡改保护?
- 依赖组件:使用的基础镜像、Helm Chart来源是否可信?是否有已知漏洞?
将检查嵌入工作流(建议流程)
- 开发阶段:IDE插件(如Trivy VSCode插件)实时提示。
- 提交阶段:Pre-commit hook(
pre-commit install)运行tfsec和checkov,阻止含有硬编码密码的代码提交。 - CI阶段:在Merge Request/Pull Request中触发全量扫描。
- 阻断:如果发现“高危”或“严重”级别违反自定义关基策略,则阻止合并。
- 报告:生成合规性报告,展示通过/失败项。
- 部署前复审:人工审批自动化生成的“差异报告”。
关基特定场景检查要点
| 控制点 | 违反后果示例 | |
|---|---|---|
| 数据加密 | 云硬盘、数据库、对象存储是否默认加密? | 数据泄露后无法溯源 |
| 网络隔离 | VPC内是否划分DMZ、管理区、核心数据区?是否使用PrivateLink/VPC Endpoint? | 横向移动攻击扩大 |
| 日志审计 | API访问、系统调用、数据库操作是否全部记录到日志中?日志存储是否不可变? | 无法满足等保三级审计要求 |
| 身份管理 | 是否禁用了根用户/全局管理员?是否启用了MFA? | 单一身份凭证失窃导致全系统沦陷 |
| 供应链安全 | Terraform Provider版本是否固定?是否使用了官方源之外的第三方模块? | 供应链投毒攻击 |
总结与建议
- 不要只看工具报告:工具只能检查语法和部分已知模式,关键业务逻辑(如数据分类分级、密钥使用场景)需要人工复核。
- 建立基线:为关基系统制定一份《IaC合规性基准》,明确“哪些配置是强制要求的”,并转化为Rego策略或工具规则。
- 定期审计:即使部署后,也需定期重新扫描IaC模板(因为合规要求或云服务配置会变)。
- 结合CI/CD:将检查结果作为流水线的质量门禁(Quality Gate),不满足策略的模板无法进入生产环境。
行动起点:下载 Trivy 或 Checkov,对你的现有Terraform/K8s文件夹运行一次扫描,重点关注HIGH或CRITICAL级别的网络暴露和身份认证问题,这通常是关基安全中最直接的薄弱点。