AWS Organizations 계정 마이그레이션 준비 가이드
면책 조항: 이 가이드는 AWS 계정을 조직 간에 이전할 때 일반적으로 발생하는 종속성과 고려 사항을 기반으로 최선의 안내를 제공합니다. 마이그레이션의 성공적인 완료는 각 고객의 고유한 시나리오, 워크로드 및 종속성에 따라 달라집니다. 고객은 자신의 특정 환경을 철저히 평가하고, 모든 종속성을 검증하며, 실행 전에 마이그레이션 계획을 테스트할 책임이 있습니다. 이 가이드는 모든 가능한 종속성이나 엣지 케이스를 다루지는 않습니다.
범위
이 가이드는 AWS Organizations 간의 계정 마이그레이션을 다룹니다. 여기서 설명하는 접근 방식은 Account Assessment for AWS Organizations와 CFAT를 활용하여 검토 및 평가 프로세스를 신속하게 진행합니다. 사용하는 도구나 접근 방식에 따라 단계가 다를 수 있지만, 이 가이드는 검증된 하나의 방법을 제공합니다.
AWS Control Tower 환경으로 계정을 이전하는 경우, 이 가이드를 마이그레이션 전 종속성 점검으로 활용한 후, 계정이 대상 조직으로 이전된 다음 Enroll an existing AWS account 가이드를 보완적으로 따르시기 바랍니다.
주요 서비스 및 종속성 개요
다음 표는 계정을 조직 간에 이전할 때 영향을 받을 수 있는 주요 AWS 서비스 및 기능을 요약합니다:
| 카테고리 | 서비스/기능 | 이전 시 영향 |
|---|---|---|
| 접근 제어 | IAM Identity Center | 권한 세트 할당이 제거되어 사용자가 접근 권한을 잃음 |
| 인가 | Service control policies (SCPs) | 즉시 적용이 중단됨 |
| 인가 | Resource control policies (RCPs) | 즉시 적용이 중단됨 |
| 선언적 | Declarative policies (EC2) | 즉시 적용이 중단됨 |
| 관리 | Tag, Backup, AI opt-out 정책 | 계정에서 분리됨 |
| 인프라 | AWS CloudFormation StackSets | 리소스가 삭제될 수 있음 (보존 설정에 따라 다름) |
| 리소스 공유 | AWS Resource Access Manager | 조직 범위 공유가 취소됨 (보존 기능을 활성화하지 않은 경우) |
| 위임 | Delegated administrator 서비스 | 이전 전에 등록 해제해야 하며, 일부 서비스는 데이터를 삭제함 |
| 정책 조건 | aws:PrincipalOrgID / aws:PrincipalOrgPaths | 원본 조직 ID를 참조하는 정책이 접근을 거부함 |
| 결제 | Reserved Instances / Savings Plans | 조직 전체 공유 혜택이 사라짐 |
| 결제 | Cost allocation tags | 대상 조직에서 재활성화해야 함 |
| Observability | Amazon EventBridge 교차 계정 | 조직 ID를 참조하는 이벤트 버스 정책이 작동하지 않게 됨 |
| 계정 접근 | Root user / OrganizationAccountAccessRole | 이전 전에 확인하지 않으면 모든 접근 권한을 잃을 수 있음 |
개요
이 가이드는 AWS 계정을 AWS Organizations 간에 이전하기 전에 마이그레이션 준비 상태를 평가하는 단계별 프로세스를 제공합니다. 자동화된 도구(Account Assessment for AWS Organizations + CFAT)와 검증된 CLI 명령을 결합하여 모든 종속성을 포괄합니다.
적용 대상: 인수합병, 조직 통합, 계정 재구성
활용하는 주요 기능:
- Direct Account Transfers (2025년 11월) — 독립 기간(standalone period) 불필요
- AWS RAM RetainSharingOnAccountLeaveOrganization (2026년 2월) — 이전 중 리소스 공유 보존
참고 자료:
- Migrate an account to another organization — AWS 문서
- Moving an account - Part 1: Policies, AWS RAM, condition keys — AWS 블로그
- Moving an account - Part 2: Delegated administrators — AWS 블로그
1단계: 평가 도구 배포
1.1 Account Assessment for AWS Organizations 배포
관리 계정에 배포합니다. 제공 기능: Policy Explorer, Delegated Admin 스캔, Trusted Access 스캔
이 가이드에서는 간단하게 Hub 스택을 관리 계정에 배포하는 방식을 보여줍니다. 프로덕션 환경에서는 관리 계정에서 최소 권한 원칙을 준수하기 위해, Hub 스택을 별도의 멤버 계정(예: 공유 서비스 또는 보안 도구 계정)에 배포하는 것이 권장됩니다. Org-Management 스택은 어떤 경우든 항상 관리 계정에 배포해야 합니다.
Hub Stack (관리 계정):
aws cloudformation create-stack \
--stack-name AccountAssessment-Hub \
--template-url https://solutions-reference.s3.amazonaws.com/account-assessment-for-aws-organizations/latest/account-assessment-for-aws-organizations-hub.template \
--capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM CAPABILITY_AUTO_EXPAND \
--parameters \
ParameterKey=DeploymentNamespace,ParameterValue=<NAMESPACE> \
ParameterKey=UserEmail,ParameterValue=<EMAIL> \
"ParameterKey=AllowListedIPRanges,ParameterValue=0.0.0.0/1\,128.0.0.0/1" \
ParameterKey=OrganizationID,ParameterValue=<ORG_ID> \
ParameterKey=ManagementAccountId,ParameterValue=<MGMT_ACCOUNT_ID> \
--region <REGION>
Org-Management Stack (관리 계정):
aws cloudformation create-stack \
--stack-name AccountAssessment-OrgMgmt \
--template-url https://solutions-reference.s3.amazonaws.com/account-assessment-for-aws-organizations/latest/account-assessment-for-aws-organizations-org-management.template \
--capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM CAPABILITY_AUTO_EXPAND \
--parameters \
ParameterKey=DeploymentNamespace,ParameterValue=<NAMESPACE> \
ParameterKey=HubAccountId,ParameterValue=<HUB_ACCOUNT_ID> \
--region <REGION>
Spoke Stack (평가 대상 각 계정, StackSet을 통해 배포):
aws cloudformation create-stack-set \
--stack-set-name AccountAssessment-Spoke \
--template-url https://solutions-reference.s3.amazonaws.com/account-assessment-for-aws-organizations/latest/account-assessment-for-aws-organizations-spoke.template \
--capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM \
--parameters \
ParameterKey=DeploymentNamespace,ParameterValue=<NAMESPACE> \
ParameterKey=HubAccountId,ParameterValue=<HUB_ACCOUNT_ID> \
--permission-model SERVICE_MANAGED \
--auto-deployment Enabled=true,RetainStacksOnAccountRemoval=false \
--region <REGION>
aws cloudformation create-stack-instances \
--stack-set-name AccountAssessment-Spoke \
--deployment-targets OrganizationalUnitIds=<ROOT_OR_OU_ID> \
--regions <REGION> \
--region <REGION>
중요: 관리 계정에도 Spoke 스택을 직접 배포해야 합니다 (SERVICE_MANAGED 권한 모델의 StackSets는 관리 계정을 제외함):
aws cloudformation create-stack \
--stack-name AccountAssessment-Spoke \
--template-url https://solutions-reference.s3.amazonaws.com/account-assessment-for-aws-organizations/latest/account-assessment-for-aws-organizations-spoke.template \
--capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM CAPABILITY_AUTO_EXPAND \
--parameters \
ParameterKey=DeploymentNamespace,ParameterValue=<NAMESPACE> \
ParameterKey=HubAccountId,ParameterValue=<HUB_ACCOUNT_ID> \
--region <REGION>
1.2 CFAT (Cloud Foundation Assessment Tool) 실행
관리 계정의 CloudShell에서 실행합니다:
curl -sSL https://raw.githubusercontent.com/cloud-foundations-on-aws/cloud-foundations-templates/main/cfat/run-assessment.sh | sh
결과 다운로드: ./cfat/assessment.zip
2단계: 자동화된 평가 (Account Assessment 도구)
2.1 웹 UI에서 스캔 실행
- Account Assessment 웹 UI에 로그인합니다 (Cognito 자격 증명은 이메일로 확인)
- Delegated Admin 스캔 실행 → CSV 다운로드
- Trusted Access 스캔 실행 → CSV 다운로드
- Policy Explorer 야간 스캔 완료를 대기합니다 (또는 수동으로 트리거):
# Policy Explorer 스캔을 수동으로 트리거
aws lambda invoke \
--function-name <NAMESPACE>-PolicyExplorerStartScan-<ID> \
--payload '{"source": "manual-trigger"}' \
--region <REGION> \
/dev/null
2.2 Policy Explorer에서 조직 종속성 검색
웹 UI의 Policy Explorer에서:
- "Add OrgId" 버튼을 클릭하여 정책 조건에서 Organization ID를 검색합니다
aws:PrincipalOrgID,aws:PrincipalOrgPaths,aws:ResourceOrgID를 검색합니다- 결과를 CSV로 다운로드합니다
검색 결과로 확인할 수 있는 항목:
- 조직 조건이 포함된 리소스 기반 정책 (S3, KMS, SQS, SNS, Lambda 등)
- 조직을 참조하는 자격 증명 기반 정책
- 조직 관련 조건이 포함된 SCPs
3단계: 수동 종속성 확인 (CLI 명령)
다음 점검 항목은 자동화된 도구에서 다루지 않는 부분을 보완합니다.
3.1 계정을 대상으로 하는 AWS CloudFormation StackSets
위험: 서비스 관리형 StackSets는 계정이 조직을 떠 날 때 해당 계정의 리소스를 삭제합니다 (RetainStacksOnAccountRemoval=true로 설정하지 않은 경우).
다음 명령은 관리 계정 또는 CloudFormation StackSets의 위임된 관리자 계정에서 실행합니다. 서비스 관리형 StackSets는 이러한 계정에서만 관리할 수 있습니다.
# 모든 활성 StackSets 목록 조회
aws cloudformation list-stack-sets --status ACTIVE --region <REGION>
# 각 StackSet에 대해, 마이그레이션 대상 계정에 인스턴스가 있는지 확인
aws cloudformation list-stack-instances \
--stack-set-name <STACKSET_NAME> \
--stack-instance-account <ACCOUNT_ID> \
--region <REGION>
# 보존 설정 확인
aws cloudformation describe-stack-set \
--stack-set-name <STACKSET_NAME> \
--region <REGION> \
--query "StackSet.AutoDeployment.RetainStacksOnAccountRemoval"
조치: RetainStacksOnAccountRemoval=false로 설정된 각 StackSet 중 중요한 리소스를 배포하는 경우, 다음 중 하나를 수행합니다:
- 마이그레이션 전에
RetainStacksOnAccountRemoval=true로 업데이트 - 또는 해당 리소스가 삭제될 것임을 문서화하고 대상 조직에서 재생성 계획 수립
3.2 IAM Identity Center 할당
위험: 마이그레이션 대상 계정의 모든 권한 세트 할당이 계정이 떠날 때 제거됩니다. 사용자는 해당 계정에 대한 IAM Identity Center 접근 권한을 잃게 됩니다.
다음 명령은 관리 계정 또는 Identity Center 위임된 관리자 계정에서 실행합니다.
# Identity Center 인스턴스 ARN 조회
aws sso-admin list-instances --region <REGION>
# 해당 계정에 프로비저닝된 모든 권한 세트 목록 조회
aws sso-admin list-permission-sets-provisioned-to-account \
--instance-arn <INSTANCE_ARN> \
--account-id <ACCOUNT_ID> \
--region <REGION>
# 각 권한 세트에 대해 접근 권한이 있는 사용자 목록 조회
aws sso-admin list-account-assignments \
--instance-arn <INSTANCE_ARN> \
--account-id <ACCOUNT_ID> \
--permission-set-arn <PERMISSION_SET_ARN> \
--region <REGION>
조치: 모든 할당을 문서화합니다. 대상 조직의 Identity Center에서 마이그레이션 후 동등한 권한 세트와 할당을 재생성합니다.
3.3 AWS Resource Access Manager (AWS RAM) 리소스 공유
위험: 조직 범위의 AWS RAM 공유는 계정이 떠날 때 취소됩니다. 2026년 2월에 출시된 새 기능을 통해 보존이 가능합니다.
# 마이그레이션 대상 계정이 소유한 공유 확인 (해당 계정에서 실행)
aws ram get-resource-shares --resource-owner SELF --region <REGION>
# 마이그레이션 대상 계정이 사용 중인 공유 확인
aws ram get-resource-shares --resource-owner OTHER-ACCOUNTS --region <REGION>
# 공유에 포함된 실제 리소스 목록 조회
aws ram list-resources --resource-owner OTHER-ACCOUNTS --region <REGION>
aws ram list-resources --resource-owner SELF --region <REGION>
완화 조치 (2026년 2월 기능): 이전 전에 AWS RAM 공유에 보존 기능을 활성화합니다:
# 공유 소유자 계정에서 실행
aws ram update-resource-share \
--resource-share-arn <SHARE_ARN> \
--retain-sharing-on-account-leave-organization \
--region <REGION>
SCP를 통한 조직 전체 적용:
{
"Effect": "Deny",
"Action": ["ram:CreateResourceShare", "ram:UpdateResourceShare"],
"Resource": "*",
"Condition": {
"BoolIfExists": {
"ram:RetainSharingOnAccountLeaveOrganization": "false"
}
}
}
3.4 조직 정책 (인가, 선언적, 관리 정책)
위험: 계정이 이전되면 모든 조직 정책의 적용이 중단됩니다. 여기에는 인가 정책(SCPs, RCPs), 선언적 정책(EC2), 관리 정책이 포함됩니다.
다음 명령은 관리 계정 또는 AWS Organizations의 위임된 관리자 계정에서 실행합니다.
중요: Account Assessment의 Policy Explorer는 SCP 내용만 스캔합니다. RCPs, 선언적 정책, 관리 정책은 다루지 않으므로 수동으로 확인해야 합니다.
팁: CFAT는 유용한 초기 스냅샷을 제공합니다 — SCPs, RCPs, Tag Policies, Backup Policies가 조직 수준에서 활성화되어 있는지 확인할 수 있습니다. 이를 출발점으로 삼아 아래 CLI 명령으로 더 깊이 조사해야 할 정책 유형을 파악하세요.
# 먼저: 조직에서 활성화된 모든 정책 유형 확인
aws organizations list-roots --query "Roots[0].PolicyTypes"
# --- 인가 정책 ---
# 계정에 적용된 SCPs (Policy Explorer에서도 내용 확인 가능)
aws organizations list-policies-for-target \
--target-id <ACCOUNT_ID> \
--filter SERVICE_CONTROL_POLICY
# 계정에 적용된 RCPs (Policy Explorer에서 다루지 않음)
aws organizations list-policies-for-target \
--target-id <ACCOUNT_ID> \
--filter RESOURCE_CONTROL_POLICY
# --- 선언적 정책 ---
# Declarative Policies (EC2 - 예: 허용된 AMI, 퍼블릭 스냅샷 차단)
aws organizations list-policies-for-target \
--target-id <ACCOUNT_ID> \
--filter DECLARATIVE_POLICY_EC2
# --- 관리 정책 ---
# 활성화된 각 관리 정책 유형 확인:
aws organizations list-policies-for-target --target-id <ACCOUNT_ID> --filter TAG_POLICY
aws organizations list-policies-for-target --target-id <ACCOUNT_ID> --filter BACKUP_POLICY
aws organizations list-policies-for-target --target-id <ACCOUNT_ID> --filter AISERVICES_OPT_OUT_POLICY
aws organizations list-policies-for-target --target-id <ACCOUNT_ID> --filter BEDROCK_POLICY
aws organizations list-policies-for-target --target-id <ACCOUNT_ID> --filter CHATBOT_POLICY
aws organizations list-policies-for-target --target-id <ACCOUNT_ID> --filter INSPECTOR_POLICY
aws organizations list-policies-for-target --target-id <ACCOUNT_ID> --filter NETWORK_SECURITY_DIRECTOR_POLICY
aws organizations list-policies-for-target --target-id <ACCOUNT_ID> --filter S3_POLICY
aws organizations list-policies-for-target --target-id <ACCOUNT_ID> --filter SECURITYHUB_POLICY
aws organizations list-policies-for-target --target-id <ACCOUNT_ID> --filter UPGRADE_ROLLOUT_POLICY
# 계정의 상위 OU 조회 (정책이 상속될 수 있음)
aws organizations list-parents --child-id <ACCOUNT_ID>
# OU 수준의 정책 목록 조회 (각 정책 유형에 대해 반복)
aws organizations list-policies-for-target \
--target-id <OU_ID> \
--filter <POLICY_TYPE>
# 대상 조직에서 복제할 정책 내용 조회
aws organizations describe-policy --policy-id <POLICY_ID>
# 유효한 관리 정책 조회
aws organizations describe-effective-policy \
--policy-type TAG_POLICY \
--target-id <ACCOUNT_ID>
aws organizations describe-effective-policy \
--policy-type BACKUP_POLICY \
--target-id <ACCOUNT_ID>
aws organizations describe-effective-policy \
--policy-type AISERVICES_OPT_OUT_POLICY \
--target-id <ACCOUNT_ID>
주요 구분:
- 인가 정책 (SCPs, RCPs) — SCPs는 보안 주체가 수행할 수 있는 API 작업을 제한합니다. RCPs는 리소스에 대해 수행할 수 있는 작업을 제한합니다 (예: Secrets Manager에 대한 비암호화 접근 차단). Policy Explorer는 SCPs만 스캔하며 RCPs는 스캔하지 않습니다.
- 선언적 정책 (EC2) — EC2에 대한 원하는 상태 구성을 강제합니다 (예: 허용된 AMI만 사용, 퍼블릭 스냅샷 차단). 어떤 도구에서도 스캔되지 않습니다.
- 관리 정책 — Tag, Backup, AI opt-out, Bedrock, ChatBot, Inspector, SecurityHub, S3, Network Security Director, Upgrade Rollout. 이전 시 분리됩니다. 어떤 도구에서도 스캔되지 않습니다.
조치: 조직에서 활성화된 각 정책 유형에 대해:
- 계정에 적용된 정책 목록 조회 (직접 적용 + OU/루트에서 상속된 정책)
describe-policy로 정책 내용 확인- 이전 전에 대상 조직에서 복제
- 선언적 정책의 경우: 계정의 리소스가 대상 조직 정책도 준수하는지 확인
3.5 Delegated administrator 서비스
위험: 마이그레이션 전에 등록을 해제해야 합니다. 일부 서비스는 등록 해제 시 데이터를 삭제합니다 (Detective, Firewall Manager).
다음 명령은 관리 계정에서 실행합니다.
# 모든 위임된 관리자 계정 목록 조회
aws organizations list-delegated-administrators
# 마이그레이션 대상 계정의 서비스 목록 조회
aws organizations list-delegated-services-for-account \
--account-id <ACCOUNT_ID>
조치: 각 위임된 서비스에 대해:
- 대체 위임 관리자를 등록합니다 (조직이 계속 운영되는 경우)
- 마이그레이션 대상 계정의 등록을 해제합니다
- 서비스별 등록 해제 명령 및 데이터 손실 영향은 Part 2 블로그를 참고하세요
3.6 Amazon EventBridge 교차 계정 이벤트 버스
위험: 조직을 참조하는 교차 계정 이벤트 전달 권한이 작동하지 않게 됩니다.
# 이벤트 버스 정책에서 조직 기반 권한 확인
aws events describe-event-bus --region <REGION>
# EventBridge를 사용하는 모든 리전에서 확인
aws events describe-event-bus --name default --region <REGION>
조치: 이벤트 버스 리소스 정책을 조직 ID 대신 계정 ID를 사용하도록 업데이트하거나, 대상 조직 ID를 추가합니다.
3.7 결제 및 비용 관리
위험: 조직 수준의 결제 내역은 관리 계정에 남습니다. Cost allocation tags는 재활성화해야 합니다.
# 활성 cost allocation tags 목록 조회 (대상 조직에서 재생성하기 위해)
aws ce list-cost-allocation-tags --status Active
# CUR 보고서 설정 확인
aws cur describe-report-definitions --region us-east-1
# 조직 정보 확인 (기능 세트, 대상 조직 호환성용)
aws organizations describe-organization
# 마이그레이션 대상 계정이 소유한 Savings Plans 목록 조회 (해당 계정에서 실행)
aws savingsplans list-savings-plans --states active
# 마이그레이션 대상 계정이 소유한 Reserved Instances 목록 조회 (해당 계정에서 실행)
aws ec2 describe-reserved-instances --filters Name=state,Values=active --region <REGION>
# Reserved Instance/Savings Plan 공유 기본 설정 확인 (관리 계정에서 실행)
# 참고: Billing Console → Preferences → RI and Savings Plans discount sharing에서
# 공유 모드 (Organization-wide, Prioritized Group, Restricted Group) 확인
조치:
- 이전 전에 모든 결제 보고서를 내보냅니다
- 활성 cost allocation tags를 문서화합니다
- 대상 조직에서 cost allocation tags를 재활성화합니다 (최대 24시간 소요)
- Reserved Instances 및 Savings Plans:
- 마이그레이션 대상 계정이 구매한 Reserved Instances/Savings Plans는 계정과 함께 이동합니다 — 그러나 원본 조직의 통합 청구서에는 더 이상 적용되지 않습니다
- 원본 조직의 다른 계정이 구매하여 마이그레이션 대상 계정과 공유하던 Reserved Instances/Savings Plans는 이전 후 더 이상 마이그레이션 계정에 혜택을 제공하지 않습니다
- Reserved Instances/Savings Plans는 구매된 조직에서만 적용됩니다 — 여러 조직에 걸쳐 적용될 수 없습니다
- 마이그레이션 대상 계정이 조직 전체 Reserved Instance/Savings Plan 공유 혜택을 받고 있었다면, 이전 즉시 해당 할인을 잃게 됩니다
- 마이그레이션 대상 계정이 조직 전체로 공유되던 Reserved Instances/Savings Plans를 소유하고 있었다면, 원본 조직은 해당 할인 용량을 잃게 됩니다
- 공유 모 드 확인: Organization-wide, Prioritized Group, Restricted Group 공유에 따라 영향 범위가 달라집니다
- 마이그레이션 전에 Reserved Instances/Savings Plans를 다른 계정으로 이전해야 하는 경우 AWS Support에 문의하세요
4단계: CFAT 기반 준비 상태 (대상 조직)
CFAT 결과를 사용하여 대상 조직이 계정을 수용할 준비가 되었는지 확인합니다:
| CFAT 점검 항목 | 마이그레이션에서 중요한 이유 |
|---|---|
| Control Tower 배포됨 | 이전되는 계정에 가드레일을 제공 |
| Security OU 존재 | 계정에 관리된 랜딩 존이 필요 |
| Log Archive 계정 존재 | 마이그레이션된 계정의 중앙 집중식 로깅 |
| IAM Identity Center 구성됨 | 사용자가 새 계정에 IAM Identity Center 접근이 필요 |
| SCPs 활성화됨 | 거버넌스 정책이 준비되어야 함 |
| Config Recorder 활성화됨 | 새 계정의 규정 준수 모니터링 |
5단계: 이전 전 체크리스트
| # | 점검 항목 | 도구 | CLI 명령 | 상태 |
|---|---|---|---|---|
| 1 |