Créer une condition StringLike avec Terraform

Nov 12 2020

J'essaie de générer une terraform pour une stratégie AWS IAM. La condition de la politique ressemble à ceci

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

Je regarde la documentation pour aws_iam_policy_document:https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document, mais je ne sais pas comment écrire cela en terraform. Toute aide serait grandement appréciée. C'est ma tentative

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

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

Réponses

2 MontassarBouagina Nov 12 2020 at 20:02

Bonjour Evan ta logique est juste d'ajouter:

Chaque configuration de document peut avoir un ou plusieurs 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/*"
     ]
    }
}

Chaque déclaration de politique peut avoir zéro ou plusieurs blocs de conditions, qui acceptent chacun les arguments suivants:

  • test (Obligatoire) Nom de l'opérateur de condition IAM à évaluer.
  • variable(Obligatoire) Le nom d'une variable de contexte à laquelle appliquer la condition. Les variables de contexte peuvent être des variables AWS standard commençant par aws: ou des variables spécifiques au service précédées du nom du service.
  • values(Obligatoire) Les valeurs par rapport auxquelles évaluer la condition. Si plusieurs valeurs sont fournies, la condition correspond si au moins l'une d'entre elles s'applique. (Autrement dit, les tests sont combinés avec l'opération booléenne "OR".)

Lorsque plusieurs blocs de conditions sont fournis, ils doivent tous avoir la valeur true pour que la déclaration de stratégie s'applique. (En d'autres termes, les conditions sont combinées avec l'opération booléenne "AND".)

Voici le REF de terraform

En plus de créer la politique à partir du document que vous avez créé, vous l'utilisez comme ceci:

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

Voici un ref de Hashicorp