#amazon-web-services #terraform
#amazon-web-services #terraform
Вопрос:
Я пытаюсь сгенерировать некоторую terraform для политики aws IAM. Условие в политике выглядит следующим образом
"StringLike": {
"kms:EncryptionContext:aws:cloudtrail:arn": [
"arn:aws:cloudtrail:*:aws-account-id:trail/*"
]
Я просматриваю документацию для aws_iam_policy_document
: https://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. Эй, Эван, синтаксис определенно правильный.
2. Вы видели конкретное сообщение об ошибке, когда попробовали то, что вы показали в своем вопросе здесь? Если это так, было бы полезно включить это в вопрос.
Ответ №1:
Привет, Эван, твоя логика верна, просто добавь :
Каждая конфигурация документа может иметь один или несколько 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
(Обязательно) Значения для оценки условия. Если указано несколько значений, условие соответствует, если применяется хотя бы одно из них. (То есть тесты объединяются с логической операцией «ИЛИ».)
Когда предоставляется несколько блоков условий, все они должны иметь значение true для применения инструкции политики. (Другими словами, условия объединяются с логической операцией «И».)
Вот ССЫЛКА из terraform
В дополнение к созданию политики из созданного вами документа вы используете ее следующим образом:
resource "aws_iam_policy" "example" {
policy = data.aws_iam_policy_document.example.json
}
Вот ссылка из Hashicorp