AWS 서비스에 대한 권한을 위임할 역할 생성 - AWS Identity and Access Management

AWS 서비스에 대한 권한을 위임할 역할 생성

AWS 서비스는 역할을 사용하여 서비스가 사용자를 대신하여 다른 서비스의 리소스로 액세스할 수 있어야 합니다. 서비스가 사용자를 대신하여 작업을 수행하기 위해 수임한 역할을 서비스 역할이라고 합니다. 역할이 서비스에 대해 특수한 목적을 수행하는 경우 EC2 인스턴스의 서비스 역할 또는 서비스 연결 역할로 분류됩니다. 서비스 연결 역할을 사용하여 지원되는 서비스 또는 서비스가 임시 자격 증명의 형식을 지원하는지 여부를 확인하려면 AWS IAM으로 작업하는 서비스 섹션을 참조하세요. 개별 서비스가 역할을 사용하는 방법을 알아보려면 테이블에서 서비스 이름을 선택하여 해당 서비스의 설명서를 확인합니다.

역할을 통해 권한을 위임하는 방법에 대한 자세한 내용은 역할 용어 및 개념 섹션을 참조하세요.

서비스 역할 권한

IAM 엔터티(사용자 또는 역할)가 서비스 연결 역할을 작성하거나 편집할 수 있도록 권한을 구성해야 합니다.

참고

서비스 연결 역할의 ARN에는 다음 정책에 SERVICE-NAME.amazonaws.com으로 표시된 서비스 보안 주체가 포함됩니다. 서비스 보안 주체는 대소문자를 구분하고 AWS 서비스마다 형식이 다를 수 있으므로 추측하지 마세요. 서비스의 보안 주체를 보려면 해당 서비스 링크된 역할 설명서 섹션을 참조하세요.

IAM 엔터티가 특정 서비스 역할을 생성하도록 허용하려면

서비스 역할을 생성해야 하는 IAM 엔터티에 다음 정책을 추가합니다. 이 정책으로 특정 서비스에 대하여 구체적인 이름이 있는 서비스 역할을 만들 수 있습니다. 그런 다음 관리형 또는 인라인 정책을 해당 역할에 연결할 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:AttachRolePolicy", "iam:CreateRole", "iam:PutRolePolicy" ], "Resource": "arn:aws:iam::*:role/SERVICE-ROLE-NAME" } ] }

IAM 엔터티가 모든 서비스 역할을 생성하도록 허용하려면

AWS에서는 IAM 관리자만 서비스 역할을 생성할 수 있도록 허용하는 것이 좋습니다. 역할을 생성하고 정책을 연결할 수 있는 권한이 있는 사람은 자신의 권한을 에스컬레이션할 수 있습니다. 대신 필요한 역할만 생성하거나 관리자가 대신 서비스 역할을 생성하도록 허용하는 정책을 만듭니다.

관리자가 사용자 전체 AWS 계정에 액세스할 수 있도록 허용하는 정책을 연결하려면 AdministratorAccess AWS 관리형 정책을 사용합니다.

IAM 엔터티가 서비스 역할을 편집할 수 있도록 허용하려면

서비스 역할을 편집해야 하는 IAM 엔터티에 다음 정책을 추가합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EditSpecificServiceRole", "Effect": "Allow", "Action": [ "iam:AttachRolePolicy", "iam:DeleteRolePolicy", "iam:DetachRolePolicy", "iam:GetRole", "iam:GetRolePolicy", "iam:ListAttachedRolePolicies", "iam:ListRolePolicies", "iam:PutRolePolicy", "iam:UpdateRole", "iam:UpdateRoleDescription" ], "Resource": "arn:aws:iam::*:role/SERVICE-ROLE-NAME" }, { "Sid": "ViewRolesAndPolicies", "Effect": "Allow", "Action": [ "iam:GetPolicy", "iam:ListRoles" ], "Resource": "*" } ] }

IAM 엔터티가 특정 서비스 역할을 삭제하도록 허용하려면

특정 서비스 역할을 삭제해야 하는 IAM 엔터티의 권한 정책에 다음 명령문을 추가합니다.

{ "Effect": "Allow", "Action": "iam:DeleteRole", "Resource": "arn:aws:iam::*:role/SERVICE-ROLE-NAME" }

IAM 엔터티가 모든 서비스 역할을 삭제하도록 허용하려면

AWS에서는 IAM 관리자만 서비스 역할을 삭제할 수 있도록 허용하는 것이 좋습니다. 대신, 필요한 역할만 삭제하거나 관리자가 대신 서비스 역할을 삭제하도록 허용하는 정책을 만듭니다.

