Assume Role 방식
개요
Assume Role 방식은 AWS의 STS AssumeRole 을 이용해, CloudOps 수집 계정이 고객 계정의 IAM 역할(Role)을 임시로 위임받아 리소스를 수집하는 방식입니다. 장기 자격증명(Access Key)을 직접 제공하지 않고, 읽기 전용 역할 하나만 생성하므로 보안상 권장됩니다.
동작 방식
고객 계정에 읽기 전용 IAM 역할을 만들고, 그 역할의 신뢰 정책(Trust Policy) 에 CloudOps 수집 계정을 신뢰 주체로 등록합니다. CloudOps 는 수집할 때마다 이 역할을 가정(AssumeRole)해 단기 임시 자격증명을 발급받아 사용합니다. 발급되는 자격증명은 단기(기본 1시간)입니다.
Assume Role 방식은 다음 설정 정보가 필요합니다.
- Account ID: AWS 계정을 생성할 때 자동으로 부여되는 12자리 고유 식별자입니다.
- Role ARN: 생성한 IAM 역할의 고유 식별자입니다. CloudOps 가 가정(AssumeRole)할 대상이며, 역할 생성 후 확인할 수 있습니다.
- External ID: 신뢰 관계 검증용 비밀 식별자로, 제3자의 무단 AssumeRole(confused deputy 공격)을 방지합니다. CloudOps 콘솔의 클라우드 계정 등록 화면에서 자동으로 생성·표시되므로, 그 값을 그대로 사용합니다.
ec2:DescribeRegions)해 수집합니다. 별도로 리전을 지정할 필요가 없습니다.역할을 생성하는 방법은 두 가지입니다. 환경에 맞는 방법을 선택하세요.
1. AWS 콘솔에서 수동 생성
IAM 역할 생성 시작
AWS 콘솔 에 접속해 [IAM > 액세스 관리 > 역할] 메뉴에서 [역할 만들기] 를 클릭합니다.

신뢰할 수 있는 엔터티 선택 — 사용자 지정 신뢰 정책
신뢰할 수 있는 엔터티 유형에서 [사용자 지정 신뢰 정책(Custom trust policy)] 을 선택합니다.

이어서 신뢰 정책 편집기에 아래 JSON 을 붙여넣습니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "CloudOpsAssumeRole",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<CLOUDOPS_ACCOUNT_ID>:root"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "<EXTERNAL_ID>"
}
}
}
]
}<CLOUDOPS_ACCOUNT_ID>: CloudOps 가 제공하는 수집 계정 ID 입니다.<EXTERNAL_ID>: CloudOps 콘솔의 클라우드 계정 등록 화면에서 확인한 External ID 입니다.

권한 정책 부착
권한 정책에서 ReadOnlyAccess 를 부착합니다. ReadOnlyAccess 로 검색하면 이름에 해당 단어가 포함된 서비스별 정책이 많이 나오므로, 필터 유형을 [AWS managed - job function](직무 기능)으로 지정하면 모든 서비스에 대한 읽기 전용 정책인 ReadOnlyAccess 를 바로 찾을 수 있습니다. (ARN: arn:aws:iam::aws:policy/ReadOnlyAccess)

역할 이름 지정 및 생성
역할 이름(예: CloudOpsCollectorRole)을 입력하고 신뢰 정책·권한을 검토한 뒤 [역할 생성] 을 클릭합니다.
Role ARN 확인
생성된 역할의 상세 페이지에서 Role ARN 을 복사합니다. CloudOps 등록 시 이 값을 사용합니다.
arn:aws:iam::<고객_ACCOUNT_ID>:role/CloudOpsCollectorRole2. CloudFormation 으로 생성
AWS 의 세부 설정을 직접 다루지 않고 빠르게 역할을 만들고 싶다면 CloudFormation 을 사용합니다.
cloudformation:CreateStack 등)과 IAM 역할 생성 권한(iam:CreateRole · iam:AttachRolePolicy · iam:PassRole · iam:TagRole 등)이 필요합니다. 스택 생성 시 [IAM 리소스 생성 승인(CAPABILITY_NAMED_IAM)] 체크가 요구됩니다. 보통 관리자 권한(예: AdministratorAccess) 사용자가 수행하면 충분합니다.템플릿 준비
아래 CloudFormation 템플릿을 .yaml 파일로 저장합니다.
AWSTemplateFormatVersion: "2010-09-09"
Description: CloudOps cross-account collector role (read-only).
Parameters:
CloudOpsAccountId:
Type: String
Description: CloudOps 가 제공하는 수집 계정 ID (12자리).
AllowedPattern: "^[0-9]{12}$"
ExternalId:
Type: String
Description: CloudOps 콘솔에서 확인한 External ID.
MinLength: 4
NoEcho: true
RoleName:
Type: String
Default: CloudOpsCollectorRole
Resources:
CloudOpsCollectorRole:
Type: AWS::IAM::Role
Properties:
RoleName: !Ref RoleName
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: Allow
Principal:
AWS: !Sub "arn:aws:iam::${CloudOpsAccountId}:root"
Action: "sts:AssumeRole"
Condition:
StringEquals:
"sts:ExternalId": !Ref ExternalId
ManagedPolicyArns:
- "arn:aws:iam::aws:policy/ReadOnlyAccess"
Outputs:
RoleArn:
Description: 생성된 Role ARN. CloudOps 등록 시 사용하세요.
Value: !GetAtt CloudOpsCollectorRole.Arn스택 생성
[CloudFormation > 스택 > 스택 생성 > 새 리소스 사용(표준)] 에서 위 템플릿 파일을 업로드합니다.
파라미터 입력
| 파라미터 | 값 |
|---|---|
CloudOpsAccountId | CloudOps 제공 수집 계정 ID |
ExternalId | CloudOps 콘솔에서 확인한 External ID |
RoleName | 생성할 역할 이름 (기본 CloudOpsCollectorRole) |
Role ARN 확인
[IAM 리소스 생성 승인] 에 체크하고 스택을 생성합니다. 완료되면 [Outputs] 탭의 RoleArn 값을 확인합니다.
다음 단계
역할 생성이 끝나면 Role ARN 과 External ID 로 CloudOps 에 계정을 연동합니다.