Comment attacher une stratégie gérée IAM à un rôle IAM dans AWS CloudFormation ?

Date de la dernière mise à jour : 22/02/2021

Je souhaite ajouter une stratégie gérée AWS Identity and Access Management (IAM) existante ou nouvelle à un rôle IAM existant ou nouveau dans AWS CloudFormation.

Brève description

Pour ajouter une stratégie IAM gérée existante ou nouvelle à une nouvelle ressource de rôle IAM, utilisez la propriété ManagedPolicyArns applicable au type de ressource AWS::IAM::Role. Pour ajouter une nouvelle stratégie IAM gérée à une ressource de rôle IAM existante, utilisez la propriété Roles applicable au type de ressource AWS::IAM::ManagedPolicy.

Votre stratégie IAM gérée peut être une stratégie gérée par AWS ou une stratégie gérée par le client.

Important : vous pouvez attacher jusqu'à 10 stratégies gérées à un rôle ou un utilisateur IAM. La taille de chaque stratégie gérée ne peut pas dépasser 6 144 caractères. Pour plus d'informations, consultez Quotas IAM et STS.

En fonction de la situation, effectuez les étapes indiquées dans l’une des sections suivantes :

  • Ajout d’une stratégie IAM gérée existante à un nouveau rôle IAM
  • Ajout d’une nouvelle stratégie IAM gérée à un nouveau rôle IAM
  • Ajout d’une nouvelle stratégie IAM gérée à un rôle IAM existant

Résolution

Ajout d’une stratégie IAM gérée existante à un nouveau rôle IAM

1.    Dans votre modèle AWS CloudFormation, créez un ou plusieurs paramètres que vous pourrez utiliser pour transmettre l'Amazon Resource Name (ARN) de votre stratégie IAM gérée. Consultez les exemples JSON et YAML suivants.

JSON :

{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Parameters": {
        "awsExampleManagedPolicyParameterOne": {
            "Type": "String",
            "Description": "ARN of the first IAM Managed Policy to add to the role"
        },
        "awsExampleManagedPolicyParameterTwo": {
            "Type": "String",
            "Description": "ARN of the second IAM Managed Policy to add to the role"
        }
    }
}

YAML :

Parameters:
  awsExampleManagedPolicyParameterOne:
    Type: String
    Description: 'ARN of the first IAM Managed Policy to add to the role'
  awsExampleManagedPolicyParameterTwo:
    Type: String
    Description: 'ARN of the second IAM Managed Policy to add to the role'

2.    Dans la section Resources (Ressources) de votre modèle, pour la ressource de type AWS። IAM። Role, définissez l’option Ref (Réf.) sur les paramètres que vous avez créés à l'étape 1. Pour cet exemple, il s'agit des paramètres awsExampleManagedPolicyParameterOne et awsExampleManagedPolicyParameterTwo. Consultez les exemples JSON et YAML suivants.

JSON :

{
    "Resources": {
        "RootRole": {
            "Type": "AWS::IAM::Role",
            "Properties": {
                "AssumeRolePolicyDocument": {
                    "Version": "2012-10-17",
                    "Statement": [
                        {
                            "Effect": "Allow",
                            "Principal": {
                                "Service": [
                                    "ec2.amazonaws.com"
                                ]
                            },
                            "Action": [
                                "sts:AssumeRole"
                            ]
                        }
                    ]
                },
                "Path": "/",
                "ManagedPolicyArns": [
                    {
                        "Ref": "awsExampleManagedPolicyParameterOne"
                    },
                    {
                        "Ref": "awsExampleManagedPolicyParameterTwo"
                    }
                ]
            }
        }
    }
}

YAML :

Resources:
  RootRole:
    Type: 'AWS::IAM::Role'
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service:
                - ec2.amazonaws.com
            Action:
              - 'sts:AssumeRole'
      Path: /
      ManagedPolicyArns:
        - !Ref awsExampleManagedPolicyParameterOne
        - !Ref awsExampleManagedPolicyParameterTwo

3.    Pour appliquer votre stratégie IAM gérée existante à votre nouveau rôle IAM, créez une pile ou mettez à jour une pile existante en fonction de votre modèle AWS CloudFormation modifié.

Ajout d’une nouvelle stratégie IAM gérée à un nouveau rôle IAM

1.    Dans votre modèle AWS CloudFormation, créez une stratégie en utilisant la ressource AWS::IAM::ManagedPolicy. Consultez les exemples JSON et YAML suivants.

JSON :

