Ir para o conteúdo

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

5 minuto de leitura
0

Quero adicionar uma política gerenciada, nova ou já criada, do AWS Identity and Access Management (AWS 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 já criada, 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, use a propriedade Roles 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: é possível anexar no máximo 20 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. O IAM não conta os espaços em branco ao calcular o tamanho de uma política em relação a esse limite. Para obter mais informações, consulte IAM and STS quotas (IAM e cotas do STS).

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

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

Resolução

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

Conclua as etapas a seguir:

  1. No seu modelo do AWS CloudFormation, crie um ou mais parâmetros que seja possível aprovar no nome do recurso da Amazon (ARN) da sua política gerenciada do IAM. Veja os seguintes exemplos de JSON e YAML.

    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, no tipo de recurso 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 seguintes exemplos de JSON e YAML.

    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 ou atualize a pilha com seu modelo modificado do CloudFormation.

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

Conclua as etapas a seguir:

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

    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ógico !Ref para anexar o recurso da política gerenciada do IAM ao recurso AWS::IAM::Role.

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

    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 ou atualize a pilha com seu modelo modificado do CloudFormation.

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

Conclua as etapas a seguir:

  1. No seu modelo do AWS CloudFormation, crie um parâmetro que seja possível usar para aprovar no nome dos seus perfis existentes. Veja os seguintes exemplos de JSON e YAML.

    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, defina Ref para o parâmetro que você criou na etapa 1 (awsExampleRolesParameter) no tipo de recurso AWS::IAM::ManagedPolicy. Veja os seguintes exemplos de JSON e YAML.

    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 ou atualize a pilha com seu modelo modificado do CloudFormation.

AWS OFICIALAtualizada há 2 anos