Erstellen einer StringLike-Bedingung mit Terraform
Ich versuche, eine Terraform für eine aws-IAM-Richtlinie zu generieren. Die Bedingung in der Richtlinie sieht folgendermaßen aus
"StringLike": {
"kms:EncryptionContext:aws:cloudtrail:arn": [
"arn:aws:cloudtrail:*:aws-account-id:trail/*"
]
Ich schaue in der Dokumentation nach aws_iam_policy_document:https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document, aber mir ist nicht klar, wie ich das in Terraform schreiben soll. Jede Hilfe wäre sehr dankbar. Das ist mein Versuch
condition {
test = "StringLike"
variable = "kms:EncryptionContext:aws:cloudtrail:arn"
values = [
"arn:aws:cloudtrail:*:aws-account-id:trail/*"
]
}
Antworten
Hallo Evan, deine Logik ist richtig, nur um hinzuzufügen:
Jede Dokumentkonfiguration kann eine oder mehrere haben 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/*"
]
}
}
Jede Richtlinienanweisung kann null oder mehr Bedingungsblöcke enthalten, die jeweils die folgenden Argumente akzeptieren:
test(Erforderlich) Der Name des auszuwertenden IAM-Bedingungsoperators.variable(Erforderlich) Der Name einer Kontextvariablen, auf die die Bedingung angewendet werden soll. Kontextvariablen können entweder Standard-AWS-Variablen sein, die mit aws: beginnen, oder dienstspezifische Variablen, denen der Dienstname vorangestellt ist.values(Erforderlich) Die Werte, anhand derer die Bedingung bewertet werden soll. Wenn mehrere Werte angegeben werden, stimmt die Bedingung überein, wenn mindestens einer von ihnen zutrifft. (Das heißt, die Tests werden mit der booleschen Operation "OR" kombiniert.)
Wenn mehrere Bedingungsblöcke bereitgestellt werden, müssen alle als wahr ausgewertet werden, damit die Richtlinienanweisung angewendet wird. (Mit anderen Worten, die Bedingungen werden mit der booleschen Operation "AND" kombiniert.)
Hier ist der REF von Terraform
IN Um die Richtlinie aus dem von Ihnen erstellten Dokument zu erstellen, verwenden Sie sie wie folgt:
resource "aws_iam_policy" "example" {
policy = data.aws_iam_policy_document.example.json
}
Hier ist ein Schiedsrichter von Hashicorp