관리자가 사용자 전체 AWS 계정에 액세스할 수 있도록 허용하는 정책을 연결하려면 AdministratorAccess AWS 관리형 정책을 사용합니다.

AWS 서비스에 대한 역할 생성(콘솔)

AWS Management Console을 사용하여 서비스의 역할을 만들 수 있습니다. 일부 서비스는 두 개 이상의 서비스 역할을 지원하기 때문에 어떤 사용 사례를 선택할지 확인하려면 해당 서비스의 AWS 설명서 섹션을 참조하세요. 서비스에서 역할을 위임할 수 있도록 역할에 필요한 신뢰 정책과 권한 정책을 할당하는 방법을 알아볼 수 있습니다. 역할에 대한 권한을 관리할 수 절차는 서비스가 어떻게 사용 사례를 정의하느냐와 서비스 링크된 역할을 생성할 수 있는지 여부에 따라 다양할 수 있습니다.

AWS 서비스에 대한 역할을 만들려면(콘솔)

  1. AWS Management Console에 로그인하여 https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

  2. IAM 콘솔의 탐색 창에서 역할을 선택하고 역할 만들기를 선택합니다.

  3. 신뢰할 수 있는 엔터티 선택(Select trusted entity)에서 AWS 서비스(AWS service)를 선택합니다.

  4. 서비스의 사용 사례를 선택합니다. 사용 사례는 서비스에 필요한 신뢰 정책을 포함하기 위해 서비스에서 정합니다. 그리고 다음(Next)을 선택합니다.

  5. 가능하다면, 권한 정책을 사용하기 위한 정책을 선택하거나 정책 생성을 선택하여 새 브라우저 탭을 열고 완전히 새로운 정책을 생성합니다. 자세한 정보는 IAM 정책 생성을 참조하세요. 정책을 생성하면 탭을 닫고 원래 탭으로 돌아갑니다. 서비스에게 부여하려는 권한 정책 옆의 확인란을 선택합니다.

    선택한 사용 사례에 따라 서비스에서 다음을 수행할 수 있습니다.

    • 서비스에서 역할에 대한 권한을 정의하기 때문에 아무것도 할 수 없습니다.

    • 제한된 권한 세트에서 선택할 수 있습니다.

    • 모든 권한 중에서 선택합니다.

    • 여기서 정책을 선택하지 않고, 나중에 정책을 만들어 역할에 연결할 수 있습니다.

  6. (선택 사항) 권한 경계로서 설정됨. 이는 서비스 역할에서 가능한 고급 기능이며 서비스 링크된 역할은 아닙니다.

    권한 경계(Permissions boundary) 섹션을 열고 최대 역할 권한을 관리하기 위한 권한 경계 사용(Use a permissions boundary to control the maximum role permissions)을 선택합니다. IAM은 계정의 AWS 관리형 또는 고객 관리형 정책 목록을 포함합니다. 권한 경계를 사용하기 위한 정책을 선택하거나 정책 생성(Create policy)을 선택하여 새 브라우저 탭을 열고 처음부터 새 정책을 생성합니다. 자세한 정보는 IAM 정책 생성을 참조하세요. 정책을 생성하면 탭을 닫고 원래 탭으로 돌아와 권한 경계에 사용할 정책을 선택합니다.

  7. 다음을 선택합니다.

  8. 역할 이름의 경우 역할 이름 사용자 지정 수준은 서비스에서 정합니다. 서비스에서 역할 이름을 정한 경우 이 옵션을 편집할 수 없습니다. 다른 경우에는 서비스에서 역할 이름의 접두사를 정의하고 사용자가 선택적 접미사를 입력할 수 있습니다. 일부 서비스는 역할의 전체 이름을 지정할 수 있습니다.

    가능한 경우 이 역할의 목적을 식별하는 데 도움이 되는 역할 이름이나 역할 이름 접미사를 입력합니다. 역할 이름은 AWS 계정 내에서 고유해야 합니다. 대소문자는 구별하지 않습니다. 예를 들어, 이름이 PRODROLEprodrole, 두 가지로 지정된 역할을 만들 수는 없습니다. 기타 AWS 리소스가 역할을 참조할 수 있기 때문에 역할이 생성된 후에는 역할 이름을 편집할 수 없습니다.

  9. (선택 사항) 설명(Description)에 새 역할에 대한 설명을 입력합니다.

  10. 1단계: 신뢰할 수 있는 엔터티 선택(Step 1: Select trusted entities) 또는 2단계: 권한 추가(Step 2: Add permissions) 섹션에서 편집(Edit)을 선택하여 역할에 대한 사용 사례와 권한을 편집합니다.

  11. (선택 사항) 태그를 키 값 페어로 연결하여 메타데이터를 역할에 추가합니다. IAM에서의 태그 사용에 대한 자세한 내용은 IAM 리소스에 태깅 섹션을 참조하세요.

  12. 역할을 검토한 다음 [Create role]을 선택합니다.

