Account Factory 사용자 지정(AFC)을 사용하여 계정 사용자 지정 - AWS Control Tower

Account Factory 사용자 지정(AFC)을 사용하여 계정 사용자 지정

AWS Control Tower를 사용하면 AWS Control Tower 콘솔에서 리소스를 프로비저닝할 때 신규 및 기존 AWS 계정을 사용자 지정할 수 있습니다. Account Factory 사용자 지정을 설정하면 향후 프로비저닝을 위해 AWS Control Tower가 이 프로세스를 자동화하므로 파이프라인을 유지 관리할 필요가 없습니다. 사용자 지정 계정은 리소스가 프로비저닝된 직후에 사용할 수 있습니다.

블루프린트를 사용하여 새 계정 프로비저닝

사용자 지정 계정은 AWS Control Tower Account Factory, CloudFormation 템플릿 또는 Terraform을 통해 프로비저닝됩니다. 사용자 지정 계정 블루프린트 역할을 하는 템플릿을 정의합니다. 블루프린트는 계정이 프로비저닝될 때 필요한 특정 리소스 및 구성을 설명합니다. AWS 파트너가 구축하고 관리하는 사전 정의된 블루프린트도 사용할 수 있습니다. 파트너 관리형 블루프린트에 대한 자세한 내용은 AWS Service Catalog 시작하기 라이브러리를 참조하세요.

기존 계정에 블루프린트 적용

AWS Control Tower 콘솔의 계정 업데이트 단계에 따라 기존 계정에 사용자 지정 블루프린트를 적용할 수도 있습니다. 자세한 내용은 콘솔에서 계정 업데이트 섹션을 참조하세요.

정의: 허브 계정

계정 블루프린트는 AWS 계정에 저장되며, 이를 허브 계정이라고 합니다. 블루프린트는 Service Catalog 제품의 형태로 저장됩니다. 다른 Service Catalog 제품과 구분하기 위해 이 제품을 블루프린트라고 부릅니다. Service Catalog 제품을 생성하는 방법에 대한 자세한 내용은 AWS Service Catalog 관리자 안내서제품 생성을 참조하세요.

참고

AWS Control Tower에는 AWS Control Tower의 CloudFormation 리소스를 모니터링하는 선제적 제어가 포함되어 있습니다. 선택적으로 랜딩 존에서 이러한 제어를 활성화할 수 있습니다. 선제적 제어를 적용하면 계정에 배포하려는 리소스가 조직의 정책 및 절차를 준수하는지 확인합니다. 선제적 제어에 대한 자세한 내용은 선제적 제어를 참조하세요.

AFC 작업에 대한 자세한 내용은 AWS Control Tower에서 Account Factory 사용자 지정을 사용하여 계정 사용자 지정 자동화를 참조하세요.

사전 조건

AWS Control Tower Account Factory에서 사용자 지정 계정을 생성하려면 우선 AWS Control Tower 랜딩 존 환경이 배포되어 있어야 하며 새로 생성된 계정이 배치될 AWS Control Tower에 등록된 조직 단위(OU)가 있어야 합니다.

사용자 지정 준비
  • 허브 계정 지정: 허브 계정으로 사용할 새 계정을 생성하거나 기존 AWS 계정을 사용할 수 있습니다. AWS Control Tower 관리 계정을 블루프린트 허브 계정으로 사용하지 않는 것이 좋습니다.

  • 필요한 역할 추가: AWS 계정을 AWS Control Tower에 등록하고 사용자 지정하려는 경우 먼저 AWS Control Tower에 등록하는 다른 계정과 마찬가지로 해당 계정에 AWSControlTowerExecution 역할을 추가해야 합니다.

  • 파트너 블루프린트 구성(선택 사항): 마켓플레이스 구독 요구 사항이 있는 파트너 블루프린트를 사용하려는 경우 파트너 블루프린트를 Account Factory 사용자 지정 블루프린트로 배포하기 전에 AWS Control Tower 관리 계정에서 이를 구성해야 합니다.

참고

