1. LifeCycle Event
- Control Tower에서의 Admin 작업은 내부에서 LifeCycle이라는 명칭으로 생성됨.
- 계정 발급의 인지를 위해 CT의 LifeCycle 이벤트를 가시화 해야함.
- CloudTrail의 이벤트 기록을 보면, 아래와 같이 확인할 수 있다.
- CreateManagedAccount 첫번째꺼 클릭해보자.
production Ou의 commerce 계정 생성에 대한 이벤트 로그이다.
- 그리고 Control Tower Activities에서도 확인이 가능하다.
2. EventHandling
- 이 이벤트를 보안팀에서 수신받을 수 있도록 해보자.
- 워크샵에는 이메일 전송이지만 나는 복습도 할겸 슬랙으로 수신 받아본다.
- SNS 생성
- EventBridge Rule 설정
- ChatBot 생성
> 이전 연동 이력이 있음 > <
> 챗봇용 정책 생성
> 새 채널 구성
- 이벤트 발생
> CT 가드레일에서 production OU에 Rule Enable
> 활성 완료
> SLACK 알람옴
※ 정리 : 이벤트브릿지 (EnableGuardrail) > SNS > ChatBot > SLACK
3. CFCT(Customization for Contorl Tower)
- Control Tower 및 여러 AWS 서비스 솔루션을 이용하여 멀티 어카운트 환경을 쉽고(?), 빠르게 구축할 수 있도록 함.
- CloudFormation 스택 생성 (테스트용 템플릿 첨부-AWS제공)
- 배포 후 S3버킷에 저장된 CFCT 소스를 확인할 수 있음.
소스명은 _custom-control-tower-configuration.zip이라는 명칭으로 저장되어 있으며, 언더바로 시작한 소스는 실행되지 않음. (내 환경에 맞게 code 설정을 한 뒤에 실행하기 위해)
- codepipeline에서도 확인가능함. 소스 코드를 업로드하지 않아 실행 안됨.
- EventBridge에서 CFCT로 시작하는 Rule을 확인해보자.
Account가 생성되면, SQS Queue에 Enque 함.
- 그러면 소스코드를 받아보자.
CFCT의 소스는 KMS Key로 암호화 되어 있음. KMS Key에 Admin 접근 권한 추가하고, 소스 다운로드 해야함.
- 우선 KMS 고객 관리키의 CustomControlTowerKMSKey를 수정해야한다.
ARN 값을 찾기 위해 IAM Role에 들어가서 페더레이션 사용자 정보를 토대로 역할을 찾는다.
그리고 상세에서 ARN을 복사 한다.
- 그리고 ARN값을 토대로 KMS 고객 관리키의 CustomControlTowerKMSKey 정책을 수정하면 된다.
- S3 버킷에 드가서 소스 코드를 다운 받아보자
까서 보면 알겠지만, 거의 틀만 잡혀 있다.
- 소스를 넣어보자.
[manifest.yaml]
- Seoul Region(Home Region)의 Production OU에 설정할 SCP, IAM 역할, AWS Config 를 정의한다.
[preventive-guardrails.json]
- SCP에 대한 내용이 기입되어 있다. 수정할 건 없다.
[describe-regions-iam-role.template]
[access_keys_rotated.template]
- 이로써 아래의 구조가 완성된다.
.
├── manifest.yaml
├── policies
│ └── preventive-guardrails.json
└── templates
├── access_keys_rotated.template
└── describe-regions-iam-role.template
- 압축하여 S3 버킷에 업로드 해보자. (파일명: custom-control-tower-configuration)
- CodePipeline 에 들어가보면, 코드가 실행 중인 것을 확인할 수 있다.
뭐 때문인지 잘 안됐다.. 에러 뜬다..하아...
우선 terraform을 이용하여 구현하는 것부터 해보자
4. Account Factory for Terraform(AFT)
Control Tower에서 어카운트 팩토리와 CFCT로 이원화 되어 있는 부분을 AFT만으로 구현이 가능하다.
- Terraform OSS(테라폼 오픈소스 소프트웨어)를 사용한다.
- Terraform에 대한 기초 설정 및 개념은 생략한다고 한다...테라폼은 따로 공부해보겠다.
- SSO에서 ControlTower 계정으로 로긴해서, Control Tower > 조직> OU추가 를 진행한다.
- Account Factory(계정 팩토리)에서 aft OU의 신규 계정을 생성한다.
계정이 프로비저닝 되는데 시간이 쵸큼 소요 된다.
- AWS CLI 설치 및 AWS Configure 를 수행하자
CLI는 버전 2가 기능이 많으니, 버전 1 사용하고 있다면 재설치 해보자.
아래 명령어를 cmd창에 입력하면 chage로 진행이 되나, aws --version 명령어를 통해 버전 2인지 확인이 필요하다.
버전이 1로 유지 된다면 cmd 창을 재접속해보고, 그래도 동일 증상이면 버전1을 삭제하고 버전 2를 설치해보자
(제어판 > 프로그램 삭제)
[AWS CLI 설치]
msiexec.exe /i https://awscli.amazonaws.com/AWSCLIV2.msi
[AWS Configure]
c:\Terraform>aws configure
AWS Access Key ID [****************SZAX]: ASIA3ONWE6PVPLQMSZAX
AWS Secret Access Key [****************97IM]: RjGgDtzdOMT2xV1aFPZdIQOFxQeNGL7G9FDs97IM
Default region name [ap-northeast-2]:
Default output format [json]:
- 깃헙에서 소스코드를 받아보자.
다운로드한 파일은 환경변수로 지정한 경로로 이동 시킨다.
(난 c:\Terraform)
https://github.com/aws-ia/terraform-aws-control_tower_account_factory
GitHub - aws-ia/terraform-aws-control_tower_account_factory: AWS Control Tower Account Factory
AWS Control Tower Account Factory. Contribute to aws-ia/terraform-aws-control_tower_account_factory development by creating an account on GitHub.
github.com
- terraform init을 해준다.
초기화 과정이다.
- Terraform 디렉토리의 tf파일(하시코프 언어(HCL)로 작성된 파일)이 적용한지 확인하는 작업인 terraform plan을 진행한다. 어떤 리소스가 생성되고, 수정되고, 삭제될지 보여준다.
- terraform apply --auto-approve 으로 실제 프로비저닝을 수행해본다.
참고로 계정정보는 Organizations나 SSO에서 확인하면 편하다.
- 람다 함수 관련 에러가 무더기로 발생했다.
람다 에러는 apply를 다시 해주면 된다.
- 성공. 가끔 임시 자격증명이 만료되어서 Credencial 관련 에러가 뜰 수 있다.
다시 aws configure 해주면 된다.
- 배포 후에는 Service Catalog의 Account Factory portpolio에 AFT가 사용할 AWSAFTExecution 역할을 추가해줘야 한다.
해당 역할은 교차 계정 접근을 위한 목적으로 적용하는 것이다.
Account Provisioning은 AFT mgmgt 계정에서, Account Factory는 Control Tower mgmt 계정에서 해야하기 때문.
콘솔에서 적용해보자.
- AFT 배포 완료 확인 해보자.
1) VPC
2) CodePipeline
'네트워크 & 클라우드 > AWS' 카테고리의 다른 글
[AWS-17] Network Firewall Resource Group (1) | 2023.02.15 |
---|---|
[AWS-16] ControlTower - 02.보안 규제 (0) | 2022.11.17 |
[AWS-16] ControlTower - 01.기초 (0) | 2022.11.15 |
[AWS-15] EC2 프로세스가 죽으면 SLACK으로 알림받기 (0) | 2022.10.29 |
[AWS-14] KMS(Key Management Service) - 작성중 (0) | 2022.10.26 |