AWS 계정 자동 동기화

AWS Control Tower 계정 연동 가이드

SpaceONE(Cloudforet)이 제공하는 Account Auto Sync를 통해 AWS Control Tower를 기준으로 하위에 존재하는 관리 그룹의 계층을 SpaceONE에 동기화 할 수 있습니다.



계층 구조 동기화

SpaceONE의 Trusted Service Account를 통해 AWS의 Account 계층 구조를 자동으로 동기화할 수 있습니다.

각각의 구독을 기준으로 계층을 파악하여 동기화 되며 SpaceONE의 워크스페이스, 프로젝트 그룹, 프로젝트 그리고 서비스어카운트로 동기화가 이루어 집니다.


[자동 동기화 기준]

AWSSpaceONE(Cloudforet)
RootWorkspace
최상위 OUs(Organization Units)Workspaces, Project Groups
하위 OUs(Nested Organization Units)Project Groups
Resources, Member accountsProject and Service Account

[AWS 계층 구조 참고]



권한 부여

1) AWS Cloudformation을 이용하여 SpaceONE 전용 Role 생성하기

  • Sync 작업을 진행하기 전 먼저 SpaceONE이 이용할 수 있는 IAM Role를 하위 member account별로 생성합니다.
  • Role 자동생성을 위해 Management Account에 CloudFormation StackSet를 생성합니다.

[AWS CloudFormation StackSet을 생성하는 과정]

  • Template 선택: Stack Resource와 구성을 정의하는 CloudFormation 템플릿을 준비합니다.


  • StackSet 세부 정보 지정: StackSet의 이름, 설명, 필요한 파라미터를 입력합니다.


  • StackSet 옵션 구성: StackSet의 실행방식 등을 구성합니다.

  • 위의 화면을 참조하여
    • 태그는 Optional인 관계로 기호에 따라 추가해줍니다.
    • 실행 구성은 “비활성” 으로 선택합니다.

  • 배포 옵션 설정: StackSet을 적용할 대상 및 자동 배포 유무 등을 설정합니다.

  • 위의 화면들을 참조하여,
    • 스택 세트에 스택 추가는 “새 스택 배포”를 선택
    • 배포 대상은 “OU(조직 단위)에 배포” 선택
      • AWS OU ID는 AWS Control Tower의 Management Account의 root id를 입력합니다.
      • 계정 필터 유형은 “차집합” 선택
      • 계정 번호는 role 생성을 제외시킬 Security OU에 있는 Audit 과 Log Archive Account의 ”Account ID”를 입력합니다.
        • Ex. 386390908341, 942155983773
        • Audit과 Log Archive에 Role 생성을 하지 않을 뿐, Account Sync하는 과정에서 빠지진 않습니다.
    • 자동 배포 옵션은
      • 자동 배포 “활성화됨”
      • 계정 제거 동작은 “스택 삭제”
    • 리전 지정은 해당 Control Tower가 있는 리전을 지정합니다. (보통은 “아시아 태평양(서울)”)
    • 배포 옵션은 따로 변경하는 것 없이 진행합니다.

2) Management Account에 IAM User 생성하기

SpaceONE Console에 등록하려는 AWS account의 User는 아래의 permissions를 가져야 합니다.

(아래의 예시는 spaceone-test라는 이름의 User입니다.)

  • ReadOnlyAccess(AWS Managed Policy)
  • sts.AssumeRole Policy
    • 위 사진의 SpaceONEAssumeRolePolicy와 같이 사전에 Cloudformation StackSet으로 생성한 role에 대해 assume role권한을 허용하는 policy가 필요합니다.
    • (YOUR_SPACEONE_ROLE_NAME = IAM Role 생성에서 만든 Role Name을 넣어주세요.)
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sts:AssumeRole"
            ],
            "Resource": [
                "arn:aws:iam::*:role/YOUR_SPACEONE_ROLE_NAME"
            ]
        }
    ]
}



자동화 결과

SpaceONE의 Account Auto Sync 기능은 Trusted Account Scope에 따라 다르게 적용됩니다.


✔️ Domain Scope의 Trusted Account (Admin Mode에서 생성 가능)

Domain에서 생성된 Trusted Account의 경우, 아래 두 가지로 설정이 가능합니다.

방법1) Organization이 SpaceONE의 단일 Workspace가 되어 하위의 전체 프로젝트 및 계정 동기화가 적용될 수 있습니다.

AWSSpaceONE(Cloudforet)
RootWorkspace
OUs(Organization Units)Project Groups
Resources, Member accountsProject and Service Account

방법 2) 최상위 OUs(Organization Units)를 다중의 Workspace로 동기화할 수 있습니다. 이는 좀 더 관리 체계를 조직 단위로 구성함으로써 성능 및 관리에 최적화할 수 있습니다.

AWSSpaceONE(Cloudforet)
최상위 OUs(Organization Units)Workspaces
하위 OUs(Nested Organization Units)Project Groups
Resources, Member accountsProject and Service Account

✔️ Workspace Scope의 Trusted Account

Workspace에서 생성된 Trusted Account의 경우 Workspace 하위에 동기화가 적용됩니다.

AWSSpaceONE(Cloudforet)
OUs(Organization Units)Project Groups
Resources, Member accountsProject and Service Account