사용자 지정 설정
다음 섹션에서는 사용자 지정 프로세스를 위해 Account Factory를 설정하는 단계를 설명합니다. 이 단계를 시작하기 전에 허브 계정에 대한 위임된 관리자를 설정하는 것이 좋습니다.
요약
-
1단계. 필요한 역할을 생성합니다. 블루프린트라고도 하는 Service Catalog 제품이 저장되는 (허브) 계정에 액세스할 수 있는 권한을 AWS Control Tower에 부여하는 IAM 역할을 생성합니다.
-
2단계. AWS Service Catalog 제품을 생성합니다. 사용자 지정 계정의 기준을 설정하는 데 필요한 AWS Service Catalog 제품(“블루프린트 제품”이라고도 함)을 생성합니다.
-
3단계. 사용자 지정 블루프린트를 검토합니다. 생성한 AWS Service Catalog 제품(블루프린트)을 검사합니다.
-
4단계. 블루프린트를 직접 호출하여 사용자 지정 계정을 생성합니다. 계정을 생성하는 동안 AWS Control Tower 콘솔에서 Account Factory의 적절한 필드에 블루프린트 제품 정보와 역할 정보를 입력합니다.
1단계. 필요한 역할 생성
계정 사용자 지정을 시작하기 전에 AWS Control Tower와 허브 계정 간 신뢰 관계가 포함된 역할을 설정해야 합니다. 이 역할은 허브 계정을 관리할 수 있는 액세스 권한을 AWS Control Tower에 부여합니다. 이 역할의 이름은 AWSControlTowerBlueprintAccess여야 합니다.
AWS Control Tower는 이 역할을 통해 AWS Service Catalog에서 사용자를 대신하여 포트폴리오 리소스를 생성한 다음 블루프린트를 이 포트폴리오에 Service Catalog 제품으로 추가하고 계정 프로비저닝 중에 이 포트폴리오와 블루프린트를 멤버 계정과 공유합니다.
다음 섹션에 설명된 대로 AWSControlTowerBlueprintAccess
역할을 생성합니다.
IAM 콘솔로 이동하여 필요한 역할을 설정합니다.
등록된 AWS Control Tower 계정에서 역할을 설정하려면
-
AWS Control Tower 관리 계정의 보안 주체로 페더레이션하거나 로그인합니다.
-
관리 계정의 페더레이션 보안 주체에서, 블루프린트 허브 계정으로 사용하기 위해 선택한 등록된 AWS Control Tower 계정의
AWSControlTowerExecution
역할을 수임하거나 이 역할로 전환합니다. -
등록된 AWS Control Tower 계정의
AWSControlTowerExecution
역할을 통해 적절한 권한과 신뢰 관계를 가진AWSControlTowerBlueprintAccess
역할을 생성합니다.
참고
AWS 모범 사례 지침을 준수하려면 AWSControlTowerBlueprintAccess
역할을 생성한 후 즉시 AWSControlTowerExecution
역할에서 로그아웃하는 것이 중요합니다.
리소스에 대한 의도하지 않은 변경을 방지하기 위해 AWSControlTowerExecution
역할은 AWS Control Tower에서만 사용할 수 있습니다.
블루프린트 허브 계정이 AWS Control Tower에 등록되지 않은 경우 AWSControlTowerExecution
역할은 계정에 존재하지 않으므로 AWSControlTowerBlueprintAccess
역할 설정을 계속하기 전에 이를 수임할 필요가 없습니다.
등록되지 않은 멤버 계정에서 역할을 설정하려면
-
원하는 방법을 사용하여 허브 계정으로 지정하려는 계정에 보안 주체로 페더레이션하거나 로그인합니다.
-
계정에 보안 주체로 로그인한 경우 적절한 권한과 신뢰 관계를 포함하는
AWSControlTowerBlueprintAccess
역할을 생성합니다.
AWSControlTowerBlueprintAccess 역할은 다음 두 보안 주체에 신뢰를 부여하도록 설정해야 합니다.
-
AWS Control Tower 관리 계정에서 AWS Control Tower를 실행하는 보안 주체(사용자)입니다.
-
이름이
AWSControlTowerAdmin
인 AWS Control Tower 관리 계정의 역할입니다.
다음은 역할에 포함해야 하는 것과 유사한 신뢰 정책의 예제입니다. 이 정책은 최소 권한 액세스를 부여하는 모범 사례를 보여줍니다. 자체 정책을 만들 때 YourManagementAccountId
라는 용어를 AWS Control Tower 관리 계정의 실제 계정 ID로 바꾸고, YourControlTowerUserRole
이라는 용어를 관리 계정의 IAM 역할 식별자로 바꿉니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::YourManagementAccountId:role/service-role/AWSControlTowerAdmin", "arn:aws:iam::YourManagementAccountId:role/YourControlTowerUserRole" ] }, "Action": "sts:AssumeRole" } ] }
필요한 권한 정책
AWS Control Tower에서는 AWSServiceCatalogAdminFullAccess
이라는 관리형 정책을 AWSControlTowerBlueprintAccess
역할에 연결해야 합니다. 이 정책은 AWS Control Tower가 포트폴리오 및 AWS Service Catalog 제품 리소스를 관리할 수 있도록 허용할 때 AWS Service Catalog가 찾는 권한을 제공합니다. IAM 콘솔에서 역할을 생성할 때 이 정책을 연결할 수 있습니다.
추가 권한이 필요할 수 있음
Amazon S3에 블루프린트를 저장하는 경우 AWS Control Tower에는
AWSControlTowerBlueprintAccess
역할에 대한AmazonS3ReadOnlyAccess
권한 정책도 필요합니다.기본 관리자 정책을 사용하지 않는 경우 AWS Service Catalog Terraform 유형의 제품을 사용하려면 AFC 사용자 지정 IAM 정책에 몇 가지 권한을 추가해야 합니다. Terraform 템플릿에서 정의하는 리소스를 생성하는 데 필요한 권한 외에도 이러한 권한이 필요합니다.
2단계. AWS Service Catalog 제품 생성
AWS Service Catalog 제품을 생성하려면 AWS Service Catalog 관리자 안내서의 Creating products 섹션에 나와 있는 단계를 따라야 합니다. AWS Service Catalog 제품을 생성할 때 계정 블루프린트를 템플릿으로 추가합니다.
중요
HashiCorp의 업데이트된 Terraform 라이선싱의 결과로, AWS Service Catalog는 Terraform 오픈 소스 제품 및 프로비저닝된 제품에 대한 지원을 외부라는 새로운 제품 유형으로 변경했습니다. 기존 계정 블루프린트를 외부 제품 유형으로 업데이트하는 방법을 포함하여 이 변경이 AFC에 미치는 영향에 대해 자세히 알아보려면 외부 제품 유형으로 전환을 검토하세요.
블루프린트 생성 단계 요약
-
계정 블루프린트가 될 AWS CloudFormation 템플릿 또는 Terraform tar.gz 구성 파일을 생성하거나 다운로드합니다. 일부 템플릿 예제는 이 섹션의 뒷부분에 나와 있습니다.
-
Account Factory 블루프린트(종종 허브 계정이라고도 함)를 저장하는 AWS 계정에 로그인합니다.
-
AWS Service Catalog 콘솔로 이동합니다. 제품 목록을 선택한 다음 새 제품 업로드를 선택합니다.
-
제품 세부 정보 창에서 이름 및 설명과 같은 블루프린트 제품의 세부 정보를 입력합니다.
-
템플릿 파일 사용을 선택한 다음 파일 선택을 선택합니다. 블루프린트로 사용하기 위해 개발하거나 다운로드한 템플릿 또는 구성 파일을 선택하거나 붙여넣습니다.
-
콘솔 페이지 하단에서 제품 생성을 선택합니다.
AWS Service Catalog 참조 아키텍처 리포지토리에서 AWS CloudFormation 템플릿을 다운로드할 수 있습니다. 해당 리포지토리의 한 가지 예제는 리소스에 대한 백업 계획을 설정하는 데 도움이 됩니다
다음은 Best Pets라는 가상 회사에 대한 예제 템플릿입니다. 이 템플릿은 반려동물 데이터베이스에 대한 연결을 설정하는 데 도움이 됩니다.
Resources: ConnectionStringGeneratorLambdaRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: "2012-10-17" Statement: - Effect: Allow Principal: Service: - lambda.amazonaws.com Action: - "sts:AssumeRole" ConnectionStringGeneratorLambda: Type: AWS::Lambda::Function Properties: FunctionName: !Join ['-', ['ConnectionStringGenerator', !Select [4, !Split ['-', !Select [2, !Split ['/', !Ref AWS::StackId]]]]]] Description: Retrieves the connection string for this account to access the Pet Database Role: !GetAtt ConnectionStringGeneratorLambdaRole.Arn Runtime: nodejs16.x Handler: index.handler Timeout: 5 Code: ZipFile: > const response = require("cfn-response"); exports.handler = function (event, context) { const awsAccountId = context.invokedFunctionArn.split(":")[4] const connectionString= "fake connection string that's specific to account " + awsAccountId; const responseData = { Value: connectionString, } response.send(event, context, response.SUCCESS, responseData); return connectionString; }; ConnectionString: Type: Custom::ConnectionStringGenerator Properties: ServiceToken: !GetAtt ConnectionStringGeneratorLambda.Arn PetDatabaseConnectionString: DependsOn: ConnectionString # For example purposes we're using SSM parameter store. # In your template, use secure alternatives to store # sensitive values such as connection strings. Type: AWS::SSM::Parameter Properties: Name: pet-database-connection-string Description: Connection information for the BestPets pet database Type: String Value: !GetAtt ConnectionString.Value
3단계. 사용자 지정 블루프린트 검토
AWS Service Catalog 콘솔에서 블루프린트를 볼 수 있습니다. 자세한 내용은 Service Catalog 관리자 가이드의 Managing products 섹션을 참조하세요.
4단계. 블루프린트를 직접 호출하여 사용자 지정 계정을 생성합니다.
AWS Control Tower 콘솔에서 계정 생성 워크플로를 따르면 계정 사용자 지정에 사용할 블루프린트에 대한 정보를 입력할 수 있는 선택적 섹션이 표시됩니다.
참고
AWS Control Tower 콘솔에 해당 정보를 입력하고 사용자 지정 계정 프로비저닝을 시작하려면 사용자 지정 허브 계정을 설정하고 블루프린트(Service Catalog 제품)를 하나 이상 추가해야 합니다.
AWS Control Tower 콘솔에서 사용자 지정 계정을 생성하거나 업데이트합니다.
-
블루프린트가 포함된 계정의 계정 ID를 입력합니다.
-
해당 계정에서 기존 Service Catalog 제품(기존 블루프린트)을 선택합니다.
-
버전이 두 개 이상인 경우 블루프린트(Service Catalog 제품)의 적절한 버전을 선택합니다.
-
(선택 사항) 프로세스의 이 시점에서 블루프린트 프로비저닝 정책을 추가하거나 변경할 수 있습니다. 블루프린트 프로비저닝 정책은 JSON으로 작성되어 IAM 역할에 연결되므로 블루프린트 템플릿에 지정된 리소스를 프로비저닝할 수 있습니다. AWS Control Tower는 Service Catalog가 AWS CloudFormation 스택 세트를 사용하여 리소스를 배포할 수 있도록 멤버 계정에 이 역할을 생성합니다. 이 역할의 이름은
AWSControlTower-BlueprintExecution-bp-
입니다.xxxx
AdministratorAccess
정책은 기본적으로 여기에 적용됩니다. -
이 블루프린트를 기반으로 계정을 배포하려는 AWS 리전 또는 리전을 선택합니다.
-
블루프린트에 파라미터가 포함된 경우 AWS Control Tower 워크플로의 추가 필드에 파라미터 값을 입력할 수 있습니다. 추가 값에는 GitHub 리포지토리 이름, GitHub 브랜치, Amazon ECS 클러스터 이름 및 리포지토리 소유자의 GitHub ID가 포함될 수 있습니다.
-
허브 계정 또는 블루프린트가 아직 준비되지 않은 경우 계정 업데이트 프로세스에 따라 나중에 계정을 사용자 지정할 수 있습니다.
자세한 내용은 블루프린트에서 사용자 지정 계정 생성를 참조하세요.