서비스에 대한 역할 생성(AWS CLI)

AWS CLI에서 역할을 만들려면 여러 단계를 거쳐야 합니다. 콘솔을 사용하여 역할을 만들 때는 많은 단계가 자동으로 수행되지만 AWS CLI를 사용하면 각 단계를 직접 명시적으로 수행해야 합니다. 역할을 만든 다음 권한 정책을 역할에 할당해야 합니다. 작업 중인 서비스가 Amazon EC2인 경우에도 인스턴스 프로파일을 생성하여 거기에 역할을 추가해야 합니다. 선택적으로 역할에 대한 권한 경계를 설정할 수 있습니다.

AWS CLI에서 AWS 서비스에 대한 역할을 만들려면

  1. 다음 create-role 명령은 Test-Role이라는 역할을 생성하고 해당 역할에 신뢰 정책을 연결합니다.

    aws iam create-role --role-name Test-Role --assume-role-policy-document file://Test-Role-Trust-Policy.json

  2. 역할에 관리형 권한 정책 연결: aws iam attach-role-policy.

    예를 들어 attach-role-policy 명령은 ReadOnlyAccess라는 AWS 관리형 정책을 ReadOnlyRole이라는 IAM 역할에 연결합니다.

    aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/ReadOnlyAccess --role-name ReadOnlyRole

    또는

    역할을 위한 인라인 권한 정책 생성: aws iam put-role-policy

    인라인 권한 정책을 추가하려면 다음 예제를 참조하세요.

    aws iam put-role-policy --role-name Test-Role --policy-name ExamplePolicy --policy-document file://AdminPolicy.json

  3. (선택 사항) 태그를 연결하여 사용자 지정 속성을 역할에 추가: aws iam tag-role

    자세한 정보는 IAM 역할의 태그 관리(AWS CLI 또는 AWS API)을 참조하세요.

  4. (선택 사항) 역할(aws iam put-role-permissions-boundary)에 대한 권한 경계를 설정합니다.

    이 권한 경계는 역할이 가질 수 있는 최대 권한을 관리합니다. 권한 경계는 고급 AWS 기능입니다.

Amazon EC2 또는 Amazon EC2를 사용하는 다른 AWS 서비스에 대해 역할을 사용할 경우 인스턴스 프로파일에 역할을 저장해야 합니다. 인스턴스 프로파일은 시작할 때 Amazon EC2 인스턴스에 연결할 수 있는 역할을 위한 컨테이너입니다. 하나의 인스턴스 프로파일은 하나의 역할만 포함할 수 있으며 이 제한은 늘릴 수 없습니다. AWS Management Console을 사용하여 역할을 생성한 경우 역할과 동일한 이름을 지닌 인스턴스 프로파일이 자동으로 생성됩니다. 인스턴스 프로파일에 대한 자세한 내용은 인스턴스 프로파일 사용 섹션을 참조하세요. 역할을 사용하여 EC2 인스턴스를 시작하는 방법에 대한 자세한 내용은 Linux 인스턴스용 Amazon EC2 사용 설명서Amazon EC2 리소스에 대한 액세스 제어를 참조하세요.

인스턴스 프로파일을 만들고 여기에 역할을 저장하려면(AWS CLI)

  1. 인스턴스 프로파일 생성: aws iam create-instance-profile

  2. 인스턴스 프로파일에 역할 추가: aws iam add-role-to-instance-profile

아래 AWS CLI 예제 명령 집합은 역할을 생성하고 권한을 연결하는 첫 두 단계를 보여줍니다. 인스턴스 프로파일을 생성하고 프로필에 역할을 추가하는 두 단계를 보여주기도 합니다. 이 예제 신뢰 정책은 Amazon EC2 서비스가 역할을 수임하고 example_bucket Amazon S3 버킷을 볼 수 있도록 허용합니다. 이 예제에서는 Windows를 실행하는 클라이언트 컴퓨터에서 실행 중이며 계정 자격 증명 및 리전으로 이미 명령줄 인터페이스를 구성했다고도 가정합니다. 자세한 내용은 AWS 명령줄 인터페이스 구성 단원을 참조하세요.

이 예제는 역할을 생성할 경우 첫 번째 명령의 다음 신뢰 정책을 포함합니다. 이 신뢰 정책은 Amazon EC2 서비스가 역할을 수임하도록 허용합니다.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": {"Service": "ec2.amazonaws.com"}, "Action": "sts:AssumeRole" } }

