[Hands On] AWS Control Tower 구성하기

1. Control Tower 구성 실습

0. 사전 준비 사항

실습을 위한 사전 준비 단계로서 Control Tower 관리 계정을 사전에 생성하고, AWS Control Tower의 Provisioning을 수행합니다.
사전 준비사항 완료시 서비스의 구성도는 다음과 같습니다.

출처 : AWS Control Tower Workshop 사전 준비 사항 – 서비스 구성도

* 본 게시글의 실습은 다음의 링크를 참고하여 진행할 수 있습니다.
[ AWS Control Tower Workshop 바로가기 ]

1. 관리 계정 생성

AWS Control Tower 관리 계정을 생성하기 위해서는 AWS에 등록되지 않은 (사용되지 않은) E-mail 주소가 1개 필요합니다.
본 실습에서는 작성자의 개인 E-mail 주소 ‘sl2207kico@gmail.com‘ 계정을 사용하여 실습을 진행하도록 하겠습니다.

1. Amazon Web Services(AWS) 홈 페이지를 엽니다.

2. AWS 계정 생성(Create an AWS Account)을 선택합니다.

* Gmail의 경우 [ + ] 표시를 사용하여 하나의 메일 주소를 여러 개로 확장해서 사용할 수 있습니다.

< 예시 >

sl2207kico + ctmgmt @ gmail.com
  • lsaem6746 : 실습자가 원래 보유하고 있는 개인 소유의 이메일 주소
  • + ctmgmt : 확장 이메일 주소

어플리케이션의 이메일 검증 로직에서는 sl2207kico+ctmgmt@gmail.com  sl2207kico @gmail.com 을 서로 다른 이메일로 인식합니다.

이처럼 개인 계정에 ‘+ctmgmt’를 추가하여 새로운 계정 생성을 진행해 줍니다.

3. 개인(Personal)을 선택한 뒤, 개인 정보를 입력하고, AWS 이용 계약 (AWS Customer Agreement)를 읽고 승인합니다.

4. 결제 정보(Biling Information) 페이지에서 결제 방법에 대한 정보를 입력해준 뒤, 결제 정보 입력을 완료합니다.

5. 신원 확인(Confirm your identity) 페이지에서 확인 코드를 받을 연락 방법을 선택한 뒤,
목록에서 전화번호의 국가 지역 코드와 전화를 받을 수 있는 휴대폰 번호를 입력하고,
CAPTCHA 표시 코드와 제공 받은 PIN을 입력한 다음 인증을 완료합니다.

6. AWS Support 플랜을 Basic Support 플랜을 선택한 뒤, 가입을 완료(Complete sign up)해줍니다.

7. 생성한 계정으로 로그인합니다.

2. EC2 생성

최초 계정을 생성한 이후엔 클라우드 자원이 생성되어 있지 않기 때문에 EC2 생성 단계 수행이 필요합니다.
여기서 생성한 EC2는 Control Tower를 배포하기 위해 필요한 사전의 사용량을 생성하는 단계입니다.

1. 클라우드 콘솔에서 EC2 서비스로 이동하여 인스턴스를 다음과 같이 생성을 진행합니다.

2. 인스턴스 생성 버튼을 누른 뒤, 아래와 같은 옵션의 인스턴스 생성 작업을 진행합니다.

Step 1 : Choose an Amazon Machine Image (AMI)
Amazon Linux 2 AMI (HVM) – Kernel 5.10, SSD Volume Type 선택

Step 2: Choose an Instance Type
t3.micro 선택

Step 3: Configure Instance Details
– Network : default VPC 선택 Subnet : defaule in ap-northeast-2c 선택

3.Launch를 클릭하고, Select an existing Key pair or create a new key pair 팝업 창이 나타나면 Proceed without a key pair 를 선택하여 Launch Instance 작업을 완료합니다.

3. AWS Control Tower 배포

AWS Control Tower는 많은 기업이 클라우드로 이동할 때 안전한 다중 계정 AWS 환경을 설정하고 관리하는 가장 쉬운 방법을 제공하는
관리 형 서비스입니다.

