Saltar al contenido

¿Cómo puedo adjuntar una política administrada de IAM a un rol de IAM en CloudFormation?

5 minutos de lectura
0

Quiero agregar una política administrada de AWS Identity and Access Management (IAM) existente o nueva a un rol de IAM nuevo o existente en AWS CloudFormation.

Descripción corta

Para agregar una política administrada de IAM nueva o existente a un nuevo recurso de rol de IAM, usa la propiedad ManagedPolicyArns del tipo de recurso AW::IAM::Role. Para agregar una nueva política administrada de IAM a un recurso de rol de IAM existente, usa la propiedad Roles del tipo de recurso AWS::IAM::ManagedPolicy.

Tu política administrada de IAM puede ser una política administrada de AWS o una política administrada por el cliente.

Importante: Puedes adjuntar un máximo de 20 políticas administradas a un rol o usuario de IAM. El tamaño de cada política administrada no puede superar los 6144 caracteres. IAM no tiene en cuenta los espacios en blanco al calcular el tamaño de una política en relación con este límite. Para obtener más información, consulta IAM y cuotas de STS.

Según tu situación, completa los pasos de una de las siguientes secciones:

  • Incorporación de una política administrada de IAM existente a un nuevo rol de IAM
  • Incorporación de una nueva política administrada de IAM a un nuevo rol de IAM
  • Incorporación de una nueva política administrada de IAM a un rol de IAM existente

Resolución

Incorporación de una política administrada de IAM existente a un nuevo rol de IAM

Sigue estos pasos:

  1. En tu plantilla de AWS CloudFormation, crea uno o varios parámetros que puedas transferir en el nombre de recurso de Amazon (ARN) de tu política administrada de IAM. Consulta los siguientes ejemplos de JSON y 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. En la sección Recursos de la plantilla, para el tipo de recurso AWS::IAM::Role, define Ref con los parámetros que creaste en el paso 1. Para este ejemplo, se trata de los parámetros awsExampleManagedPolicyParameterOne y awsExampleManagedPolicyParameterTwo. Consulta los siguientes ejemplos de JSON y 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 la política administrada de IAM existente al nuevo rol de IAM, crea o actualiza la pila con tu plantilla de CloudFormation modificada.

Incorporación de una nueva política administrada de IAM a un nuevo rol de IAM

Sigue estos pasos:

  1. En la plantilla de AWS CloudFormation, crea una nueva política con el recurso AWS::IAM::ManagedPolicy. Consulta los siguientes ejemplos de JSON y 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. Usa la sintaxis de identificador lógico !Ref para adjuntar el recurso de política administrada de IAM al recurso AWS::IAM::Role.

    Por ejemplo, define Ref en el identificador lógico del recurso que creaste en el paso 1 (SampleManagedPolicy). Consulta los siguientes ejemplos de JSON y 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 la nueva política administrada de IAM al nuevo rol de IAM, crea o actualiza la pila con tu plantilla de CloudFormation modificada.

Incorporación de una nueva política administrada de IAM a un rol de IAM existente

Sigue estos pasos:

  1. En la plantilla de AWS CloudFormation, crea un parámetro que puedas usar para transferir el nombre de tus roles existentes. Consulta los siguientes ejemplos de JSON y 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. En la sección Recursos de la plantilla, define Ref con el parámetro que creaste en el paso 1 (awsExampleRolesParameter) en el tipo de recurso AWS::IAM::ManagedPolicy. Consulta los siguientes ejemplos de JSON y 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 la nueva política administrada de IAM al rol de IAM existente, crea o actualiza la pila con tu plantilla de CloudFormation modificada.

OFICIAL DE AWSActualizada hace un año