AWS Control Tower 계정당 하나의 블루프린트를 배포할 수 있습니다.

Account Factory 사용자 지정(AFC) 고려 사항

  • AFC는 단일 AWS Service Catalog 블루프린트 제품만 사용하여 사용자 지정을 지원합니다.

  • AWS Service Catalog 블루프린트 제품은 허브 계정에서 그리고 AWS Control Tower 랜딩 존 홈 리전과 동일한 리전에서 생성해야 합니다.

  • AWSControlTowerBlueprintAccess IAM 역할은 적절한 이름, 권한 및 신뢰 정책을 사용하여 생성해야 합니다.

  • AWS Control Tower는 블루프린트에 대해 두 가지 배포 옵션을 지원합니다. 즉, 홈 리전에만 배포하거나 AWS Control Tower가 관리하는 모든 리전에 배포할 수 있습니다. 리전을 선택할 수는 없습니다.

  • 멤버 계정에서 블루프린트를 업데이트하면 블루프린트 허브 계정 ID와 AWS Service Catalog 블루프린트 제품을 변경할 수 없습니다.

  • AWS Control Tower는 단일 블루프린트 업데이트 작업에서 기존 블루프린트 제거 및 새 블루프린트 추가를 지원하지 않습니다. 블루프린트를 제거한 다음 별도의 작업에 새 블루프린트를 추가할 수 있습니다.

  • AWS Control Tower는 생성 또는 등록할 계정이 사용자 지정 계정인지 아니면 사용자 지정되지 않은 계정인지에 따라 동작을 변경합니다. 블루프린트를 사용하여 사용자 지정 계정을 생성 또는 등록하지 않는 경우 AWS Control Tower는 AWS Control Tower 관리 계정에서 Service Catalog를 통해 Account Factory에서 프로비저닝된 제품을 생성합니다. 블루프린트로 계정을 생성 또는 등록할 때 사용자 지정을 지정하는 경우 AWS Control Tower는 AWS Control Tower 관리 계정에서 Account Factory에서 프로비저닝된 제품을 생성하지 않습니다.

블루프린트 오류가 발생할 때

블루프린트 적용 중 오류 발생

계정에 블루프린트를 적용하는 과정에서 오류가 발생하는 경우, 해당 계정이 새 계정이든 AWS Control Tower에 등록 중인 기존 계정이든 복구 절차는 동일합니다. 계정이 존재하지만 사용자 지정되지 않았으며 AWS Control Tower에 등록되지 않았습니다. 계속하려면 단계에 따라 AWS Control Tower에 계정을 등록하고 등록 시 블루프린트를 추가합니다.

AWSControlTowerBlueprintAccess 역할 및 해결 방법 생성 중 오류 발생

AWS Control Tower 계정에서 AWSControlTowerBlueprintAccess 역할을 생성할 때는 AWSControlTowerExecution 역할을 사용하여 위탁자로 로그인해야 합니다. 다른 계정으로 로그인한 경우 다음 아티팩트에 표시된 것처럼 SCP에 의해 CreateRole 작업이 방지됩니다.

{ "Condition": { "ArnNotLike": { "aws:PrincipalArn": [ "arn:aws:iam::*:role/AWSControlTowerExecution", "arn:aws:iam::*:role/stacksets-exec-*" ] } }, "Action": [ "iam:AttachRolePolicy", "iam:CreateRole", "iam:DeleteRole", "iam:DeleteRolePermissionsBoundary", "iam:DeleteRolePolicy", "iam:DetachRolePolicy", "iam:PutRolePermissionsBoundary", "iam:PutRolePolicy", "iam:UpdateAssumeRolePolicy", "iam:UpdateRole", "iam:UpdateRoleDescription" ], "Resource": [ "arn:aws:iam::*:role/aws-controltower-*", "arn:aws:iam::*:role/*AWSControlTower*", "arn:aws:iam::*:role/stacksets-exec-*" ], "Effect": "Deny", "Sid": "GRIAMROLEPOLICY" }

