checkov扫描变量的自定义策略



我正在以yaml格式用checkov编写一个自定义策略。为了演示的目的,我创建了一个策略,它将检查存储帐户的名称,如果它有非字母数字字符,就会抛出错误。我的政策文件是:

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}$"

我的变量.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
}

我创建了一个策略文件夹,并只在其中保存了我的policy-file.yaml。策略文件夹位于$PWD位置。所有tf文件也都在$PWD位置。

如果我执行checkov docker命令:

docker run -t -v $PWD:/tf bridgecrew/checkov -d /tf --external-checks-dir /tf/policy

checkov内部政策;CKV_ AZURE_;能够捕捉到我的变量有一些特殊字符,并将其显示为Failed,但我的自定义策略是Passed。

如果我直接将存储帐户名保存在main.tf中,那么我的自定义策略将抛出错误并按预期工作。

你能告诉我在我的自定义策略文件中指定什么来在我传递错误的变量值时引发错误吗?

谢谢,桑托什

忽略我的问题。Checkev确实检查了像CKV_AZURE_43这样的变量值。我之前错误地配置了自定义策略"cond_type:";在自定义yaml中是必需的,以提供正确的输出。

最新更新