AWS Management Console에서 단순한 클릭 몇번과 필요한 항목의 입력 만으로 AWS Control Tower 배포를 시작하는데,
AWS Control Tower 서비스 배포가 수행 되면 다음 작업들이 수행됩니다.

먼저, AWS Management Console에서 서비스 배포가 수행되면 2개의 OU(Organizational Unit)이 생성됩니다.

  • Security : Control Tower의 공유 계정
  • Sandbox : AWS 계정 생성을 위한 기본 Location명

그런 다음 AWS Control Tower 관리 계정에서 2개의 추가 계정을 프로비저닝합니다.

  • Log Archive: 통합 로그 수집
  • Audit : 보안 감사

이후 보안 정책을 시행하기 위한 Preventive Guardrail과 위반을 감지하기 위한 Detective Guardrail이 생성되고,
AWS SSO를 사용하여 Single Sign-On에 액세스할 수 있는 네이티브 클라우드 디렉토리와 사전 구성된 사용자 그룹 및 권한이 배포 됩니다.

마지막으로 Account Factory Portfolio : AWS Service Catalog를 사용하여 AWS Control Tower 내에 새로운 AWS 계정을 배포 할 수 있는
템플릿이 배포되는 것으로 Provisioning이 완료됩니다.

1. AWS Control Tower 배포를 위해서는 Management Account (관리 계정)이라는 관리 콘솔에 로그인 한 뒤,
Control Tower 서비스로 이동합니다.

2. 계정의 리전을 확인한 뒤, AWS Control Tower 페이지에서 Set up your landing zone 버튼을 클릭 합니다.

3. AWS Control Tower 배포를 위해서 다음과 같이 필요한 옵션을 설정해 줍니다.

Step1. Review pricing and select Regions 입력 항목
– Home Region : Asia Pacific(Seoul)
– Region deny setting : Not enabled
– Additional AWS Regions for governance : 입력하지 않음

* Region deny setting을 Enable하게 되면 Control Tower에서 관리 되지 않은 리전은 접근을 금지 시키는 보안 룰이 적용되기 때문에
실습 환경에서는 Disable로 설정을 수행합니다. 이 설정은 Control Tower가 배포된 이후에 Setting메뉴에서 변경이 가능합니다.

Step2. Configure organizational units (OUs) 입력 항목
– Foundational OU : Security
– Additional OU : Production

* 실습 수행시에는 Sanbdox OU명을 Production로 변경하여 실습을 수행합니다.

Step3. Configure shared accounts and encryption 입력 항목
– Log archive account > Create account : sl2207kico+ctlog@gmail.com 
– Log archive account > Change account name : Log Archive
– Audit account > Create account : sl2207kico+ctaudit@gmail.com 
– Audit account > Change account name : Audit

* Log Archive 계정은 모든 계정들의 API 작업 및 리소스 구성에 대한 로그들을 변경불가하게 보관하는 저장소이며,
Audit 계정은 보안 및 컴플라이언스 팀이 모든 계정들에 대한 읽기 및 쓰기 액세스를 얻기 위한 제한된 계정입니다.

Step4. Review and set up landing zone 입력 항목
– 입력된 값을 재 확인하고 I understand the permission AWS Control Tower will use to administer AWS resources and enforce rules on my behalf 의
체크박스를 체크한 뒤,  Set up landing zone 버튼을 클릭하여 랜딩존 생성을 시작합니다.

랜딩존 생성을 진행하면 AWS Control Tower Dashboard로 리다이렉트 됩니다. 이는 대시보드 상단의 파란색 바에서 설치 진행 상태로 확인할 수 있습니다.

4. 랜딩존 생성 후 계정의 E-mail 주소로 Invitation to join AWS Single Sign-on이라는 제목의 이메일에 첨부된 Accept Invitation을 통해  AWS Single Sign-on 페이지로 리다이렉트 합니다.

* AWS Single Sign-on 페이지에서 로그인 후, AWS Control Tower 관리 계정에 대한 “New Password”를 설정하고 사용자를 업데이트합니다.

