내용으로 건너뛰기

CloudFormation의 IAM 역할에 IAM 관리형 정책을 연결하려면 어떻게 해야 합니까?

4분 분량
0

기존 또는 신규 AWS Identity and Access Management(IAM) 관리형 정책을 AWS CloudFormation의 신규 또는 기존 IAM 역할에 추가하고 싶습니다.

간략한 설명

기존 또는 신규 IAM 관리형 정책을 새 IAM 역할 리소스에 추가하려면 리소스 유형 AWS::IAM::RoleManagedPolicyArns 속성을 사용하십시오. 기존 IAM 역할 리소스에 새 IAM 관리형 정책을 추가하려면 리소스 유형 AWS::IAM::ManagedPolicyRoles 속성을 사용하십시오.

IAM 관리형 정책은 AWS 관리형 정책 또는 고객 관리형 정책일 수 있습니다.

중요: 최대 20개의 관리형 정책을 IAM 역할 또는 사용자에 연결할 수 있습니다. 각 관리형 정책의 크기는 6,144자를 초과할 수 없습니다. IAM은 이 한도를 기준으로 정책의 크기를 계산할 때 공백을 포함하지 않습니다. 자세한 내용은 IAM 및 STS 할당량을 참조하십시오.

시나리오에 따라 다음 섹션 중 하나의 단계를 완료하십시오.

  • 새 IAM 역할에 기존 IAM 관리형 정책 추가
  • 새 IAM 역할에 새 IAM 관리형 정책 추가
  • 기존 IAM 역할에 새 IAM 관리형 정책 추가

해결 방법

새 IAM 역할에 기존 IAM 관리형 정책 추가

다음 단계를 완료하십시오.

  1. AWS CloudFormation 템플릿에서 IAM 관리형 정책의 Amazon 리소스 이름(ARN)으로 전달할 수 있는 하나 이상의 파라미터를 생성합니다. 다음 JSON 및 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. 템플릿의 Resources 섹션에서 AWS::IAM::Role 유형의 리소스에 대해 Ref를 1단계에서 생성한 파라미터로 설정합니다. 이 예에서는 awsExampleManagedPolicyParameterOneawsExampleManagedPolicyParameterTwo 파라미터입니다. 다음 JSON 및 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. 기존 IAM 관리형 정책을 새 IAM 역할에 적용하려면 수정된 CloudFormation 템플릿으로 스택을 생성하거나 업데이트하십시오.

새 IAM 역할에 새 IAM 관리형 정책 추가

다음 단계를 완료하십시오.

  1. AWS CloudFormation 템플릿에서 AWS::IAM::ManagedPolicy 리소스를 사용하여 새 정책을 생성합니다. 다음 JSON 및 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. !Ref 논리 ID 구문을 사용하여 IAM 관리형 정책 리소스를 AWS::IAM::Role 리소스에 연결합니다.

    예를 들어, Ref를 1단계에서 생성한 리소스 논리 ID(SampleManagedPolicy)로 설정합니다. 다음 JSON 및 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. 새 IAM 관리형 정책을 새 IAM 역할에 적용하려면 수정된 CloudFormation 템플릿으로 스택을 생성하거나 업데이트하십시오.

기존 IAM 역할에 새 IAM 관리형 정책 추가

다음 단계를 완료하십시오.

  1. AWS CloudFormation 템플릿에서 기존 역할의 이름을 전달하는 데 사용할 수 있는 파라미터를 생성합니다. 다음 JSON 및 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. 템플릿의 Resources 섹션 내 AWS::IAM::ManagedPolicy 리소스 유형에서 Ref 값을 1단계에서 생성한 파라미터(awsExampleRolesParameter)로 설정합니다. 다음 JSON 및 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. 새 IAM 관리형 정책을 기존 IAM 역할에 적용하려면 수정된 CloudFormation 템플릿으로 스택을 생성하거나 업데이트하십시오.

AWS 공식업데이트됨 2년 전