如何使用开放策略代理(OPA)检测terrform代码中的非法密码处理?



我正在使用Terraform创建RDS,使用的代码看起来像这样:

data "aws_secretsmanager_secret_version" "creds" {
# Fill in the name you gave to your secret
secret_id = "db-creds"
}
locals {
db_creds = jsondecode(
data.aws_secretsmanager_secret_version.creds.secret_string
)
}
resource "aws_db_instance" "example" {
engine               = "mysql"
engine_version       = "5.7"
instance_class       = "db.t2.micro"
name                 = "example"
# Set the secrets from AWS Secrets Manager
username = local.db_creds.username
password = local.db_creds.password
}

在OPA中使用rego,如果密码不是如上所示从秘密管理器传递(并通过硬编码密码等非法方式传递),我该如何引发错误?

Terraform计划输出只显示密码,而不管它是通过硬编码值还是通过秘密管理器获得的-因此我感到困惑。

OPA通常在计划文件级别上工作,因此这是不可能的。基于opa的conftest项目允许您在HCL上编写转换为JSON的策略,因此这可能是一个选项,具体取决于您的情况。

最新更新