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

Date de la dernière mise à jour : 02/03/2020

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 Limites 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

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": "awsExampleIAMManagedPolicyARNOne"
        },
        "awsExampleManagedPolicyParameterTwo": {
            "Type": "String",
            "Description": "awsExampleIAMManagedPolicyARNTwo"
        }
    }
}

YAML :

Parameters:
  awsExampleManagedPolicyParameterOne:
    Type: String
    Description: awsExampleIAMManagedPolicyARNOne
  awsExampleManagedPolicyParameterTwo:
    Type: String
    Description: awsExampleIAMManagedPolicyARNTwo

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 le ou les paramètres que vous avez créés à l’étape 1 (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 !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 ?

Cette page peut-elle être améliorée ?


Vous avez besoin d’aide ?