5. AWS Control Tower Console에 로그인을 완료하면 아래와 같은 관리 화면을 확인할 수 있습니다.

6. AWS Control Tower Console에 로그인을 완료한 후, 요금이 과금될 수 있는 EC2 인스턴스 삭제를 진행합니다.

————————————————————————————————————————————-

2. Control Tower 관리

Control Tower를 통한 관리를 위해서는 대시보드와 기본 관리 체계를 이해하고, 핵심 기능인 Guardrails의 원리에 대해서 이해해야 합니다.

이해를 돕기 위한 다음 실습으로는 Workload를 위한 새로운 계정(Commerce)를 생성하고, 이를 통해 Commerce 계정에서 클라우드 자원을 배포하는 실습을 진행할 예정이며, 본 실습 진행의 서비스 구조도는 다음과 같습니다.

출처 : AWS Control Tower Workshop – Control Tower 관리 기본 구성도

1. SSO ( Single Sign-On ) 로그인

1. Control Tower를 제어하기 위해서 앞서 랜딩존을 생성할 때 수신했던 메일의 링크를 통해 SSO로 다시 재 로그인 해줍니다.

2. AWS Control Tower 관리 계정을 클릭하면 확장되는 계정들 중, 
AWSAdministratorAccess Role 옆에 있는 Management Console을 선택하여 관리 계정의 AWS 관리 콘솔에 로그인합니다.

2. Dashboard 이해하기

AWS Control Tower는 AWS 환경에 대한 최상위 수준의 요약을 볼 수 있으며,
한 곳에서 계정에 대한 모든 정보를 확인할 수 있는 통합 대시보드를 제공하고 있습니다.
이는 프로비저닝 된 계정의 개수, 계정 전체적으로 활성화 된 정책의 수 등 계정 규정 준수 상태에 대한 세부 정보도 확인할 수 있습니다.

AWS Control Tower 초기화 프로세스는 로그 아카이브 및 보안 감사를 위한 두 개의 새로운 공유 계정을 생성하며,
Security 및 Sandbox 라는 (기본) 이름의 두 개의 OU(조직 단위)도 생성합니다.

본 실습 환경에서는 Custom OU명을 Sandbox 에서 Production으로 변경하여 진행하였으며, 공유 계정인 로그 아카이브 및 감사 계정은 Security OU에 배치되었고, 필요에 따라 추가적으로 기본 OU 구성 이외에 조직의 필요에 따라 대시보드에서 더 많은 OU를 직접 생성할 수 있습니다.

출처 : AWS Control Tower Workshop – Control Tower 관리 Dashboard Environment Summary

2-1. Environment Summary

아래의 화면과 같이 작성자의 실습 환경으로 구성된 대시보드를 살펴보면, 현재 운영중인 Control Tower의 구성요소 ( OU , Account , Guardrail) 의
현황 등 Control Tower의 대시보드에서 조직내의 규정 준수 여부 및 관리 현황을 파악할 수 있습니다.

또한 각 Summary의 링크를 클릭하면 아래의 화면과 같이
Registered organizational units 현황에서는 OU의 Control Tower 등록 상태와 Compliance 준수 여부를, 
Enrolled accounts에서는 Account(계정) 단위에서의 관리 상태를 확인하는 등 각 Summary에 대한 상세 내용을 확인할 수 있습니다.

* 만약, OU 단위 혹은 Account 단위에서 Compliance 준수 여부가 Non Compliant 라고 한다면, Control Tower 관리자 ( 혹은 보안 관리자 )는 규정 준수를 위한 후속 활동을 수행하여야 합니다.

2-2. Enabled Guardrail Summary

또한 대시보드의 가장 하단의 화면을 보면 Control Tower에서 적용된 가드레일의 정보를 확인할 수 있는데,
여기서 사전 정의된 가드레일은 필수 요소를 제외하고는 Enable 되지 않은 상태를 유지하며,
이는 고객사의 보안 / 관리 요건에 따라 Enable 상태로 변경될 수 있습니다.

