Account Factory Customization (AFC) を使用したアカウントのカスタマイズ - AWS Control Tower

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Account Factory Customization (AFC) を使用したアカウントのカスタマイズ

注記

単一アカウントのプロビジョニング、更新、カスタマイズは、AWSControlTowerBaseline を有効にした組織単位 (OU) をターゲットにする必要があります。OU で AWSControlTowerBaseline が有効になっていない場合は、アカウントの自動登録を有効にするか、EnabledBaseline で ResetEnabledBaseline API と ResetEnabledControl APIs を使用して、その OU EnabledControls でアカウントを登録できます。 EnabledBaselines AWSControlTowerBaseline の詳細については、「」を参照してくださいOU レベルで適用されるベースラインタイプ

AWS Control Tower では、AWS Control Tower コンソールからリソースをプロビジョニング AWS アカウント するときに、新規および既存の をカスタマイズできます。AWS Control Tower では、Account Factory Customization を設定すると、今後のプロビジョニングに備えてこのプロセスが自動化されるため、パイプラインを維持する必要がなくなります。カスタマイズされたアカウントは、リソースがプロビジョニングされるとすぐに使用できます。

ブループリントを使用して新しいアカウントをプロビジョニングする

カスタマイズされたアカウントは、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 リソースを監視します。オプションで、これらのコントロールをランディングゾーンでアクティブ化できます。プロアクティブコントロールを適用すると、アカウントにデプロイするリソースが組織のポリシーと手順に準拠しているかどうかがチェックされます。プロアクティブコントロールの詳細については、「Proactive controls」を参照してください。

AFC との連携の詳細については、「Automate account customization using Account Factory Customization in AWS Control Tower」(AWS Control Tower の Account Factory Customization を使ったアカウントのカスタマイズの自動化) を参照してください。

前提条件

カスタマイズされたアカウントの作成を AWS Control Tower の Account Factory を使用して開始する前に、AWS Control Tower のランディングゾーン環境をデプロイし、新しく作成したアカウントを配置する組織単位 (OU) を AWS Control Tower に登録しておく必要があります。

カスタマイズの準備
  • ハブアカウントを指定する: ハブアカウントとして機能する新しいアカウントを作成するか、既存の を使用できます AWS アカウント。AWS Control Tower 管理アカウントをブループリントハブアカウントとしては使用しないことを強くお勧めします。

  • 必要なロールを追加する: AWS Control Tower AWS アカウント に登録してカスタマイズする場合は、AWS Control Tower に登録する他のアカウントと同様に、まずAWSControlTowerExecutionロールをそれらのアカウントに追加する必要があります。

  • パートナーのブループリントの設定 (オプション): マーケットプレイスサブスクリプション要件を持つパートナーのブループリントを使用する予定の場合は、これらのブループリントを AWS Control Tower 管理アカウントから設定した後に Account Factory Customization ブループリントとしてデプロイする必要があります。

注記

AWS Control Tower アカウントごとに 1 つのブループリントをデプロイできます。

Account Factory Customizations (AFC) に関する考慮事項

  • AFC は、単一の AWS Service Catalog ブループリント製品を使用したカスタマイズのみをサポートしています。

  • AWS Service Catalog ブループリント製品は、ハブアカウントと、AWS Control Tower ランディングゾーンのホームリージョンと同じリージョンに作成する必要があります。

  • AWSControlTowerBlueprintAccess IAM ロールは、適切な名前、権限、信頼ポリシーを使用して作成する必要があります。

  • AWS Control Tower は、ホームリージョンのみにデプロイするか、またはAWS Control Tower によって管理されているすべてのリージョンにデプロイするかという 2 つのブループリントのデプロイオプションをサポートしています。リージョンの選択はできません。

  • メンバーアカウントのブループリントを更新すると、ブループリントハブアカウント ID と AWS Service Catalog ブループリント製品を変更することはできません。

  • AWS Control Tower では、1 回のブループリント更新操作で既存のブループリントの削除と新しいブループリントの追加を同時に行うことはできません。ブループリントを削除してから、別の操作で新しいブループリントを追加できます。

  • 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 ロールを使用してプリンシパルとしてサインインする必要があります。他のユーザーとしてサインインすると、次のアーティファクトに示すように、CreateRole オペレーションは SCP によって妨げられます。