다음 해결 방법을 사용할 수 있습니다.

  • (가장 권장됨) AWSControlTowerExecution 역할을 수임하고 AWSControlTowerBlueprintAccess 역할을 생성합니다. 이 해결 방법을 선택하는 경우 리소스에 의도하지 않은 변경 사항이 발생하지 않도록 즉시 AWSControlTowerExecution 역할에서 로그아웃해야 합니다.

  • AWS Control Tower에 등록되지 않아 이 SCP의 적용을 받지 않는 계정에 로그인합니다.

  • 작업을 허용하려면 이 SCP를 일시적으로 편집합니다.

  • (매우 권장하지 않음) SCP의 적용을 받지 않도록 AWS Control Tower 관리 계정을 허브 계정으로 사용합니다.

CloudFormation을 기반으로 AFC 블루프린트에 대한 정책 문서 사용자 지정

Account Factory를 통해 블루프린트를 활성화하면 AWS Control Tower가 사용자를 대신하여 CloudFormation에 StackSets를 생성하도록 지시합니다. CloudFormation이 StackSets에서 CloudFormation 스택을 생성하려면 관리형 계정에 대한 액세스가 필요합니다. CloudFormation에는 AWSControlTowerExecution 역할을 통해 관리형 계정에 관리자 권한이 이미 있지만 이 역할은 CloudFormation에서 수임할 수 없습니다.

블루프린트 활성화의 일부로 AWS Control Tower는 CloudFormation에서 StackSet 관리 작업을 완료하기 위해 수임할 수 역할을 멤버 계정에 생성합니다. Account Factory를 통해 사용자 지정 블루프린트를 활성화하는 가장 간단한 방법은 모두 허용 정책을 사용하는 것입니다. 이러한 정책은 모든 블루프린트 템플릿과 호환되기 때문입니다.