3. OU ( Organization ) & Account 이해하기

Control Tower에서는 Organization의 OU (Organizational Unit) 와 계정(Account)에 대한 관리를 수행할 수 있습니다.
Control Tower의 관리에 포함되지 않은 OU를 등록 (register) 및 재등록 (re-register)하는 실습을 진행하여 보겠습니다.

3-1. Organization

대시보드 화면 좌측의 Organizational 메뉴를 클릭하여 들어가보면, 현재의 Organization에 대한 상세 내용을 확인 할 수 있으며,
Create Organizational Uint 버튼을 통해 OU를 단위 별로, [ 추가, 삭제, 등록 ]에 대한 작업들을 진행할 수 있습니다.

등록(Registered) 상태의 의미는 OU가 Control Tower의 관리 체계에 포함된다는 의미이며, 규정 준수에 대한 모니터링을 포함하고 있습니다.
특수한 상황이 아닌, 일반적인 경우라면 OU의 State는 항상 Registered의 상태를 유지해야 합니다.

3-2. Accounts

Organization 목록에서 [ + ] 버튼을 눌러 목록을 확장해 보면, Account 목록을 확인할 수 있습니다.

각 Account의 이름을 클릭해보면, Account의 상세 정보를 추가로 확인할 수 있습니다.

* 위의 ‘Audit’ Account 정보에 대한 설명은 다음과 같이 해석할 수 있습니다.

  • Audit Account는 Security OU 소속 입니다.
  • 20개의 Preventive , 3개의 Detective 가드레일이 활성화되어 있으며, OU에서 상속된 상태 입니다.
  • 규정 준수 상태입니다. ( 상세 내용은 Noncompliant resource 확인 )
  • Control Tower에서 관리되는 리전은 1개 입니다. ( 상세 내용은 Regions 확인 )
  • 별도로 외부에서 관리되는 Config Rule은 존재하지 않습니다.

4. Account Factory 이해하기

AWS Control Tower에서는 Account Factory의 기능을 활용하여 신규 계정을 생성할 수 있습니다.

출처 : AWS Control Tower Workshop – Control Tower 신규 계정 생성 목표 설명도

Account Factory 메뉴에서는 [ Create Account ] 버튼을 통해 신규 계정을 생성하거나,
기존에 보유하고 있는 계정의 등록(Enroll Account) 작업이 가능하며,
계정 생성시 [ Edit ] 버튼을 통해 Default VPC 구성에 대한 설정을 수행할 수 있습니다.

Network Configureation Edit를 클릭하게 되면, 계정이 신규로 생성되는 시점에 적용 하게 되는 VPC 설정 수행이 가능합니다.

4-1. Network Configuration Edit 설정하기

– Internet-accessible subnet : 인터넷 사용 가능 여부
– Maximum number of private subnets : AZ당 Private Subnet 갯수
– Address range (CIDR) restriction for account VPCs : VPC CIDR
– Regions for VPC creation : VPC를 생성 해야 하는 Region
– Availability Zones

* 신규 계정 생성시에 Defalut VPC 구성을 원하지 않는 경우에는
[ Internet-accessible subnet Disable 설정 ], [ Maximum number of private subnets = 0 ], [ Regions for VPC creation의 선택되는 Region이 없도록 ] 하면 Default VPC는 생성되지 않습니다.

* Internet-accessible subnet은 다음 실습 환경 구성을 위해 Enable 상태로 변경하고 저장합니다.

4-2. 신규 계정 발급하기

AWS Control Tower Account Factory에서 신규 AWS 계정을 생성하기 위해서 [ Create account ] 버튼을 클릭하고,
계정 이메일 주소와 SSO 이메일 주소, SSO 사용자 이름 등 양식을 작성한 후, 생성을 완료합니다.

[ 입력 항목 ]
– Account eMail : abcdefg+ctcommerce@gmail.com  ( 실습자 별로, 접두사-abcdefg 는 개인 이메일 주소로 대체 )
– Display Name : commerce
– AWS SSO email : abcdefg+ctmgmt@gmail.com  ( Control Tower 관리 계정의 이메일 주소를 기입 )
– SSO User Name : 사용자 이름
– Parent OU : Production

