본문 바로가기

Management

[실습] Control Tower 구성하기 - 1편 (배포, AWS 계정 관리, LifeCycle 이벤트, 메뉴)

반응형

안녕하세요 서후아빠입니다. ^_^

이번 세션은 Control Tower 1편으로 Control Tower 배포 및 AWS 계정 관리(생성, 편입, 이동 등)에 대해서 실습을 해보겠습니다. 더불어 Control Tower 동작 중 발생하는 이벤트에 대해서 함께 살펴보도록 하겠습니다. 


구성도

1단계 : Management 계정 생성 (AWS 계정이 있는 경우 SKIP)

AWS에 등록되지 않은 메일 1개 준비 (ex : sample@gmail.com)

Management 계정으로 사용할 임의의 메일주소 정의 (ex : sample+mgt@gmail.com)

gmail의 경우 ‘+’표시를 사용해서 기존 메일을 여러 개 확장하여 사용 가능

Amazon Web Service(AWS) 홈페이지에서 ‘sample+mgt@gmail.com’를 이용하여 AWS 계정 생성

  - 연락처 및 결제 방법 등록

  - 계정 활성화 대기

Amazon Web Service(AWS) 홈페이지에서 ‘sample+mgt@gmail.com’를 이용하여 로그인

  - 임시 EC2 하나 배포 (Control Tower 배포 위한 사전 사용량을 생성하는 과정으로 SSO 로그인 후, 삭제 처리)

2단계 : Control Tower 배포

Management 계정(ex : 111111111111) 로그인 > Control Tower > Set up landing zone

Review pricing and select Configure OUs Configure shared accounts Configure CloudTrail and encryption Review and set up landing zone
Home Region : Asia Pacific (Seoul) 
Region deny setting : Not enabled 
Additional AWS Regions for governance : N/A
Foundational OU : Security
Additional OU : Production
Create new account (or Use existing account)
Log archive account, name : sample+log@gmail.com, Log Archive
Audit account, name : sample+audit@gmail.com, Audit
default값 유지 I understand the … : 체크
Region deny setting : Control Tower에서 관리되지 않은 Region 접근을 차단하는 룰 적용(배포 후 설정 가능)
Additional OU : Landing zone 배포 후에 추가적으로 OU 생성 가능

3단계 : OU 생성/이동

Management 계정(ex : 111111111111) 로그인 > Control Tower > Organization > Create resources > Create organizational unit

OU name Parent OU OU name Parent OU
Infrastructure Root DepartmentA Production

[그림. OU 생성 후 구조]

OU는 1개씩 생성하며, 생성 시 다소 시간이 걸림
OU 자체는 이동이 불가능하며, 이동이 필요한 경우는 아래처럼 처리
 1. 이동하고자 하는 Parent OU 하단에 신규 OU 생성
 2. Organizations > AWS accounts > 기존 OU 하단의 AWS 계정 선택 > Actions > Move > 신규 OU 선택하여 이동
 3. Organizations > Policies > Service control policies > 기존 OU에 연결된 Policy 선택 > Actions > Attach policy > 신규 OU 선택

4단계 : IAM Identity Center 설정 (링크 참조하여 선행하고 5단계 진행)

2023.02.10 - [Management] - [실습] Control Tower 구성하기 - 2편 (IAM Identity Center = SSO, Okta 연동)

 

[실습] Control Tower 구성하기 - 2편 (IAM Identity Center = SSO, Okta 연동)

안녕하세요 서후아빠입니다. ^_^ 이번 세션은 Control Tower 2편으로 Control Tower에서 관리 중인 AWS 계정 로그인을 위한 SSO에 대해서 실습을 해보겠습니다. 그리고 Okta 연동하여 Okta에서 생성된 그룹과

sh-t.tistory.com

5단계 : 신규 AWS 계정 생성

※ 주의 : IAM Identity Center 통한 로그인 상태에서 "신규 AWS 계정 생성" 진행

Management 계정(ex : 111111111111) 로그인 > Control Tower > Account factory > Create account

Account details
(AWS 계정 의미)
Access configuration
(SSO로 AWS 계정을 접속하는 사용자 의미)
Organizational unit 
(OU, 미리 생성된 OU 선택)
Account email : sample+prod@gmail.com
Display name(별칭) : Prod
IAM Identity Center user email : sample+mgt@gmail.com
IAM Identity Center user name : sample, mgt
Production

Service catalog > Provisioned products > Prod 계정 생성 상태 확인
Control Tower > Organization : Production OU에서 Prod 계정 등록 상태 확인

계정 생성은 약 10분 이상 소요됩니다.

Management 계정의 Root 계정으로 계정 생성하면 아래처럼 에러메시지 팝업됩니다.
" An unknown error occurred. Try again later, or contact AWS Support.
  No launch paths found for resource: prod-qnh6e6afdvrws."
해결 방법 : IAM Identity Center 통한 로그인 상태에서 계정 생성 진행

5단계 : 기존 AWS 계정 편입

기존 AWS(ex : 222222222222) 계정 로그인 > IAM > Roles > Create role

Select trusted entity Add permissions Name, review and create
Trusted entity type : Custom trust policy  Permissions policies : AdministratorAccess Role name : AWSControlTowerExecution
# Role 내용(Json, Management 계정 ex:111111111111)