{ "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 を一時的に編集して、オペレーションを許可します。

  • (あまり推奨しない) AWS Control Tower 管理アカウントをハブアカウントとして使用すると、SCP の対象になりません。

CloudFormation に基づく AFC ブループリント用のポリシードキュメントのカスタマイズ

Account Factory でブループリントを有効にすると、AWS Control Tower はユーザーに代わって StackSet を作成する CloudFormation ように に指示します。 は、StackSet にスタックを作成 CloudFormation するためにマネージドアカウントへのアクセス CloudFormation を必要とします。 CloudFormation にはすでに AWSControlTowerExecutionロールを通じてマネージドアカウントで管理者権限がありますが、このロールは によって引き受けることはできません CloudFormation。

ブループリントの有効化の一環として、AWS Control Tower によってメンバーアカウントにロールが作成されます。このロールは CloudFormation によって継承され、StackSet の管理タスクが完了する場合があります。Account Factory を使用してカスタマイズ済みブループリントを有効にする最も簡単な方法は、allow-all ポリシーを使用することです。このようなポリシーはすべてのブループリントテンプレートと互換性があるためです。

ただし、ベストプラクティスでは、ターゲットアカウントの CloudFormation のアクセス許可を制限する必要があります。カスタマイズされたポリシーを提供できます。このポリシーは、AWS Control Tower が 用に作成するロールに適用 CloudFormation します。例えば、ブループリントによって 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 ポリシーに追加する必要があります。デフォルトのフル Admin ポリシーを選択した場合は、これらの追加のアクセス許可を追加する必要はありません。

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" } } } ] }

で外部製品タイプを使用して Terraform 製品を作成する方法の詳細については AWS Service Catalog、「Service Catalog 管理者ガイド」の「ステップ 5: 起動ロールを作成する」を参照してください。

AWS Service Catalog 外部製品タイプへの移行

AWS Service Catalog は、Terraform Open Source 製品とプロビジョニング済み製品のサポートを External という新しい製品タイプに変更しました。この移行の詳細については、「AWS Service Catalog 管理者ガイド」の「既存の Terraform オープンソース製品およびプロビジョニングされた製品から External 製品タイプへの更新」を参照してください。

この変更は、AWS Control Tower アカウントファクトリーのカスタマイズを使用して作成または登録した既存のアカウントに影響します。これらのアカウントを External 製品タイプに移行するには、 AWS Service Catalog と AWS Control Tower の両方で変更を行う必要があります。

新しい External 製品タイプに移行するには
  1. の既存の Terraform リファレンスエンジンをアップグレード AWS Service Catalog して、外部オープンソース製品タイプと Terraform オープンソース製品タイプの両方のサポートを含めます。Terraform Reference Engine の更新方法については、AWS Service Catalog GitHub リポジトリを参照してください。

  2. で AWS Service Catalog、既存の Terraform Open Source 製品 (ブループリント) を、新しい External 製品タイプを使用して複製します。既存の Terraform Open Source ブループリントを削除しないでください

  3. AWS Control Tower で、Terraform オープンソースブループリントを使用している各アカウントを更新し、新しい External ブループリントを使用するようにします。

    1. ブループリントを更新するには、まず Terraform オープンソースブループリントを完全に削除する必要があります。詳細については、「アカウントからブループリントを削除する」を参照してください。

    2. 新しい External ブループリントを同じアカウントに追加します。詳細については、「ブループリントを AWS Control Tower アカウントに追加する」を参照してください。

  4. Terraform Open Source ブループリントを使用するすべてのアカウントが外部ブループリントに更新されたら、Terraform Open Source を製品タイプとして使用する製品に戻って AWS Service Catalog 終了します。

  5. 今後、AWS Control Tower アカウントファクトリーのカスタマイズを使用して作成または登録するすべてのアカウントは、CloudFormation または External 製品タイプを使用するブループリントを参照する必要があります。

    External 製品タイプを使用して作成したブループリントの場合、AWS Control Tower は Terraform テンプレートと Terraform リファレンスエンジンを使用するアカウントのカスタマイズのみをサポートします。詳細については、「カスタマイズのための設定」を参照してください。

注記

AWS Control Tower は、新しいアカウントの作成時に Terraform オープンソースを製品タイプとしてサポートしていません。これらの変更の詳細については、「 AWS Service Catalog 管理者ガイド」の「既存の Terraform Open Source 製品とプロビジョニング済み製品を外部製品タイプに更新する」を参照してください。 AWS Service Catalog は、必要に応じてこの製品タイプの移行を通じてお客様をサポートします。アカウント担当者を通じて支援をリクエストしてください。