{
    "SampleManagedPolicy": {
        "Type": "AWS::IAM::ManagedPolicy",
        "Properties": {
            "PolicyDocument": {
                "Version": "2012-10-17",
                "Statement": [
                    {
                        "Sid": "AllowAllUsersToListAccounts",
                        "Effect": "Allow",
                        "Action": [
                            "iam:ListAccountAliases",
                            "iam:ListUsers",
                            "iam:GetAccountSummary"
                        ],
                        "Resource": "*"
                    }
                ]
            }
        }
    }
}

YAML :

SampleManagedPolicy:
    Type: AWS::IAM::ManagedPolicy
    Properties:
      PolicyDocument:
        Version: '2012-10-17'
        Statement:
          -
            Sid: AllowAllUsersToListAccounts
            Effect: Allow
            Action:
              - iam:ListAccountAliases
              - iam:ListUsers
              - iam:GetAccountSummary
            Resource: "*"

2.    Adoptez la syntaxe d'identification logique !Ref pour associer la ressource applicable à la stratégie IAM gérée à la ressource AWS::IAM::Role.

Par exemple, définissez l’option Ref (Réf.) sur l’identifiant logique que vous avez créé à l’étape 1 (SampleManagedPolicy). Consultez les exemples JSON et YAML suivants.

JSON :

{
    "RootRole": {
        "Type": "AWS::IAM::Role",
        "Properties": {
            "AssumeRolePolicyDocument": {
                "Version": "2012-10-17",
                "Statement": [
                    {
                        "Effect": "Allow",
                        "Principal": {
                            "Service": [
                                "ec2.amazonaws.com"
                            ]
                        },
                        "Action": [
                            "sts:AssumeRole"
                        ]
                    }
                ]
            },
            "Path": "/",
            "ManagedPolicyArns": [
                {
                    "Ref": "SampleManagedPolicy"
                }
            ]
        }
    }
}

YAML :

RootRole:
    Type: 'AWS::IAM::Role'
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service:
                - ec2.amazonaws.com
            Action:
              - 'sts:AssumeRole'
      Path: /
      ManagedPolicyArns:
        - !Ref SampleManagedPolicy

3.    Pour appliquer votre nouvelle stratégie IAM gérée à votre nouveau rôle IAM, créez une pile ou mettez à jour une pile existante en fonction de votre modèle AWS CloudFormation modifié.

Ajout d’une nouvelle stratégie IAM gérée à un rôle IAM existant

1.    Dans votre modèle AWS CloudFormation, créez un paramètre que vous pourrez utiliser pour transmettre le nom de vos rôles existants. Consultez les exemples JSON et YAML suivants.

JSON :

{
    "Parameters": {
        "awsExampleRolesParameter": {
            "Type": "CommaDelimitedList",
            "Description": "Names of existing Roles you want to add to the newly created Managed Policy"
        }
    }
}

YAML :

Parameters:
  awsExampleRolesParameter:
    Type: CommaDelimitedList
    Description: Names of existing Roles you want to add to the newly created Managed Policy

2.    Dans la section Resources (Ressources) de votre modèle, pour la ressource de type AWS::IAM::ManagedPolicy, définissez l’option Ref (Réf.) sur le paramètre que vous avez créé à l’étape 1 (awsExampleRolesParameter). Consultez les exemples JSON et YAML suivants.

JSON :

{
    "Resources": {
        "SampleManagedPolicy": {
            "Type": "AWS::IAM::ManagedPolicy",
            "Properties": {
                "PolicyDocument": {
                    "Version": "2012-10-17",
                    "Statement": [
                        {
                            "Sid": "AllowAllUsersToListAccounts",
                            "Effect": "Allow",
                            "Action": [
                                "iam:ListAccountAliases",
                                "iam:ListUsers",
                                "iam:GetAccountSummary"
                            ],
                            "Resource": "*"
                        }
                    ]
                },
                "Roles": {
                    "Ref": "awsExampleRolesParameter"
                }
            }
        }
    }
}

YAML :

Resources:
  SampleManagedPolicy:
    Type: 'AWS::IAM::ManagedPolicy'
    Properties:
      PolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Sid: AllowAllUsersToListAccounts
            Effect: Allow
            Action:
              - 'iam:ListAccountAliases'
              - 'iam:ListUsers'
              - 'iam:GetAccountSummary'
            Resource: '*'
      Roles: !Ref awsExampleRolesParameter

3.    Pour appliquer votre nouvelle stratégie IAM gérée à votre rôle IAM existant, créez une pile ou mettez à jour une pile existante en fonction de votre modèle AWS CloudFormation modifié.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?