Tworzenie warunku StringLike za pomocą Terraform

Nov 12 2020

Próbuję wygenerować terraform dla zasad AWS IAM. Stan w polisie wygląda następująco

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

Przeglądam dokumentację dla aws_iam_policy_document:https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document, ale nie jest dla mnie jasne, jak napisać to w terraformie. Każda pomoc byłaby mile widziana. To moja próba

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

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

Odpowiedzi

2 MontassarBouagina Nov 12 2020 at 20:02

Witaj Evan, logika jest poprawna, wystarczy dodać:

Każda konfiguracja dokumentu może mieć jeden lub więcej 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/*"
     ]
    }
}

Każda instrukcja zasad może mieć zero lub więcej bloków warunków, z których każdy akceptuje następujące argumenty:

  • test (Wymagane) Nazwa operatora warunku IAM do oceny.
  • variable(Wymagane) Nazwa zmiennej kontekstowej, do której ma zostać zastosowany warunek. Zmienne kontekstowe mogą być standardowymi zmiennymi AWS zaczynającymi się od aws: lub zmiennymi specyficznymi dla usługi poprzedzonymi nazwą usługi.
  • values(Wymagane) Wartości, względem których ma być oceniany warunek. Jeśli podano wiele wartości, warunek jest spełniony, jeśli przynajmniej jedna z nich ma zastosowanie. (Oznacza to, że testy są łączone z operacją logiczną „LUB”).

Jeśli podano wiele bloków warunków, wszystkie muszą mieć wartość true, aby oświadczenie dotyczące zasad miało zastosowanie. (Innymi słowy, warunki są łączone z operacją logiczną „AND”).

Oto REF z terraform

IN Oprócz tworzenia polityki z dokumentu, który stworzyłeś, używasz jej w następujący sposób:

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

Oto referencja od Hashicorp