그러나 모범 사례는 대상 계정에서 CloudFormation에 대한 권한을 제한하는 것입니다. CloudFormation이 사용하도록 생성한 역할에 AWS Control Tower가 적용하는 사용자 지정 정책을 제공할 수 있습니다. 예를 들어 블루프린트에서 something-important라는 SSM 파라미터를 생성하는 경우 다음 정책을 제공할 수 있습니다.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowCloudFormationActionsOnStacks", "Effect": "Allow", "Action": "cloudformation:*", "Resource": "arn:aws:cloudformation:*:*:stack/*" }, { "Sid": "AllowSsmParameterActions", "Effect": "Allow", "Action": [ "ssm:PutParameter", "ssm:DeleteParameter", "ssm:GetParameter", "ssm:GetParameters" ], "Resource": "arn:*:ssm:*:*:parameter/something-important" } ] }

AllowCloudFormationActionsOnStacks 문은 모든 AFC 사용자 지정 정책에 필요합니다. CloudFormation은 이 역할을 사용하여 스택 인스턴스를 생성하므로 스택에서 CloudFormation 작업을 수행할 수 있는 권한이 필요합니다. 이 AllowSsmParameterActions 섹션은 활성화되는 템플릿에 따라 다릅니다.

권한 문제 해결

제한된 정책으로 블루프린트를 활성화하면 블루프린트를 활성화할 권한이 부족할 수 있습니다. 이러한 문제를 해결하려면 정책 문서를 수정하고 수정된 정책을 사용하도록 멤버 계정의 블루프린트 기본 설정을 업데이트합니다. 정책이 블루프린트를 활성화하기에 충분한지 확인하려면 CloudFormation 권한이 부여되었는지 그리고 해당 역할을 사용하여 직접 스택을 생성할 수 있는지 확인합니다.

Terraform 기반 Service Catalog 제품을 생성하는 데 필요한 추가 권한

AFC용 Terraform 구성 파일을 사용하여 AWS Service Catalog 외부 제품을 생성할 때 AWS Service Catalog는 템플릿에 정의된 리소스를 생성하는 데 필요한 권한 외에도 특정 권한을 AFC 사용자 지정 IAM 정책에 추가하도록 요구합니다. 기본 전체 관리자 정책을 선택하는 경우에는 이러한 추가 권한을 추가하지 않아도 됩니다.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Action": [ "resource-groups:CreateGroup", "resource-groups:ListGroupResources", "resource-groups:DeleteGroup", "resource-groups:Tag" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "tag:GetResources", "tag:GetTagKeys", "tag:GetTagValues", "tag:TagResources", "tag:UntagResources" ], "Resource": "*", "Effect": "Allow" }, { "Action": "s3:GetObject", "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "s3:ExistingObjectTag/servicecatalog:provisioning": "true" } } } ] }

AWS Service Catalog에서 외부 제품 유형을 사용하여 Terraform 제품을 생성하는 방법에 대한 자세한 내용은 Service Catalog 관리자 안내서의 5단계: 시작 역할 생성을 참조하세요.

AWS Service Catalog 외부 제품 유형으로 전환

AWS Service Catalog에서 Terraform Open Source 제품 및 프로비저닝된 제품에 대한 지원이 외부라는 새로운 제품 유형으로 변경되었습니다. 이 전환에 대해 자세히 알아보려면 AWS Service Catalog 관리자 안내서기존 Terraform Open Source 제품 및 프로비저닝된 제품을 외부 제품 유형으로 업데이트를 참조하세요.

이 변경 사항은 AWS Control Tower Account Factory 사용자 지정을 통해 생성하거나 등록한 기존 계정에 영향을 미칩니다. 이러한 계정을 외부 제품 유형으로 전환하려면 AWS Service Catalog 및 AWS Control Tower 모두에서 변경해야 합니다.

외부 제품 유형으로 전환하려면
  1. 외부Terraform Open Source 제품 유형에 대한 지원을 모두 포함하도록 AWS Service Catalog에 대한 기존 Terraform 참조 엔진을 업그레이드합니다. Terraform 참조 엔진 업데이트에 대한 지침은 AWS Service Catalog GitHub 리포지토리를 검토하세요.

  2. AWS Service Catalog에서 새 외부 제품 유형을 사용하여 기존 Terraform Open Source 제품(블루프린트)을 복제합니다. 기존 Terraform Open Source 블루프린트를 종료하지 마세요.

  3. AWS Control Tower에서 Terraform Open Source 블루프린트를 사용하여 각 계정을 업데이트하고 새 외부 블루프린트를 사용합니다.

    1. 블루프린트를 업데이트하려면 먼저 Terraform Open Source 블루프린트를 완전히 제거해야 합니다. 자세한 내용은 계정에서 블루프린트 제거를 검토하세요.

    2. 외부 블루프린트를 동일한 계정에 추가합니다. 자세한 내용은 AWS Control Tower 계정에 블루프린트 추가를 참조하세요.

  4. Terraform Open Source 블루프린트를 사용하는 모든 계정이 외부 블루프린트로 업데이트되면, AWS Service Catalog로 돌아가서 제품 유형으로 Terraform Open Source를 사용하는 모든 제품을 종료합니다.

  5. 앞으로 AWS Control Tower Account Factory 사용자 지정을 사용하여 생성되거나 등록된 모든 계정은 CloudFormation 또는 외부 제품 유형을 사용하여 블루프린트를 참조해야 합니다.

    외부 제품 유형을 사용하여 생성된 블루프린트의 경우 AWS Control Tower는 Terraform 템플릿과 Terraform 참조 엔진을 사용하는 계정 사용자 지정만 지원합니다. 자세한 내용은 사용자 지정 설정을 참조하세요.

참고

AWS Control Tower는 새 계정을 생성할 때 Terraform Open Source를 제품 유형으로 지원하지 않습니다. 이러한 변경 사항에 대해 자세히 알아보려면 AWS Service Catalog 관리자 안내서에서 기존 Terraform Open Source 제품 및 프로비저닝된 제품을 외부 제품 유형으로 업데이트를 검토하세요. 이 제품 유형 전환 과정에서 필요에 따라 AWS Service Catalog가 고객을 지원합니다. 지원을 요청하려면 계정 담당자에게 문의하세요.