IAM 사용자에게 권한을 부여할 역할 생성
IAM 역할을 사용해 AWS 리소스에 대한 액세스 권한을 제공할 수 있습니다. IAM 역할을 사용해 신뢰하는 계정과 다른 AWS 신뢰받는 계정 간에 신뢰 관계를 설정할 수 있습니다. 신뢰하는 계정은 액세스되는 리소스를 소유하고 신뢰받는 계정은 리소스에 대한 액세스가 필요한 사용자를 저장합니다. 그러나, 다른 계정이 해당 계정의 리소스를 소유할 수 있는 가능성이 있습니다. 예를 들어, 신뢰받는 계정은 신뢰 계정이 Amazon S3 버킷의 새로운 객체를 생성하는 것처럼 새로운 리소스를 생성하도록 허용할 수 있습니다. 이러한 경우, 리소스를 생성하는 계정은 리소스를 소유하고 누구에게 리소스에 대한 액세스를 부여할지 제어합니다.
신뢰 관계를 생성한 후 신뢰받는 계정의 IAM 사용자 또는 애플리케이션은 AWS Security Token Service(AWS STS) AssumeRole
API 작업을 사용할 수 있습니다. 이 작업은 계정의 AWS 리소스에 액세스할 수 있는 임시 보안 자격 증명을 제공합니다.
계정은 둘 다 직접 제어할 수 있거나 사용자가 속한 계정의 경우 타사가 제어할 수 있습니다. 사용자가 있는 다른 계정이 귀하가 제어하지 않는 AWS 계정에 있는 경우 externalId
속성을 사용할 수 있습니다. 외부 ID는 나와 타사 계정의 관리자 간에 합의한 숫자 또는 단어가 될 수 있습니다. 이 옵션은 요청에 올바른 sts:ExternalID
가 포함된 경우에만 사용자가 역할을 맡을 수 있도록 허용하는 조건을 신뢰 정책에 자동으로 추가합니다. 자세한 내용은 타사가 소유한 AWS 계정에 액세스 단원을 참조하십시오.
역할을 사용해 권한을 위임하는 방법에 대한 자세한 내용은 역할 용어 및 개념 섹션을 참조하세요. 서비스 연결을 사용하여 서비스가 해당 계정의 리소스에 액세스할 수 있도록 허용하는 방법은 AWS 서비스에 대한 권한을 위임할 역할 생성 섹션을 참조하세요.
IAM 역할 생성(콘솔)
AWS Management Console을 사용하여 IAM 사용자가 수임할 수 있는 역할을 생성할 수 있습니다. 예를 들면 프로덕션 환경에서 개발 환경을 격리하기 위해 조직이 여러 개의 AWS 계정을 갖고 있다고 가정합시다. 개발 계정의 사용자가 프로덕션 계정의 리소스에 액세스할 수 있도록 하는 역할 생성에 대한 개괄적 정보는 분리된 개발 및 프로덕션 계정을 사용한 예제 시나리오 섹션을 참조하세요.
최소 권한
다음 단계를 수행하려면 적어도 다음과 같은 IAM 권한이 있어야 합니다.
-
access-analyzer:ValidatePolicy
-
iam:AttachRolePolicy
-
iam:CreatePolicy
-
iam:CreateRole
-
iam:GetAccountSummary
-
iam:GetPolicy
-
iam:GetPolicyVersion
-
iam:GetRole
-
iam:ListAccountAliases
-
iam:ListAttachedRolePolicies
-
iam:ListOpenIDConnectProviders
-
iam:ListPolicies
-
iam:ListRolePolicies
-
iam:ListRoles
-
iam:ListRoleTags
-
iam:ListSAMLProviders
IAM 역할 생성(AWS CLI)
AWS CLI에서 역할을 만들려면 여러 단계를 거쳐야 합니다. 콘솔을 사용하여 역할을 만들 때는 많은 단계가 자동으로 수행되지만 AWS CLI를 사용하면 각 단계를 직접 명시적으로 수행해야 합니다. 역할을 만든 다음 권한 정책을 역할에 할당해야 합니다. 선택적으로 역할에 대한 권한 경계를 설정할 수 있습니다.
크로스 계정 액세스에 대한 역할을 만들려면(AWS CLI)
-
역할 생성: aws iam create-role
-
역할에 관리형 권한 정책 연결: aws iam attach-role-policy
or
역할을 위한 인라인 권한 정책 생성: aws iam put-role-policy
-
(선택 사항) 태그를 연결하여 사용자 지정 속성을 역할에 추가: aws iam tag-role
자세한 내용은 IAM 역할의 태그 관리(AWS CLI 또는 AWS API) 단원을 참조하십시오.
-
(선택 사항) 역할(aws iam put-role-permissions-boundary)에 대한 권한 경계를 설정합니다.
이 권한 경계는 역할이 가질 수 있는 최대 권한을 관리합니다. 권한 경계는 고급 AWS 기능입니다.
다음 예는 단순한 환경에서 크로스 계정 역할을 생성하는 가장 일반적인 단계 중 첫 두 단계를 보여줍니다. 이 예제는 123456789012
계정에 있는 모든 사용자가 역할을 수임하고 example_bucket
Amazon S3 버킷을 볼 수 있도록 허용합니다. 이 예제에서도 Windows가 구동되는 클라이언트 컴퓨터를 사용 중이며 명령줄 인터페이스를 계정 자격 증명 및 리전으로 이미 구성했다고 가정합니다. 자세한 내용은 AWS 명령줄 인터페이스 구성을 참조하세요.
이 예제는 역할을 생성할 경우 첫 번째 명령의 다음 신뢰 정책을 포함합니다. 이 신뢰 정책은 123456789012
계정에서 사용자가 AssumeRole
작업을 사용하여 역할을 가정할 수 있도록 허용합니다. 단, 사용자가 SerialNumber
및 TokenCode
파라미터를 사용하는 MFA 인증을 제공하는 경우에만 허용합니다. MFA에 대한 자세한 내용은 IAM의 AWS 다중 인증 섹션을 참조하세요.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:root" }, "Action": "sts:AssumeRole", "Condition": { "Bool": { "aws:MultiFactorAuthPresent": "true" } } } ] }
중요
Principal
요소에 특정 IAM 역할 또는 사용자에 대한 ARN이 포함되어 있으면, 정책을 저장할 때 해당 ARN이 고유 보안 주체 ID로 변환됩니다. 그러면 누군가가 해당 역할 또는 사용자를 제거하고 다시 만들어 본인의 권한을 에스컬레이션할 위험을 완화할 수 있습니다. 일반적으로 콘솔에서는 이 ID가 보이지 않습니다. 신뢰 정책이 표시될 때 해당 ARN으로 다시 역변환되기 때문입니다. 그러나 역할 또는 사용자를 삭제할 경우, 보안 주체 ID가 콘솔에 표시됩니다. AWS에서 더 이상 이를 ARN에 다시 매핑할 수 없기 때문입니다. 따라서 신뢰 정책의 Principal
요소에서 참조된 사용자 또는 역할을 삭제하고 다시 생성하는 경우, ARN을 바꾸도록 역할을 편집해야 합니다.
두 번째 명령을 사용할 경우, 기존 관리형 정책을 역할에 연결해야 합니다. 다음 권한 정책에서는 역할을 수임하는 사용자가 example_bucket
Amazon S3 버킷에서 ListBucket
작업만 수행하도록 허용합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::example_bucket" } ] }
이 Test-UserAccess-Role
역할을 생성하기 위해서는 이전 신뢰 정책을 trustpolicyforacct123456789012.json
이름으로 로컬 policies
드라이브의 C:
폴더에 먼저 저장해야 합니다. 그런 다음 이전 권한 정책을 고객 관리형 정책으로서 PolicyForRole
이름으로 AWS 계정에 저장합니다. 그러고 나면 다음 명령을 사용하여 역할을 만들고 관리형 정책을 연결합니다.
# Create the role and attach the trust policy file that allows users in the specified account to assume the role. $
aws iam create-role --role-name Test-UserAccess-Role --assume-role-policy-document file://C:\policies\trustpolicyforacct123456789012.json
# Attach the permissions policy (in this example a managed policy) to the role to specify what it is allowed to do. $
aws iam attach-role-policy --role-name Test-UserAccess-Role --policy-arn arn:aws:iam::123456789012:policy/PolicyForRole
중요
필요한 구성의 절반이 끝났습니다. 이제 신뢰할 수 있는 계정의 개별 사용자에게 역할로 전환할 수 있는 권한을 부여해야 합니다. 이 단계에 대한 자세한 내용은 사용자에게 역할을 전환할 권한 부여 섹션을 참조하세요.
역할을 만든 다음 AWS 작업을 수행하거나 AWS 리소스에 액세스할 수 있는 권한을 부여해야 123456789012
계정의 사용자가 역할을 위임할 수 있습니다. 자세한 내용은 IAM 역할로 전환(AWS CLI) 단원을 참조하십시오.
IAM 역할 생성(AWS API)
AWS API에서 역할을 만들려면 여러 단계를 거쳐야 합니다. 콘솔을 사용하여 역할을 만들 때는 많은 단계가 자동으로 수행되지만 API를 사용하면 각 단계를 직접 명시적으로 수행해야 합니다. 역할을 만든 다음 권한 정책을 역할에 할당해야 합니다. 선택적으로 역할에 대한 권한 경계를 설정할 수 있습니다.
코드로 역할을 만들려면(AWS API)
-
역할 만들기: CreateRole
역할의 신뢰 정책에 대해 파일 위치를 지정할 수 있습니다.
-
역할에 관리형 권한 정책 연결: AttachRolePolicy
or
역할을 위한 인라인 권한 정책 생성: PutRolePolicy
중요
필요한 구성의 절반이 끝났습니다. 이제 신뢰할 수 있는 계정의 개별 사용자에게 역할로 전환할 수 있는 권한을 부여해야 합니다. 이 단계에 대한 자세한 내용은 사용자에게 역할을 전환할 권한 부여 섹션을 참조하세요.
-
(선택 사항) 태그를 연결하여 사용자 지정 속성을 사용자에게 추가: TagRole
자세한 내용은 IAM 사용자의 태그 관리(AWS CLI 또는 AWS API) 단원을 참조하십시오.
-
(선택 사항) 역할(PutRolePermissionsBoundary)에 대한 권한 경계를 설정합니다.
이 권한 경계는 역할이 가질 수 있는 최대 권한을 관리합니다. 권한 경계는 고급 AWS 기능입니다.
역할을 만든 다음 AWS 작업을 수행하거나 AWS 리소스에 액세스할 수 있는 권한을 부여해야 계정의 사용자에게 권한을 부여하여 역할을 위임할 수 있습니다. 역할 위임하기에 대한 자세한 내용은 IAM 역할로 전환(AWS API) 섹션을 참조하세요.
IAM 역할 생성(AWS CloudFormation)
AWS CloudFormation에서 IAM 역할을 생성하는 방법에 대한 자세한 내용은 AWS CloudFormation 사용 설명서의 리소스 및 속성 참조와 예제를 참조하세요.
AWS CloudFormation의 IAM 템플릿에 관한 자세한 정보는 AWS CloudFormation 사용 설명서의 AWS Identity and Access Management 템플릿 코드 조각을 참조하세요.