안녕하세요 서후아빠입니다. ^_^
이번 세션은 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는 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 연동)
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 통해 메일로 알림을 전송하게 됩니다. |
'Management' 카테고리의 다른 글
[실습] Control Tower 구성하기 - 3편 (보안과 규제 관리) (0) | 2023.02.10 |
---|---|
[실습] Control Tower 구성하기 - 2편 (IAM Identity Center = SSO, Okta 연동) (0) | 2023.02.10 |
[이론] Control Tower (Organizations, SSO) 기본 개념 (0) | 2023.02.10 |
[실습] Telegram Bot or Slack Channel연동하여 CloudWatch Alarm 메시지 받기 (1) | 2023.01.25 |
[실습] AWS Systems Manager (Session Manager, Parameter Store, Run Command)-1편 (0) | 2022.09.23 |