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

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

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

역할을 통해 권한을 위임하는 방법에 대한 자세한 내용은 역할 용어 및 개념 단원을 참조하십시오.

서비스 역할 권한

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 개체가 서비스 연결 역할을 만들 수 있도록 허용하려면

서비스 역할을 생성해야 하는 IAM 개체의 권한 정책에 다음 명령문을 추가합니다. 이 문으로 모든 서비스에 대하여 서비스 역할을 만든 후 관리형 또는 인라인 정책을 해당 역할에 연결할 수 있습니다.

{ "Effect": "Allow", "Action": [ "iam:AttachRolePolicy", "iam:CreateRole", "iam:PutRolePolicy" ], "Resource": "*" }

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 개체가 서비스 역할을 삭제하도록 허용하려면

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

{ "Effect": "Allow", "Action": "iam:DeleteRole", "Resource": "*" }

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

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

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

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

  2. IAM 콘솔의 탐색 창에서 역할을 선택한 후 역할 생성을 선택합니다.

  3. 신뢰할 수 있는 유형의 엔터티 선택에서 AWS 서비스를 선택합니다.

  4. 이 역할을 맡을 수 있게 하려는 서비스를 선택합니다.

  5. 서비스의 사용 사례를 선택합니다. 지정한 서비스에 사용 사례가 하나뿐이면 자동으로 선택됩니다. 사용 사례는 서비스에 필요한 신뢰 정책을 포함하기 위해 서비스에서 정합니다. 그런 다음 [Next: Permissions]를 선택합니다.

  6. 가능하다면, 권한 정책을 사용하기 위한 정책을 선택하거나 정책 생성을 선택하여 새 브라우저 탭을 열고 완전히 새로운 정책을 생성합니다. 자세한 내용은 IAM 정책 만들기(콘솔) 절차의 4단계 단원을 참조하십시오. 정책을 생성하면 탭을 닫고 원래 탭으로 돌아갑니다. 서비스에게 부여하려는 권한 정책 옆의 확인란을 선택합니다.

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

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

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

    • 모든 권한 집합에서 선택할 수 있도록 허용

    • 여기서 정책을 선택하지 않고, 나중에 정책을 만들어 역할에 연결할 수 있도록 허용

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

    Set permissions boundary(권한 경계 설정) 섹션을 열고 Use a permissions boundary to control the maximum role permissions(최대 사용자 권한을 관리하기 위한 권한 경계 사용)을 선택합니다. IAM에는 계정의 AWS 관리형 또는 사용자 관리형 정책 목록이 있습니다. 권한 경계를 사용하기 위한 정책을 선택하거나 정책 생성을 선택하여 새 브라우저 탭을 열고 완전히 새로운 정책을 생성합니다. 자세한 내용은 IAM 정책 만들기(콘솔) 절차의 4단계 단원을 참조하십시오. 정책을 생성하면 탭을 닫고 원래 탭으로 돌아와 권한 경계에 사용할 정책을 선택합니다.

  8. 다음: 태그를 선택합니다.

  9. (선택 사항) 태그를 키–값 페어로 연결하여 메타데이터를 역할에 추가합니다. IAM에서의 태그 사용에 대한 자세한 내용은 IAM 사용자 및 역할 태그 지정 단원을 참조하십시오.

  10. [Next: Review]를 선택합니다.

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

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

  12. (선택 사항) [Role description]에 새 역할에 대한 설명을 입력합니다.

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

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

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

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

  1. 역할 생성: aws iam create-role

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

    또는

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

  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 콘솔을 사용하여 역할을 생성한 경우 역할과 동일한 이름을 지닌 인스턴스 프로파일이 자동으로 생성됩니다. 인스턴스 프로파일에 대한 자세한 내용은 인스턴스 프로파일 사용 단원을 참조하십시오. 역할을 사용하여 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 콘솔에서 역할을 생성한 경우 역할과 동일한 이름을 지닌 인스턴스 프로파일이 자동으로 생성됩니다. 인스턴스 프로파일에 대한 자세한 내용은 인스턴스 프로파일 사용 단원을 참조하십시오. 역할을 사용하여 Amazon EC2 인스턴스를 시작하는 방법에 대한 자세한 내용은 Linux 인스턴스용 Amazon EC2 사용 설명서에서 Amazon EC2 리소스에 대한 액세스 제어 단원을 참조하십시오.

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

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

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