カスタマイズのための設定 - AWS Control Tower

カスタマイズのための設定

次のセクションでは、カスタマイズプロセスのために 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 アカウントでロールを設定するには
  1. AWS Control Tower 管理アカウントにプリンシパルとしてフェデレートまたはサインインします。

  2. 管理アカウントのフェデレーションプリンシパルから、ブループリントハブアカウントとして機能するように選択した登録済みの AWS Control Tower アカウントの AWSControlTowerExecution ロールを継承するか、ロールを切り替えます。

  3. 登録した AWS Control Tower アカウントの AWSControlTowerExecution ロールから、適切な権限と信頼関係を持つ AWSControlTowerBlueprintAccess ロールを作成します。

注記

AWS のベストプラクティスのガイダンスに従うには、AWSControlTowerBlueprintAccess ロールを作成した直後に AWSControlTowerExecution ロールからサインアウトすることが重要です。

AWSControlTowerExecution ロールは、リソースの意図しない変更を防ぐために、AWS Control Tower でのみ使用することを目的としています。

ブループリントハブアカウントが AWS Control Tower に登録されていない場合は、AWSControlTowerExecution ロールがアカウントに存在しないため、AWSControlTowerBlueprintAccess ロールのセットアップを続行する前にロールを継承する必要はありません。

未登録のメンバーアカウントでロールを設定するには
  1. 推奨されている方法で、ハブアカウントとして指定したいアカウントにプリンシパルとしてフェデレートまたはサインインします。

  2. アカウントにプリンシパルとしてログインしたら、適切な権限と信頼関係を持つ AWSControlTowerBlueprintAccess ロールを作成します。

AWSControlTowerBlueprintAccess ロールは、次の 2 つのプリンシパルに信頼を付与するように設定する必要があります。

  • AWS Control Tower 管理アカウントで AWS Control Tower を実行するプリンシパル (ユーザー)。

  • AWS Control Tower 管理アカウントの AWSControlTowerAdmin という名前のロール。

次に信頼ポリシーの例を示します。これは、ロールに含める必要があるポリシーと似ています。このポリシーは、最小特権アクセスの付与のベストプラクティスを示しています。独自のポリシーを作成する場合は、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 Service Catalog 製品リソースの AWS Control Tower による管理を許可する際に AWS Service Catalog が必要とするアクセス許可が提供されます。このポリシーは、IAM コンソールでロールを作成するときにアタッチできます。

追加のアクセス許可が必要な場合があります
  • ブループリントを Amazon S3 に保存する場合、AWS Control Tower には AWSControlTowerBlueprintAccess ロールの AmazonS3ReadOnlyAccess アクセス許可ポリシーも必要です。

  • AWS Service Catalog Terraform タイプの製品では、デフォルトの Admin ポリシーを使用しない場合、AFC カスタム IAM ポリシーにいくつかのアクセス許可を追加する必要があります。Terraform テンプレートで定義するリソースを作成するために必要なアクセス許可に加えて、これらが必要です。

ステップ 2. AWS Service Catalog 製品を作成する

AWS Service Catalog 製品を作成するには、「AWS Service Catalog 管理者ガイド」の「製品の作成」の手順に従ってください。AWS Service Catalog 製品を作成するとき、アカウントのブループリントをテンプレートとして追加します。

重要

HashiCorp による Terraform ライセンスの更新に伴って、AWS Service Catalog はサポートの対象を Terraform オープンソース製品およびプロビジョニングされた製品から、External という新しい製品タイプに変更しました。この変更が AFC に与える影響の詳細 (既存のアカウントのブループリントを External 製品タイプに更新する方法など) については、「External 製品タイプへの移行」を参照してください。

ブループリントを作成する手順の概要
  • アカウントのブループリントとなる AWS CloudFormation テンプレートまたは Terraform tar.gz 設定ファイルを作成またはダウンロードします。いくつかのテンプレートの例については、このセクションの後半に示します。

  • Account Factory ブループリントを保存する AWS アカウント (ハブアカウントと呼ばれることもあります) にログインします。

  • AWS Service Catalog コンソールに移動します。次に、[Product list] (製品リスト) を選択し、[Upload new product] (新しい製品をアップロード) を選択します。

  • [Product details] (製品詳細) ペインに、名前や説明など、ブループリント製品の詳細を入力します。

  • [Use a template file] (テンプレートファイルの使用)、[Choose file] (ファイルの選択) の順に選択します。ブループリントとして使用するために作成またはダウンロードしたテンプレートや設定ファイルを選択または貼り付けます。

  • コンソールページの下部にある [Create product] (製品を作成する) を選択します。

AWS CloudFormation テンプレートは AWS Service Catalog リファレンスアーキテクチャリポジトリからダウンロードできます。そのリポジトリの例は、リソースのバックアッププランを設定するのに役立ちます

以下は、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 管理者ガイド」の「製品の管理」を参照してください。

ステップ 4. ブループリントを呼び出して、カスタマイズされたアカウントを作成する

AWS Control Tower コンソールの[Create account] (アカウントの作成) ワークフローに従うと、オプションのセクションが表示され、アカウントのカスタマイズに使用できるブループリントに関する情報を入力できます。

注記

カスタマイズするハブアカウントを設定し、ブループリント (Service Catalog 製品) を少なくとも 1 つ追加してから、その情報を AWS Control Tower コンソールに入力して、カスタマイズされたアカウントのプロビジョニングを開始する必要があります。

AWS Control Tower コンソールで、カスタマイズされたアカウントを作成または更新します。
  1. ブループリントを含んでいるアカウントのアカウント ID を入力します。

  2. そのアカウントから、既存の Service Catalog 製品 (既存のブループリント) を選択します。

  3. 複数のバージョンのブループリント (Service Catalog 製品) がある場合は、適切なバージョンを選択します。

  4. (オプション) プロセスのこの時点で、ブループリントプロビジョニングポリシーを追加または変更できます。ブループリントプロビジョニングポリシーは、JSON で記述され、IAM ロールにアタッチされている場合、ブループリントテンプレートで指定されたリソースをプロビジョニングします。AWS Control Tower は、Service Catalog が AWS CloudFormation スタックセットを使用してリソースをデプロイできるように、メンバーアカウントにこのロールを作成します。ロールの名前は AWSControlTower-BlueprintExecution-bp-xxxx です。デフォルトでは、AdministratorAccess ポリシーがここに適用されます。

  5. このブループリントに基づいてアカウントをデプロイする AWS リージョンを 1 つまたは複数選択します。

  6. ブループリントにパラメータが含まれている場合は、パラメータの値を AWS Control Tower ワークフローの追加フィールドに入力できます。追加する値には、GitHub リポジトリ名、GitHub ブランチ、Amazon ECS クラスター名、およびリポジトリ所有者の GitHub ID が含まれる場合があります。

  7. ハブアカウントまたはブループリントの準備がまだ整っていない場合は、アカウントの更新プロセスに従って後からアカウントをカスタマイズできます。

詳細については、「ブループリントからカスタマイズされたアカウントを作成する」を参照してください。