[SAC] Cross Account Role 설정 가이드 in AWS

[SAC] Cross Account Role 설정 가이드 in AWS

이 문서는 다른 계정의 리소스 정보 동기화 절차만을 제공하며, 다른 계정의 리소스에 접속할 수 있는 절차는 제공하지 않습니다. 다른 계정의 리소스에 접속하기 위해서는 VPC Peering Connections, Transit Gateways, Private Links 등을 활용하여 별도의 통신 구간 허용 작업을 수행하여야 합니다.

Overview

QueryPie 가 설치되는 Account 와 실제 동기화 대상 리소스의 Account 가 분리되어 있는 경우, QueryPie 가 설치 되어있는 Account 에서는 STS(Security Token Service)를 통해 대상 리소스의 Account IAM Role 로 부터 임시 자격 증명 (Token)을 요청 받아 리소스 정보들을 동기화 할 수 있습니다.

아래 절차는 QueryPie instance 가 설치된 계정 (이하 Security Account) 에서 동기화 대상 리소스가 존재하는 계정 (이하 Workloads Account) 으로 부터 임시 자격 증명을 획득하여 리소스 정보를 동기화 하는 절차를 안내합니다.

image-20250422-005224.png

절차를 진행하시기 전에, 다음 세 가지 사항을 사전에 숙지해 주시기 바랍니다:

  • AssumeRole 동작은 Security Account 측에서만 수행됩니다.

  • Workloads Account에서는 직접적으로 AssumeRole을 호출하지 않습니다.

  • 대신, Workloads Account에서는 외부 계정이 해당 Role을 Assume할 수 있도록 Trust Relationship을 적절히 설정해 주셔야 합니다.

1. Security Account : QueryPie 에서 수행해야 하는 작업

1.1 Cloud Provider 에서 External ID 발급 및 추출

image-20250328-075910.png
Servers → Cloud Providers → Create Provider
  • Name: 식별 가능한 이름 입력

  • Region: 리소스를 수집한 리전 지정 ( e.g. Asia Pacific (Seoul) )

  • Credential: Cross Account Role

    • Follow the steps down below. 클릭

    • 하단에 생성되는 External ID 를 복사하여 보관

External ID 는 생성 시 마다 Create Provider 버튼을 클릭하여 진입하는 시점 마다 신규 생성이 됩니다. 이 문서의 절차를 진행하는 동안에는 유실 또는 변경 되지 않도록 주의가 필요합니다.

2. Workloads Account : 리소스를 보유한 계정에서의 수행 작업

2.1. IAM Role 생성

IAM → Access management → Roles → Create role
image-20241210-155032.png
  • Trusted entitiy type : AWS account

  • An AWS account : Another AWS account

    • Account ID : Security Account의 AWS Account ID 입력

    • Options

      • Require external ID (Best practice when a third party will assume this role) 활성화 → QueryPie 에서 복사한 External ID 입력

  • Next 클릭

image-20250328-080343.png
  • Add permission : QueryPie instance 와 연동할 리소스의 퍼미션 추가 (e.g. AmazonEC2ReadOnlyAccess)

  • Next 클릭

image-20241210-155424.png
  • Role name : 식별 가능한 이름 입력

  • Create Role 클릭

3. Security Account : QueryPie instance를 보유한 계정에서의 수행 작업

3.1. sts:AssumeRole Policy 생성

IAM → Access management → Policies → Create policy
  1. Policy editor 를 Visual → JSON 으로 변경 후, 아래 형식의 Policy 를 추가

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "<CrossAccount Role ARN from Workloads Account>" } ] }
  • Next 클릭

  • Policy name : 식별 가능한 Policy name 입력

  • Create policy 클릭

3.2. (Instance 에 IAM Role 미 등록 시) IAM Role 생성 및 QueryPie instance에 적용

IAM → Access management → Roles → Create role
  • Trusted entitiy type: AWS service

  • Use case:

    • Service or use case: EC2

  • Next 클릭

image-20250328-074138.png
  • Permissions policies: 위에서 생성한 sts:AssumeRole Policy 추가

  • Next 클릭

image-20250328-074540.png
  • Role name: 식별 가능한 Role name 입력

  • Description: 필요 시 수정

  • Create role 클릭

image-20250328-074913.png
EC2 → instances → Actions → Security → Modify IAM Role
image-20250328-075042.png
  • IAM role: 위에서 생성한 IAM role 선택

  • Update IAM role 클릭

3.3. (Instance 에 IAM Role 사전 등록 시) QueryPie instance에 적용한 IAM Role에, sts:AssumeRole Policy를 추가

EC2 → instances → Security → IAM Role
  • Permissions → Add permissions → Attach policies 클릭

  • 위에서 생성한 Policy 를 검색하여 선택

  • Add perimissions 클릭

3.4. QueryPie 에서 Workloads Account 에서 생성한 Role ARN 을 붙여넣기 후 저장

image-20241210-160023.png

 

image-20241210-155853.png
  • Workloads Account 에서 생성한 IAM Role 의 ARN 정보를 복사 → Security Account 의 QueryPie Cloud Provider 설정에 추가 후 저장

FAQ

Dry run 또는 Synchronize 시, QueryPie가 임시 자격 증명을 부여 받는 주기가 어떻게 될까요?

Cross Account Role 동기는 Dry Run / Synchronize 시 마다 임시권한을 요청하여 획득하는 방식입니다.

요청 시 마다 획득하는 임시권한의 유효 시간은 AWS 에서 최소 단위로 지정하고 있는 1시간 입니다.