AWS 서비스에 권한을 위임할 역할 생성
AWS 서비스에 권한을 위임할 역할 생성
많은 AWS 서비스는 사용자를 대신해 다른 서비스의 리소스에 접근하도록 역할을 사용하도록 요구합니다. 서비스가 사용자를 대신해 작업을 수행하기 위해 수임하는 역할을 서비스 역할(service role)이라고 합니다. 역할이 서비스에 특화된 목적을 수행하면 서비스 연결 역할(service-linked role)로 분류합니다. 어떤 서비스가 서비스 연결 역할 사용을 지원하는지, 또는 서비스가 어떤 형태의 임시 자격 증명을 지원하는지는 IAM과 함께 작동하는 AWS 서비스를 참고하세요. 개별 서비스가 역할을 어떻게 사용하는지는 표에서 서비스 이름을 선택해 해당 서비스 문서를 확인하세요.
출처: 문서
본문
PassRole 권한을 설정할 때 사용자가 원하는 것보다 더 많은 권한이 있는 역할을 사용자가 전달하지 않도록 해야 해요. 예를 들어 Alice가 어떤 Amazon S3 작업도 수행할 수 없도록 허용되었을 수 있어요. Alice가 Amazon S3 작업을 허용하는 역할을 서비스에 전달할 수 있다면, 서비스는 작업 실행 시 Alice를 대신해 Amazon S3 작업을 수행할 수 있습니다.
역할이 권한 위임에 도움이 되는 방법은 역할 용어와 개념 문서를 참고하세요.
서비스 역할 권한
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는 관리 사용자만 모든 서비스 역할을 만들 수 있도록 허용하는 것을 권장해요. 역할을 만드는 권한과 임의의 정책을 연결하는 권한이 있는 사람은 자신의 권한을 상승시킬 수 있어요. 대신 그들이 필요한 역할만 만들 수 있게 하는 정책을 만들거나 관리자가 그들을 위해 서비스 역할을 만들게 하세요.
관리자가 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는 관리 사용자만 모든 서비스 역할을 삭제할 수 있도록 허용하는 것을 권장해요. 대신 그들이 필요한 역할만 삭제할 수 있게 하는 정책을 만들거나 관리자가 그들을 위해 서비스 역할을 삭제하게 하세요.
관리자가 AWS 계정 전체에 접근할 수 있게 하는 정책을 연결하려면 AdministratorAccess AWS 관리형 정책을 사용하세요.
AWS 서비스용 역할 생성 (콘솔)
AWS Management Console을 사용해 서비스용 역할을 만들 수 있어요. 일부 서비스는 둘 이상의 서비스 역할을 지원하므로 어떤 사용 사례를 선택할지 확인하려면 AWS 문서의 해당 서비스를 참고하세요. 서비스가 사용자를 대신해 역할을 수임할 수 있도록 역할에 필요한 신뢰 및 권한 정책을 할당하는 방법을 배울 수 있어요. 역할의 권한을 통제하는 데 사용할 수 있는 단계는 서비스가 사용 사례를 정의하는 방식과 서비스 연결 역할을 만들지 여부에 따라 달라질 수 있어요.
콘솔
AWS 서비스용 역할 생성 (IAM 콘솔)
- AWS Management Console에 로그인하고 https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.
- IAM 콘솔의 탐색 창에서 역할(Roles) 을 선택한 다음 역할 생성(Create role) 을 선택합니다.
- 신뢰할 개체 유형(Trusted entity type) 에서 AWS 서비스(AWS service) 를 선택합니다.
- 서비스 또는 사용 사례(Service or use case) 에서 서비스를 선택한 다음 사용 사례를 선택합니다. 사용 사례는 서비스가 필요한 신뢰 정책을 포함하도록 서비스가 정의합니다.
- 다음(Next) 을 선택합니다.
- 권한 정책(Permissions policies) 에서 옵션은 선택한 사용 사례에 따라 다릅니다:
- 서비스가 역할의 권한을 정의하면 권한 정책을 선택할 수 없습니다.
- 제한된 권한 정책 세트에서 선택합니다.
- 모든 권한 정책에서 선택합니다.
- 권한 정책을 선택하지 않고, 역할이 생성된 후 정책을 만들어 역할에 연결합니다.
- (선택) 권한 경계(permissions boundary)를 설정합니다. 이는 서비스 역할에는 사용할 수 있지만 서비스 연결 역할에는 없는 고급 기능입니다.
- 권한 경계 설정(Set permissions boundary) 섹션을 연 다음 권한 경계로 최대 역할 권한 통제(Use a permissions boundary to control the maximum role permissions) 를 선택합니다. IAM이 계정의 AWS 관리형 및 고객 관리형 정책 목록을 표시합니다.
- 권한 경계에 사용할 정책을 선택합니다.
- 다음(Next) 을 선택합니다.
- 역할 이름(Role name) 에서 옵션은 서비스에 따라 다릅니다:
- 서비스가 역할 이름을 정의하면 역할 이름을 편집할 수 없습니다.
- 서비스가 역할 이름에 접두사를 정의하면 선택적 접미사를 입력할 수 있어요.
- 서비스가 역할 이름을 정의하지 않으면 역할 이름을 지정할 수 있어요.
중요 역할 이름을 지정할 때 다음 사항에 유의하세요:
- 역할 이름은 AWS 계정 내에서 고유해야 하며, 대소문자만 다르게 해서 고유하게 만들 수 없습니다. 예를 들어
PRODROLE과prodrole이라는 역할을 둘 다 만들지 마세요. 역할 이름이 정책이나 ARN의 일부로 사용될 때는 대소문자를 구분하지만, 역할 이름이 로그인 과정처럼 콘솔에서 고객에게 표시될 때는 대소문자를 구분하지 않습니다. - 다른 개체가 역할을 참조할 수 있으므로 역할을 만든 후에는 이름을 편집할 수 없습니다.
- (선택) 설명(Description) 에 역할에 대한 설명을 입력합니다.
- (선택) 역할의 사용 사례와 권한을 편집하려면 1단계: 신뢰할 개체 선택(Step 1: Select trusted entities) 또는 2단계: 권한 추가(Step 2: Add permissions) 섹션에서 편집(Edit) 을 선택합니다.
- (선택) 역할을 식별, 구성, 검색하는 데 도움이 되도록 키-값 쌍으로 태그를 추가합니다. IAM에서 태그 사용에 대한 자세한 내용은 IAM 사용자 가이드의 AWS Identity and Access Management 리소스 태그를 참고하세요.
- 역할을 검토한 다음 역할 생성(Create role) 을 선택합니다.
서비스용 역할 생성 (AWS CLI)
AWS CLI로 역할을 만드는 것은 여러 단계를 포함합니다. 콘솔로 역할을 만들 때는 많은 단계가 자동으로 수행되지만, AWS CLI에서는 각 단계를 직접 명시적으로 수행해야 해요. 역할을 만든 다음 역할에 권한 정책을 할당해야 합니다. 작업 중인 서비스가 Amazon EC2라면 인스턴스 프로필도 만들고 역할을 추가해야 해요. 선택적으로 역할에 권한 경계를 설정할 수도 있어요.
AWS CLI에서 AWS 서비스용 역할 생성
- 다음
[create-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html)명령은 Test-Role이라는 역할을 만들고 신뢰 정책을 연결합니다:aws iam create-role --role-name Test-Role --assume-role-policy-document file://Test-Role-Trust-Policy.json - 역할에 관리형 권한 정책을 연결합니다: 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 - (선택) 태그를 연결해 역할에 사용자 지정 속성을 추가합니다: aws iam tag-role 자세한 내용은 IAM 역할 태그 관리 (AWS CLI 또는 AWS API) 문서를 참고하세요.
- (선택) 역할에 권한 경계를 설정합니다: aws iam put-role-permissions-boundary 권한 경계는 역할이 가질 수 있는 최대 권한을 통제합니다. 권한 경계는 AWS의 고급 기능입니다.
Amazon EC2나 Amazon EC2를 사용하는 다른 AWS 서비스와 함께 역할을 사용하려면 역할을 인스턴스 프로필에 저장해야 합니다. 인스턴스 프로필은 시작 시 Amazon EC2 인스턴스에 연결할 수 있는 역할용 컨테이너입니다. 인스턴스 프로필은 역할을 하나만 포함할 수 있고, 그 제한은 늘릴 수 없습니다. AWS Management Console로 역할을 만들면 인스턴스 프로필이 역할과 같은 이름으로 자동 생성됩니다. 인스턴스 프로필에 대한 자세한 내용은 인스턴스 프로필 사용 문서를 참고하세요. 역할이 있는 EC2 인스턴스를 시작하는 방법은 Amazon EC2 사용자 가이드의 Amazon EC2 리소스에 대한 접근 통제를 참고하세요.
인스턴스 프로필을 만들고 그 안에 역할 저장 (AWS CLI)
- 인스턴스 프로필을 만듭니다: aws iam create-instance-profile
- 인스턴스 프로필에 역할을 추가합니다: aws iam add-role-to-instance-profile
다음 AWS CLI 예제 명령 세트는 역할을 만들고 권한을 연결하는 처음 두 단계를 보여줍니다. 또한 인스턴스 프로필을 만들고 역할을 프로필에 추가하는 두 단계도 보여줍니다. 이 예제 신뢰 정책은 Amazon EC2 서비스가 역할을 수임하고 example_bucket Amazon S3 버킷을 볼 수 있게 허용합니다. 예제는 Windows를 실행하는 클라이언트 컴퓨터에서 실행되고 명령줄 인터페이스를 계정 자격 증명과 리전으로 이미 구성했다고 가정합니다. 자세한 내용은 AWS Command Line Interface 구성 문서를 참고하세요.
이 예제에서 역할을 만들 때 첫 번째 명령에 다음 신뢰 정책을 포함하세요. 이 신뢰 정책은 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 디렉토리에 저장해야 합니다. 그런 다음 다음 명령으로 역할을 만들고, 정책을 연결하고, 인스턴스 프로필을 만들고, 역할을 인스턴스 프로필에 추가할 수 있어요.
# 역할을 만들고 EC2가 이 역할을 수임할 수 있게 해주는 신뢰 정책을 연결합니다.
$ aws iam create-role --role-name Test-Role-for-EC2 --assume-role-policy-document file://C:\policies\trustpolicyforec2.json
# 역할이 무엇을 할 수 있는지 지정하는 권한 정책(이 예제에서는 인라인 정책)을 역할에 포함시킵니다.
$ aws iam put-role-policy --role-name Test-Role-for-EC2 --policy-name Permissions-Policy-For-Ec2 --policy-document file://C:\policies\permissionspolicyforec2.json
# EC2가 역할을 포함하는 데 필요한 인스턴스 프로필을 만듭니다.
$ aws iam create-instance-profile --instance-profile-name EC2-ListBucket-S3
# 마지막으로 역할을 인스턴스 프로필에 추가합니다.
$ aws iam add-role-to-instance-profile --instance-profile-name EC2-ListBucket-S3 --role-name Test-Role-for-EC2
EC2 인스턴스를 시작할 때 AWS 콘솔을 사용한다면 인스턴스 세부 정보 구성(Configure Instance Details) 페이지에서 인스턴스 프로필 이름을 지정하세요. aws ec2 run-instances CLI 명령을 사용한다면 --iam-instance-profile 파라미터를 지정하세요.
서비스용 역할 생성 (AWS API)
AWS API로 역할을 만드는 것은 여러 단계를 포함합니다. 콘솔로 역할을 만들 때는 많은 단계가 자동으로 수행되지만, API에서는 각 단계를 직접 명시적으로 수행해야 해요. 역할을 만든 다음 역할에 권한 정책을 할당해야 합니다. 작업 중인 서비스가 Amazon EC2라면 인스턴스 프로필도 만들고 역할을 추가해야 해요. 선택적으로 역할에 권한 경계를 설정할 수도 있어요.
AWS 서비스용 역할 생성 (AWS API)
- 역할을 만듭니다: CreateRole 역할의 신뢰 정책에 대해 파일 위치를 지정할 수 있어요.
- 역할에 관리형 권한 정책을 연결합니다: AttachRolePolicy 또는 역할에 인라인 권한 정책을 만듭니다: PutRolePolicy
- (선택) 태그를 연결해 역할에 사용자 지정 속성을 추가합니다: TagRole 자세한 내용은 IAM 역할 태그 관리 (AWS CLI 또는 AWS API) 문서를 참고하세요.
- (선택) 역할에 권한 경계를 설정합니다: PutRolePermissionsBoundary 권한 경계는 역할이 가질 수 있는 최대 권한을 통제합니다. 권한 경계는 AWS의 고급 기능입니다.
Amazon EC2나 Amazon EC2를 사용하는 다른 AWS 서비스와 함께 역할을 사용하려면 역할을 인스턴스 프로필에 저장해야 합니다. 인스턴스 프로필은 역할용 컨테이너입니다. 각 인스턴스 프로필은 역할을 하나만 포함할 수 있고, 그 제한은 늘릴 수 없습니다. AWS Management Console에서 역할을 만들면 역할과 같은 이름의 인스턴스 프로필이 자동 생성됩니다. 인스턴스 프로필에 대한 자세한 내용은 인스턴스 프로필 사용 문서를 참고하세요. 역할이 있는 Amazon EC2 인스턴스를 시작하는 방법은 Amazon EC2 사용자 가이드의 Amazon EC2 리소스에 대한 접근 통제를 참고하세요.
인스턴스 프로필을 만들고 그 안에 역할 저장 (AWS API)
- 인스턴스 프로필을 만듭니다: CreateInstanceProfile
- 인스턴스 프로필에 역할을 추가합니다: AddRoleToInstanceProfile