AWS CloudFormation에서 IAM 역할에 IAM 관리형 정책을 연결하려면 어떻게 해야 하나요?

4분 분량
0

AWS CloudFormation에서 기존 또는 새로운 IAM 역할에 기존 또는 새로운 AWS Identity and Access Management(IAM) 관리형 정책을 추가하려고 합니다.

간략한 설명

새로운 IAM 역할 리소스에 기존 또는 새로운 IAM 관리형 정책을 추가하려면 리소스 유형 AWS::IAM::RoleManagedPolicyArns 속성을 사용합니다. 기존 IAM 역할 리소스에 새로운 IAM 관리형 정책을 추가하려면 리소스 유형 AWS::IAM::ManagedPolicyRoles 속성을 사용합니다.

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

중요: IAM 역할 또는 사용자에 최대 10개의 관리형 정책을 연결할 수 있습니다. 각 관리형 정책의 크기는 6,144자를 초과할 수 없습니다. 자세한 내용은 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.    템플릿의 [리소스] 섹션에서, 유형 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 역할에 적용하려면 스택을 생성하거나 수정된 AWS 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 구문을 사용하여 AWS::IAM::Role 리소스에 IAM 관리형 정책 리소스를 연결합니다.

예를 들어 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 역할에 적용하려면 스택을 생성하거나 수정된 AWS 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.    템플릿의 [리소스] 섹션에서 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 역할에 적용하려면 스택을 생성하거나 수정된 AWS CloudFormation 템플릿을 기반으로 기존 스택을 업데이트합니다.


AWS 공식
AWS 공식업데이트됨 2년 전
댓글 없음