두 번째 명령을 사용할 경우, 권한 정책을 역할에 연결해야 합니다. 다음 예제 권한 정책에서는 역할이 example_bucket Amazon S3 버킷에서 ListBucket 작업만 수행하도록 허용합니다.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::example_bucket" } }

Test-Role-for-EC2 역할을 생성하기 위해서는 먼저 이전 신뢰 정책을 trustpolicyforec2.json 이름으로, 이전 권한 정책을 permissionspolicyforec2.json 이름으로 로컬 C: 드라이브의 policies 디렉터리에 저장해야 합니다. 그러고 나면 다음 명령을 사용하여 역할을 만들고 인라인 정책을 연결, 인스턴스 프로파일 생성 및 인스턴스 프로파일에 역할을 추가합니다.

# Create the role and attach the trust policy that allows EC2 to assume this role. $ aws iam create-role --role-name Test-Role-for-EC2 --assume-role-policy-document file://C:\policies\trustpolicyforec2.json # Embed the permissions policy (in this example an inline policy) to the role to specify what it is allowed to do. $ aws iam put-role-policy --role-name Test-Role-for-EC2 --policy-name Permissions-Policy-For-Ec2 --policy-document file://C:\policies\permissionspolicyforec2.json # Create the instance profile required by EC2 to contain the role $ aws iam create-instance-profile --instance-profile-name EC2-ListBucket-S3 # Finally, add the role to the instance profile $ aws iam add-role-to-instance-profile --instance-profile-name EC2-ListBucket-S3 --role-name Test-Role-for-EC2

EC2 인스턴스를 시작할 때 AWS 콘솔을 사용하는 경우 인스턴스 세부 정보 구성 페이지에 인스턴스 프로파일 이름을 지정합니다. aws ec2 run-instances CLI 명령을 사용하는 경우 --iam-instance-profile 파라미터를 지정합니다.

서비스에 대한 역할 생성(AWS API)

AWS API에서 역할을 만들려면 여러 단계를 거쳐야 합니다. 콘솔을 사용하여 역할을 만들 때는 많은 단계가 자동으로 수행되지만 API를 사용하면 각 단계를 직접 명시적으로 수행해야 합니다. 역할을 만든 다음 권한 정책을 역할에 할당해야 합니다. 작업 중인 서비스가 Amazon EC2인 경우에도 인스턴스 프로파일을 생성하여 거기에 역할을 추가해야 합니다. 선택적으로 역할에 대한 권한 경계를 설정할 수 있습니다.

AWS 서비스에 대한 역학을 생성하려면(AWS API)

  1. 역할 만들기: CreateRole

    역할의 신뢰 정책에 대해 파일 위치를 지정할 수 있습니다.

  2. 역할에 관리형 권한 정책 연결: AttachRolePolicy

    또는

    역할을 위한 인라인 권한 정책 생성: PutRolePolicy

  3. (선택 사항) 태그를 연결하여 사용자 지정 속성을 사용자에게 추가: TagRole

    자세한 정보는 IAM 사용자의 태그 관리(AWS CLI 또는 AWS API)을 참조하세요.

  4. (선택 사항) 역할(PutRolePermissionsBoundary)에 대한 권한 경계를 설정합니다.

    이 권한 경계는 역할이 가질 수 있는 최대 권한을 관리합니다. 권한 경계는 고급 AWS 기능입니다.

Amazon EC2 또는 Amazon EC2를 사용하는 다른 AWS 서비스에 대해 역할을 사용할 경우 인스턴스 프로파일에 역할을 저장해야 합니다. 인스턴스 프로파일은 역할에 대한 컨테이너입니다. 각 인스턴스 프로파일은 하나의 역할만 포함할 수 있으며 이 제한은 늘릴 수 없습니다. AWS Management Console에서 역할을 생성한 경우 역할과 동일한 이름을 지닌 인스턴스 프로파일이 자동으로 생성됩니다. 인스턴스 프로파일에 대한 자세한 내용은 인스턴스 프로파일 사용 섹션을 참조하세요. 역할을 사용하여 Amazon EC2 인스턴스를 시작하는 방법에 대한 자세한 내용은 Linux 인스턴스용 Amazon EC2 사용 설명서Amazon EC2 리소스에 대한 액세스 제어를 참조하세요.

인스턴스 프로파일을 만들고 여기에 역할을 저장하려면(AWS API)

  1. 인스턴스 프로파일 생성: CreateInstanceProfile

  2. 인스턴스 프로파일에 역할 추가: AddRoleToInstanceProfile