Tworzenie warunku StringLike za pomocą Terraform
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
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