AWS Control Tower Landing Zone 4.0으로 업그레이드
소개
AWS Control Tower Landing Zone 3.x를 사용하고 있다면, 이제 버전 4.0으로 업그레이드하여 AWS 조직 전체에 거버넌스 컨트롤을 적용하는 방식에서 더 많은 유연성을 확보할 수 있습니다. 이 문서에서는 주요 아키텍처 변경 사항을 안내하고, 마이그레이션 영향을 이해하는 데 도움을 주며, 성공적인 업그레이드를 위한 단계별 가이드를 제공합니다.
이전 버전의 AWS Control Tower(3.x 이하)에서는 랜딩 존을 활성화하려면 사전 정의된 조직 구조와 필수 서비스 통합을 수락해야 했습니다. Landing Zone 4.0은 이러한 제약을 제거하여 다음을 가능하게 합니다:
- 기존 조직을 재구성하지 않고도 AWS Control Catalog에서 1,200개 이상의 컨트롤에 접근
- 특정 요구사항에 따라 활성화할 AWS 서비스를 자유롭게 선택할 수 있습니다. 서비스 통합이 더 이상 필수가 아니므로 다음이 가능합니다:
- 필요할 때만 탐지적 컨트롤을 위해 AWS Config를 활성화
- 기존 감사 로깅 솔루션이 있는 경우 독립적으로 AWS CloudTrail을 관리
- ID 관리 전략에 따라 AWS IAM Identity Center에 선택적으로 참여
- 백업 요구사항에 따라 AWS Backup 통합을 제어
- AWS Organizations 통합과 컨트롤만으로 최소한의 랜딩 존을 배포하며, 전용 서비스 통합 계정이 필요하지 않음
- 자체 조직 단위(OU) 계층 구조를 정의하면서 AWS Control Tower 거버넌스를 적용
이 컨트롤 전용 모델은 기존 랜딩 존을 가진 기업에 특히 유용합니다. 이전 버전에서 요구되었던 광범위한 재구성 없이 점진적으로 AWS Control Tower 거버넌스를 도입할 수 있습니다.
AWS Control Catalog에서 최대한의 가치를 얻기 위한 추가 가이드는 AWS 문서를 참조하세요: Search and discover governance controls with Control Catalog in AWS Control Tower.
이점 및 아키텍처 변경 사항
Landing Zone 4.0은 더 큰 유연성과 운영 효율성을 제공하는 중요한 개선 사항을 도입합니다. 다음 비교표는 버전 3.x와 4.0의 주요 차이점을 보여줍니다:
| 기능 | 버전 3.x | 버전 4.0 |
|---|---|---|
| 서비스 통합 | 필수 | 선택 |
| AWS Config S3 버킷 | AWS CloudTrail과 공유 | 전용 버킷 |
| AWS Config 집계기 | Organization + 계정 집계기 | 서비스 연결 집계기 |
| 위임된 관리자 | 없음 | AWS Config용 감사 계정 |
| OU 구조 | 필수 Security OU | 유연한 고객 정의 구조 |
| Manifest 필드 | 필수 | 선택 |
| Config 기준 | AWSControlTowerBaseline의 일부 | 독립형 ConfigBaseline |
| 드리프트 알림 | Amazon SNS | Amazon EventBridge |
사전 요구사항
AWS Control Tower Landing Zone 4.0으로 업그레이드하기 전에 다음 요구사항을 충족하는지 확인하세요:
중요: 이 업그레이드는 되돌릴 수 없습니다. AWS Control Tower는 이전 랜딩 존 버전으로의 다운그레이드를 지원하지 않습니다. Landing Zone 4.0으로 업그레이드하면 버전 3.x로 롤백할 수 없습니다. 먼저 비프로덕션 환경에서 업그레이드를 테스트하고, 진행하기 전에 포괄적인 백업을 수행하는 것을 강력히 권장합니다.
일반 사전 요구사항
-
조직 드리프트 해결: Landing Zone 4.0으로 업그레이드하기 전에 모든 조직 드리프트를 해결하는 것을 강력히 권장합니다. AWS Control Tower 콘솔에서 드리프트를 확인할 수 있습니다. 업그레 이드 전에 해결되지 않은 드리프트는 업그레이드 후와 OU 재등록 후에도 지속될 수 있으며, 해결을 위해 AWS Support 케이스가 필요할 수 있습니다.
-
AWS Control Tower 사전 요구사항 검토: 환경이 모든 표준 AWS Control Tower 사전 요구사항을 충족하는지 확인하세요.
-
서비스 통합 종속성 검토: 기준 간의 종속성을 이해하세요. 향후 AWS Config 통합을 비활성화할 계획이라면, 서비스 종속성으로 인해 Security Roles, AWS IAM Identity Center 및 AWS Backup 통합도 비활성화해야 합니다.
-
포괄적인 백업 수행: 업그레이드 전에 현재 구성을 문서화하고 백업하세요:
- 조직 구조 내보내기(OU, 계정, 계정-OU 매핑)
- 현재 Landing Zone 설정, Config 집계기 보기, SNS 토픽 구성 스크린샷 또는 내보내기
- Config 규칙 및 집계기 구성 내보내기
- CloudFormation StackSet 템플릿 및 파라미터 내보내기
- OU별 현재 기준 버전 및 OU별 컨트롤 활성화 상태 문서화
- 해당되는 경우 CfCT CloudFormation 템플릿 저장
# 조직 단위 내보내기
aws organizations list-organizational-units-for-parent \
--parent-id <ROOT_ID> > org_units_backup.json
# 모든 계정 내보내기
aws organizations list-accounts > accounts_backup.json
# Config 규칙 내보내기
aws configservice describe-config-rules > config_rules_backup.json
# Config 집계기 내보내기
aws configservice describe-configuration-aggregators > aggregators_backup.json
# Control Tower IAM 역할 내보내기
aws iam get-role --role-name AWSControlTowerExecution > ct_exec_role_backup.json
aws iam get-role --role-name AWSControlTowerCloudTrailRole > ct_cloudtrail_role_backup.json
AWS CloudFormation StackSet 사전 요구사항
닫힌/중지된 계정의 스택 인스턴스 제거
AWS 계정이 닫힐 때, 관리 계정의 AWSControlTowerBP-* StackSets에 있는 해당 AWS CloudFormation 스택 인스턴스는 자동으로 제거되지 않습니다. 업그레이드 중 AWS Control Tower가 이러한 StackSets를 업데이트하려고 하면 닫힌 계정에서 AWSControlTowerExecution을 맡을 수 없어 실패합니다. 이는 문서화된 제한 사항입니다.
시간이 지남에 따라 계정을 닫은 조직에서는 각 StackSet 작업이 순차 적으로 시간 초과되면서 업그레이드가 중단될 수 있습니다. 이를 방지하려면 업그레이드 전에 다음 사전 검사 및 수정을 실행하세요:
사전 검사:
# 닫힌/중지된 계정 식별
CLOSED=$(aws organizations list-accounts \
--query "Accounts[?Status!='ACTIVE'].Id" --output text)
# AWS Control Tower StackSets에서 고아 스택 인스턴스 확인
for SS in $(aws cloudformation list-stack-sets --status ACTIVE \
--query "Summaries[?starts_with(StackSetName,'AWSControlTowerBP-')].StackSetName" \
--output text); do
for ACCT in $CLOSED; do
COUNT=$(aws cloudformation list-stack-instances --stack-set-name "$SS" \
--query "length(Summaries[?Account=='${ACCT}'])" --output text)
[ "$COUNT" -gt 0 ] && echo "BLOCKER: $SS has $COUNT instances for closed account $ACCT"
done
done
권장 수정 방법:
# 위 사전 검사에서 BLOCKER로 표시된 각 StackSet에 대해,
# 닫힌 계정의 고아 인스턴스를 제거
aws cloudformation delete-stack-instances \
--stack-set-name "<stackset-name>" \
--accounts '["<closed-account-id>"]' \
--regions '["us-east-1","us-west-2"]' \
--retain-stacks \
--no-cli-pager
중요:
--retain-stacks플래그가 필수입니다. 이 플래그 없이는 AWS CloudFormation이 닫힌 계정에서AWSControlTowerExecution을 맡아 스택을 삭제하려고 시도하며, 이는 실패합니다.