Assume Role 방식
개요
역할(Role)은 특정 권한을 지닌 IAM 자격 증명을 의미하며, Assume Role 은 자신의 계정 혹은 다른 계정에 클라우드 리소스 액세스 권한을 부여 하기 위해 사용됩니다.
Assume Role 활용 예시
각각의 AWS 계정에 IAM 사용자 [A], [B], [C]가 있고 역할을 위임받을 IAM 사용자 [D]가 있다고 가정합니다.
[A], [B], [C] 각각의 IAM 사용자별로 클라우드 리소스 수집을 위한 권한이 있는 역할을 [D] 계정으로 위임하여 생성합니다. 총 3개의 [Role ARN]이 생성되게 됩니다.
최종적으로 정책을 위임받은 [D] IAM 사용자의 [AWS Access Key ID], [AWS Secret Key] 와 [A], [B], [C] IAM 사용자의 [Role ARN] 을 통해 사용 중인 클라우드 리소스를 수집할 수 있게 됩니다.
Assume Role 방식은 다음의 설정 정보가 필요합니다:
Account ID
AWS 계정을 생성할 때 자동으로 생성되는 12자리 고유 식별자입니다. Account ID에 대한 자세한 내용은 AWS 문서 를 참고하세요.
Role ARN
AWS 역할(Role)의 고유 식별자입니다. 자신의 계정 혹은 다른 계정에 클라우드 리소스 액세스 권한을 부여하기 위해 사용됩니다. Role ARN에 대한 자세한 내용은 AWS 문서 를 참고하세요.
External ID
AWS External ID는 AWS 계정 외부에서 접근 권한을 부여할 때 사용되는 식별자입니다. 이는 IAM 사용자 또는 역할에 할당되며, 해당 사용자나 역할이 다른 AWS 계정이나 서비스에서 요청하는 리소스에 대한 접근 권한을 부여하는데 사용됩니다.
Assume Role을 생성하는 방법에는 두 가지가 있습니다:
- AWS 콘솔을 통한 수동 생성
- CloudFormation을 통한 자동 생성
두 방법 중 하나를 선택하여 진행하시면 됩니다. AWS의 세부 설정을 이해하고 싶다면 수동 생성을, 빠른 설정을 원한다면 CloudFormation을 통한 생성을 권장합니다.
1. Assume Role 생성
AWS 콘솔 접속
AWS 콘솔 에 접속합니다.
IAM Role 메뉴 접속
대시보드에서 [액세스 관리 > 역할] 메뉴로 이동합니다.

역할 생성 및 설정
[역할 만들기] 버튼을 클릭하여 역할 생성 페이지로 이동합니다.

(1) 신뢰할 수 있는 엔터티 유형으로 [AWS 계정]을 선택합니다.
(2) 역할을 부여할 AWS 계정을 선택합니다:
- [이 계정]: 자신의 계정이 사용하고 있는 클라우드 리소스에 대한 권한을 부여
- [다른 AWS 계정]: 역할을 부여한 계정이 자신의 클라우드 리소스에 대한 권한을 부여받음
(3) [AWS 계정 > 다른 AWS 계정 선택] Trusted AWS Account ID 를 입력합니다.
(4) [옵션 > 외부 ID]에 임의의 ID(4글자 이상)를 입력합니다.
- CloudOps 콘솔에서 확인할 수 있는 External ID를 입력하거나, 해당 페이지에서 임의로 설정 후 CloudOps 콘솔에 입력할 수 있습니다.
권한 설정
앞서 생성한 IAM Policy 4가지 중 필요한 권한을 추가합니다.

ReadOnlyAccess(filter Type: AWS managed job function)를 통해 ‘AWS Cloud Services collector’와 ‘AWS EC2 Compute collector’ 권한을 대체할 수 있습니다.
역할 생성 완료
역할 이름을 입력 후 [역할 생성] 버튼을 클릭합니다.

Role ARN 확인
생성된 역할의 상세 정보에서 Role ARN 정보를 확인합니다.

2. CloudFormation을 통한 Assume Role 생성
CloudFormation 메뉴 접속
[CloudFormation > 스택 > 스택 생성 > 새 리소스 사용(표준)]을 클릭합니다.

템플릿 설정
[준비된 템플릿 > Amazone S3 URL]을 선택한 후, 아래 URL을 복사하여 입력합니다.
https://spaceone-public.s3.ap-northeast-2.amazonaws.com/assets/spaceone_assume_role_template.json
스택 세부 정보 입력

다음 정보들을 입력합니다:
- Stack name: 스택 이름 입력
- External ID: 임의로 생성하거나 기존에 생성한 External ID 입력
- Principal: CloudFormation Template에 의해 사전에 입력되어 있음
- CloudOpsPolicyName: 생성될 IAM Policy Name 입력 (임의 입력)
- CloudOpsRoleName: 생성될 IAM Role Name 입력 (임의 입력)
스택 생성
특별한 설정 변경 없이 [다음], [스택 생성] 버튼을 클릭합니다.

설정 정보 확인
- [Outputs] 탭에서
Role ARN정보를 확인합니다.
- [Parameters] 탭에서
External ID정보를 확인합니다.