使用Terraform创建StringLike条件

时间:2020-11-11 16:16:58

标签: amazon-web-services terraform

我正在尝试为aws IAM策略生成一些地形。政策中的条件看起来像这样

"StringLike": {
 "kms:EncryptionContext:aws:cloudtrail:arn": [
 "arn:aws:cloudtrail:*:aws-account-id:trail/*"
 ]

我正在查看aws_iam_policy_documenthttps://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document的文档,但是对于如何用terraform编写此文档,我不清楚。任何帮助将不胜感激。这是我的尝试

condition {
        test = "StringLike"
        variable = "kms:EncryptionContext:aws:cloudtrail:arn"

        values = [
            "arn:aws:cloudtrail:*:aws-account-id:trail/*"
        ]
    }

1 个答案:

答案 0 :(得分:2)

埃文你好,您的逻辑只是添加:

每个文档配置可能有一个或多个statement

data "aws_iam_policy_document" "example" {
  statement {
    actions = [
      "*", *//specify your actions here*
    ]

    resources = [
      "*", *//specify your resources here*
    ]
    condition {
     test = "StringLike"
     variable = "kms:EncryptionContext:aws:cloudtrail:arn"

     values = [
        "arn:aws:cloudtrail:*:aws-account-id:trail/*"
     ]
    }
}

每个策略语句可能具有零个或多个条件块,每个条件块都接受以下参数:

  • test(必需)要评估的IAM条件运算符的名称。
  • variable(必填)要应用条件的上下文变量的名称。上下文变量可以是以aws:开头的标准AWS变量,也可以是带有服务名称前缀的特定于服务的变量。
  • values(必需)用于评估条件的值。如果提供了多个值,则条件匹配(如果其中至少一个适用)。 (也就是说,将测试与“ OR”布尔运算结合在一起。)

提供多个条件块时,它们必须全部评估为true才能应用策略声明。 (换句话说,条件与“ AND”布尔运算结合在一起。)

这是terraform的REF

另外,您还可以从创建的文档中创建策略,如下所示:

resource "aws_iam_policy" "example" {
  policy = data.aws_iam_policy_document.example.json
}

这里是Hashicorp的推荐人