自定义Checkov策略未生效:EC2实例描述检查无失败输出求助
问题分析与解决方案
核心问题
你的自定义Checkov策略未生效有两个关键原因:
- 命令参数错误:使用了
-c参数加载自定义规则,但该参数实际用于指定Checkov的配置文件,而非自定义规则目录。 - 规则属性路径错误:Terraform的
aws_instance资源没有直接的description属性,描述需通过tags中的Description标签定义,原规则检查的属性不存在。
修复步骤
1. 修正自定义规则加载命令
将原命令中的-c替换为--external-checks-dir,指定存放自定义规则的目录:
checkov -f terraform/main.tf --external-checks-dir checkov/
2. 更新Checkov规则定义
修改checkov/checkov.yml中的规则,将检查目标改为tags.Description属性:
--- metadata: name: "EC2 Instance must have a Description tag" id: "CKV2_AWS_1" category: "GENERAL_SECURITY" guideline: "All EC2 instances should have a Description tag that identifies the purpose of the instance." definition: cond_type: "attribute" resource_types: - "aws_instance" attribute: "tags.Description" operator: "exists"
3. 验证效果
运行修正后的命令后,由于你的EC2实例未配置Description标签,Checkov会输出类似如下的失败结果:
Check: CKV2_AWS_1: "EC2 Instance must have a Description tag" FAILED for resource: aws_instance.example File: /terraform/main.tf:3-9 Guide: All EC2 instances should have a Description tag that identifies the purpose of the instance.
内容的提问来源于stack exchange,提问作者Arun Lal
相关产品推荐
相关产品推荐