{
		"Version": "2012-10-17",
		"Statement": [{
		"Effect": "Allow",
		"Principal": {
		"AWS": "arn:aws:iam::111111111111:root"
            },
            "Action": "sts:AssumeRole",
            "Condition": {}
		}]
}

Management 계정(ex : 111111111111) 로그인 > Organizations > Invitations > Invite Aws account

Add an AWS account Email address or account ID
Invite an existing AWS account 222222222222

기존 AWS(ex : 222222222222) 계정 로그인 > Organizations > 초대 수락

6단계 : AWS 계정 관리 (이동, 관리 해제, 제거)

Management 계정(ex : 111111111111) 로그인 > Organizations > AWS accounts > Prod 선택 > Actions > Move > DepartmentA OU 선택
Management 계정(ex : 111111111111) 로그인 > Control Tower > Organization > Prod 선택 > Actions > Unmanaged > UNMANAGE 입력 > Unmanage account
Management 계정(ex : 111111111111) 로그인 > Organizations > AWS accounts > Prod 선택 > Actions > Remove from organization > Remove account 

이동 (Move)
 - Enrolled or Not enrolled 상태 관계 없이 가능
 - 주의 : RAM 공유, Controls, SCP, Permission sets 등 영향도 확인 후 진행할 것

관리 해제 (Unmanaged)
 - Enrolled 상태 계정을 Not enrolled 상태로 변경, Root OU 하위로 자동 이동

제거(Organizations에서 멤버 탈퇴, Remove)
- 조직에서 계정 제거 전에  해당 계정에 로그인하여 유효한 결제 방법 구성이 선행되어야 함.

ETC : 대시보드

구분 내용
Environment summary  - Organizational units : 관리 중인 OU 수
- Accounts : 관리 중인 AWS 계정 수
Enabled control summary - Preventive controls : 예방된 제어 수
- Detective guardrails : 탐지된 제어 수
- Proactive guardrails : 사전 예방 제어 수
Noncompliant resources - 규정 미준수 자원 목록 (Service, ID, …)
Registered organizational units - OU 목록 및 상태 (State, Compliance)
Enrolled accounts - AWS 계정 목록 및 상태 (State, Compliance)
Guardrail : 예전 사용하던 용어로 최근 Control로 변경됨
Enabled control summary : 필수 요소 제외하고 기본은 Disabled 상태, 고객과 협의하여 Enable 상태 변경

ETC : 메뉴

구분 내용
Account factory > 
Network configuration 
- 사용자가 새 계정을 생성할 때, default VPC의 구성 옵션
- Network 계정 : default VPC가 생성되지 않도록 설정
  ▶ Maximum number of private subnets : 0
  ▶ Regions for VPC Creation : 모두 unchecked
Categories 
(Control 현황)
- Frameworks (tab) : 특정 보안 및 규제 준수 요구사항
- Services (tag) : AWS 서비스 기준
- Control objectives (tab) : 규제준수 목적 기준
All controls - Guidance (컬럼) : Mandatory(필수), Strongly recommended(권고), Elective(선택)
- Behavior (컬럼) : Preventive, Detective, Proactive
Control : AWS 환경에 대한 지속적인 거버넌스를 제공하는 상위 수준 규칙

All controls > control 선택
  - OUs enabled (tab) : 연결된 OU 및 적용 여부 확인 - Artifacts (tab) : 정책 내용 확인

기본 제공되는 Control을 Enable or Disabled 설정만 가능, Customization 불가능
※ Customization과 비슷한 기능 구현하는 방법 : Preventive(SCP), Detective(Config의 Rule)

 

구성도 (LifeCycle)

Control Tower에서 수행되는 Admin 작업 (ex : Account 생성 , OU 생성 및 변경 등) 활동
CloudTrail에 AWS 서비스 이벤트 (eventType = AwsServiceEvent)로 기록
CloudTrail에 소스가 controltower.amazonaws.com, 소스 IP 주소가 AWS Internal로 기록
이벤트 목록
  - CreateManagedAccount, UpdateManagedAccount
  - EnableGuardrail, DisableGuardrail
  - SetupLandingZone, UpdateLandingZone
  - RegisterOrganizationalUnit, DeregisterOrganizationalUnit, PrecheckOrganizationalUnit

조회 및 알림 설정

Management 계정 > Control Tower > Activities > 이벤트 선택 > View details

혹은 CloudTrail > Event history > Event name에서 조회

Management 계정 > Topics 생성 > Subscriptions에서 Email 연결 (설명 SKIP)
Management 계정 > EventBridge > Rules > Create rule

Define rule detail Build event pattern
Name : ct-event
Event bus : default
Rule type : Rule with an event pattern
Event source : AWS events or …
Creation method : Use pattern form
  - Event source : AWS services
  - AWS Service : Control Tower
  - Event type : AWS Service Event via CloudTrail
  - Specific event(s) : EnableGuardrail

Management 계정 > Control Tower > All controls > AWS-GR_RDS_INSTANCE 검색하여 선택 > Enable control > Production OU 선택 > Enable control on OU

OUs enabled (tab) > Enable 확인
Accounts (tab) > Prod 계정에서 Compliant / Enrolled 확인

‘sample+mgt@gmail.com’ 메일 로그인 > 수신 메일 확인(AWS Notification Message)

Control (=Guardrail)이 Enable되면 EventBridge에서 감지하여 SNS 통해 메일로 알림을 전송하게 됩니다.
반응형