我正在用checkov的yaml格式编写一个自定义策略。为了演示的目的,我创建了一个策略,如果它有非字母数字字符,它将检查存储帐户的名称并抛出错误。我的政策文件是:
metadata:
name: "Ensure that storage account has no special characters"
category: "convention"
id: "SCV_VARIABLE_01"
definition:
resource_types:
- "azurerm_storage_account"
attribute: "name"
operator: regex_match
value: "^[a-z0-9]{3,24}$"我的variable.tf
variable "storage_account_name"{
type = string
default = "test-12324-$"
}我的main.tf看起来像:
resource "azurerm_storage_account" "storage_account" {
name = var.storage_account_name
resource_group_name = var.resource_group_name
location = var.location
}我创建了一个策略文件夹,并将我的策略文件保存在其中。策略文件夹位于$PWD位置。所有tf文件也在$PWD位置。
如果我执行checkov docker命令:
docker run -t -v $PWD:/tf bridgecrew/checkov -d /tf --external-checks-dir /tf/policycheckov内部策略"CKV_AZURE_43“能够捕捉到我的变量有一些特殊字符并显示为失败,但是我的自定义策略被传递了。
如果我在main.tf中直接保留存储帐户名,那么我的自定义策略就是抛出错误并按预期工作。
当我传递错误的变量值时,您能告诉我在我的自定义策略文件中指定什么来抛出错误吗?
谢谢,桑托什
发布于 2021-12-06 22:24:40
别管我的问题。Checkov确实检查了像CKV_AZURE_43这样的变量值。我之前错误地配置了自定义策略yaml。"cond_type:“在自定义yaml中必须提供正确的输出。
https://stackoverflow.com/questions/70192259
复制相似问题