Como posso anexar uma política gerenciada do IAM a um perfil do IAM no AWS CloudFormation?

5 minuto de leitura
0

Quero adicionar uma política gerenciada nova ou existente do AWS Identity and Access Management (IAM) a um perfil do IAM novo ou existente no AWS CloudFormation.

Breve descrição

Para adicionar uma política gerenciada do IAM nova ou existente a um novo recurso de perfil do IAM, use a propriedade ManagedPolicyArns do tipo de recurso AWS::IAM::Role. Para adicionar uma nova política gerenciada do IAM a um recurso de perfil do IAM existente, use a propriedade Perfis do tipo de recurso AWS::IAM::ManagedPolicy.

Sua política gerenciada do IAM pode ser uma política gerenciada pela AWS ou uma política gerenciada pelo cliente.

Importante: Você pode anexar no máximo 10 políticas gerenciadas a um perfil ou usuário do IAM. O tamanho de cada política gerenciada não pode exceder 6.144 caracteres. Para obter mais informações, consulte Cotas do IAM e do STS.

Com base no seu cenário, conclua as etapas em uma das seções a seguir:

  • Adicionar uma política gerenciada do IAM existente a um novo perfil do IAM
  • Adicionar uma política gerenciada do IAM nova a um novo perfil do IAM
  • Adicionar uma política gerenciada do IAM nova a um perfil existente do IAM

Resolução

Adicionar uma política gerenciada do IAM existente a um novo perfil do IAM

1.Em seu modelo do AWS CloudFormation, crie um parâmetro ou parâmetros que você possa usar para passar o nome do recurso da Amazon (ARN) da sua política gerenciada do IAM. Veja os exemplos de JSON e YAML a seguir.

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.Na seção Recursos do seu modelo, para o recurso do tipo AWS::IAM::Role, defina Ref para os parâmetros que você criou na etapa 1. Neste exemplo, estes são os parâmetros awsExampleManagedPolicyParameterOne e awsExampleManagedPolicyParameterTwo. Veja os exemplos de JSON e YAML a seguir.

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.Para aplicar sua política gerenciada do IAM existente ao seu novo perfil do IAM, crie uma pilha ou atualize uma pilha existente com base no seu modelo modificado do AWS CloudFormation.

Adicionar uma política gerenciada do IAM nova a um novo perfil do IAM

1.Em seu modelo do AWS CloudFormation, crie uma nova política usando o recurso AWS::IAM::ManagedPolicy. Veja os exemplos de JSON e YAML a seguir.

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.Use a sintaxe de ID lógica !Ref para anexar o recurso de política gerenciada do IAM ao recurso AWS::IAM::Role.

Por exemplo, defina Ref como a ID lógica do recurso que você criou na etapa 1 (SampleManagedPolicy). Veja os exemplos de JSON e YAML a seguir.

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.Para aplicar sua nova política gerenciada do IAM ao seu novo perfil do IAM, crie uma pilha ou atualize uma pilha existente com base no seu modelo modificado do AWS CloudFormation.

Adicionar uma política gerenciada do IAM nova a um perfil existente do IAM

1.Em seu modelo do AWS CloudFormation, crie um parâmetro que você possa usar para passar o nome dos seus perfis existentes. Veja os exemplos de JSON e YAML a seguir.

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.Na seção Recursos do seu modelo, para o recurso do tipo AWS::IAM::ManagedPolicy, defina Ref como o parâmetro que você criou na etapa 1 (awsExampleRolesParameter). Veja os exemplos de JSON e YAML a seguir.

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.Para aplicar sua nova política gerenciada do IAM ao seu perfil do IAM existente, crie uma pilha ou atualize uma pilha existente com base no seu modelo modificado do AWS CloudFormation.


AWS OFICIAL
AWS OFICIALAtualizada há 2 anos