계정 생성이후, 대시보드에서 [ Compliance Status ]와 [ State ]의 상태를 확인한 뒤,

[ Enrolled ] 상태로 변경되는 것을 끝으로 계정 생성을 완료합니다.

5. Guardrails 이해하기

Guardrails 메뉴에서 Default Guardrail을 확인해보면,
가드레일이 전반적인 AWS 환경에 대한 지속적인 거버넌스를 제공하는 상위 수준 규칙임을 알 수 있습니다.

AWS Control Tower는 가드레일을 통해 예방 또는 탐지 기능으로 리소스를 관리하고,
AWS 계정 그룹 전체에서 규정 준수를 모니터링하는 데 도움을 줍니다.

가드레일에 적용된 정책은 OU(조직 단위)에 적용되며, OU 내 모든 AWS 계정 및 하위 OU는 가드레일 정책의 영향을 받습니다.
따라서 사용자가 landing zone에서 AWS 계정 작업을 수행하는 경우, 항상 해당 계정의 OU를 관리하는 가드레일의 적용을 받습니다.

* 가드레일은 Behavior와 Guidance 레벨에 따라 다르게 동작하며,
Behavior는 ‘Preventive 가드레일’과 ‘Detective 가드레일’로 구분될 수 있고, Guidance 레벨에 따라서 필수, 권고, 선택적으로 적용할 수 있습니다.

5-1. Behavior Guardrails
  • 예방 (Prevention) 가드레일 : 정책이 적용이 된 상태에서 정책 위반 시도는 혀용 되지 않습니다. 실제 구현은 SCP (Service Control Polcy) 의 형태로 배포 됩니다.
  • 탐지(Detection) 가드레일 : 정책 위반을 감시합니다. Detective 가드레일은 정책 위반 시도는 혀용 하면서 정책 위반 사항에 대해서 모니터링을 수행 합니다. 실제 구현은 Config 의 형태로 배포 됩니다.
5-2. Detective Guardrails
  • 필수 (Mandatory) : 필수적으로 적용이 되어야 하는 관리 규칙이며, Default로 적용이 되어 있습니다.
  • 권고 (Strongly recommended) : 필요에 따라 OU, 계정 레벨에서 활성화할 수 있습니다.
  • 선택 (Elective) : 선택적인 관리 항목 입니다. 고객의 요건에 따른 활성화 정책을 적용 합니다.
5-3. Guardrails 해석하기

예시로 화면 상단의 Disallow deletion of log archive를 클릭하여 정의된 정책과 적용된 OU에 대해서 살펴보면,
Prevention 가드레일로 정의된 [ Disallow deletion of log archive ]는 SCP로 구성 되어 있으며, Security OU에 적용됨을 확인할 수 있습니다.

또한 SCP에 적용된 정책 내용을 확인 하기 위해서 화면상의 SCP(Service Control Policy) 링크를 클릭하면, 다음과 같이 정책을 확인할 수 있습니다.

[ Disallow deletion of log archive ]의 Gurardrail 내용을 살펴보면, AWSControlTowerExecution Role이 아닐 때, 접두사 aws-controltower로 시작하는 S3 버켓에 대한 삭제를 금지 하는 정책이라는 것을 알 수 있습니다.

해석 >
AWSControlTowerExecution Role 은 Control Tower의 유일한 관리자 Role로서 Control Tower의 관리 권한이 아니라면,
Control Tower의 운영을 위한 기본 설정을 System Admin이라 할지라도 수정을 하지 못하게 금지한다.

이상으로 AWS Control Tower 서비스를 활용한 다중 계정 관리 환경 구성을 진행해보았습니다.

추후 자세한 서비스 이용에 관한 구성 방법은 [ AWS Control Tower 보안과 규제 관리 ] 링크를 참조 부탁드립니다.

감사합니다.

“[Hands On] AWS Control Tower 구성하기”의 1개의 댓글

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다