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

5 minutos de lectura
0

Quiero añadir 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.

Breve descripción

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

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

Importante: Puede adjuntar un máximo de 10 políticas administradas a un rol o usuario de IAM. El tamaño de cada política administrada no puede superar los 6144 caracteres. Para obtener más información, consulte cuotas de IAM y STS.

Según su situación, complete 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

1.    En su plantilla de AWS CloudFormation, cree uno o varios parámetros que pueda usar para transferir el nombre de recurso de Amazon (ARN) de su política administrada de IAM. Consulte 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 su plantilla, para el tipo de recurso AWS::IAM::Role, defina Ref con los parámetros que creó en el paso 1. Para este ejemplo, se trata de los parámetros AWSexampleManagedPolicyParameterOne y AWSexampleManagedPolicyParameterTwo. Consulte 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 a su nuevo rol de IAM, cree una pila o actualice una pila existente a partir de la plantilla de AWS CloudFormation modificada.

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

1.    En su plantilla de AWS CloudFormation, cree una nueva política con el recurso AWS::IAM::ManagedPolicy. Consulte 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.    Use la sintaxis de identificador lógico !Ref para adjuntar el recurso de política administrada de IAM al recurso AWS::IAM::Role.

Por ejemplo, defina Ref en el identificador lógico del recurso que creó en el paso 1 (SampleManagedPolicy). Consulte 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 su nueva política administrada de IAM a su nuevo rol de IAM, cree una pila o actualice una pila existente a partir de la plantilla de AWS CloudFormation modificada.

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

1.    En su plantilla de AWS CloudFormation, cree un parámetro que pueda usar para transferir el nombre de sus roles existentes. Consulte 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 su plantilla, para el tipo de recurso AWS::IAM::ManagedPolicy, defina Ref con el parámetro que creó en el paso 1 (AWSexampleRolesParameter). Consulte 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 su nueva política administrada de IAM a su rol de IAM actual, cree una pila o actualice una pila existente a partir de la plantilla de AWS CloudFormation modificada.


OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años