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글자 이상)를 입력합니다.
- SpaceONE 콘솔에서 확인할 수 있는 External ID를 입력하거나, 해당 페이지에서 임의로 설정 후 SpaceONE 콘솔에 입력할 수 있습니다.
권한 설정
앞서 생성한 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에 의해 사전에 입력되어 있음
- SpaceONEPolicyName: 생성될 IAM Policy Name 입력 (임의 입력)
- SpaceONERoleName: 생성될 IAM Role Name 입력 (임의 입력)
스택 생성
특별한 설정 변경 없이 [다음], [스택 생성] 버튼을 클릭합니다.
설정 정보 확인
- [Outputs] 탭에서
Role ARN
정보를 확인합니다. - [Parameters] 탭에서
External ID
정보를 확인합니다.