AWS Control Tower の仕組み - AWS Control Tower

AWS Control Tower の仕組み

このセクションでは、AWS Control Tower がどのように動作するかを大まかに説明します。Landing Zone は、すべての AWS リソースに対する優れた設計のマルチアカウント環境です。この環境を使用して、すべての AWS アカウントでコンプライアンス規制を適用できます。

AWS Control Tower ランディングゾーンの構造

AWS Control Tower のランディングゾーンの構造は次のとおりです。

  • ルート – ランディングゾーン内のその他すべての OU を含む親。

  • コア OU– この OU には、ログアーカイブと監査メンバーアカウントが含まれます。これらのアカウントは、多くの場合、 共有アカウントと呼ばれます。

  • カスタム OU – カスタム OU は、Landing Zone を起動したときに作成されます。このメンバー OU と他のメンバー OU には、ユーザーが AWS ワークロードを実行するために作業するメンバーアカウントが含まれます。

  • AWS SSO ディレクトリ – このディレクトリには、AWS SSO ユーザーが格納されます。これは、各 AWS SSO ユーザーのアクセス許可の範囲を定義します。

  • AWS SSO ユーザー – これらは、ユーザーが Landing Zone で AWS ワークロードを実行するために引き受けることができるアイデンティティです。

ランディングゾーンをセットアップするとどうなるか

Landing Zone をセットアップすると、ユーザーに代わって AWS Control Tower がマスターアカウントで次のアクションを実行します。

  • 3 つの 組織 組織ユニット (OU) (ルート、コア、およびカスタム) を作成する。

  • 2 つの共有アカウント (ログアーカイブアカウントと監査アカウント)を作成する。

  • 事前設定されたグループとシングルサインオンアクセスを使用して、AWS SSO でクラウドネイティブなディレクトリを作成する。

  • 20 個の予防ガードレールを適用して、ポリシーを実施します。

  • 6 つの検出ガードレールを適用して、設定違反を検出します。

AWS Control Tower ランディングゾーンおよびアカウント内のリソースの安全な管理

  • Landing Zone を作成すると、多くの AWS リソースが作成されます。AWS Control Tower を使用するには、このガイドで説明されたサポートされている方法以外で、これらの AWS Control Tower マネージドリソースを変更または削除することはできません。これらのリソースを変更または削除すると、Landing Zone の状態が不明になります。詳細については、AWS Control Tower リソースの作成および変更に関するガイダンス を参照してください。

  • 強く推奨されるガイダンスでガードレールを有効にすると、AWS Control Tower によって、アカウント内で Control Tower が管理する AWS リソースを作成されます。AWS Control Tower によって作成されたリソースを変更または削除しないでください。これにより、ガードレールの状態が不明になる可能性があります。詳細については、「ガードレールリファレンス」を参照してください。

共有アカウントは何ですか

AWS Control Tower では、Landing Zone の 3 つの共有アカウント (マスターアカウント、ログアーカイブアカウント、および監査アカウント) は、Account Factory にプロビジョニングされません。

マスターアカウントとは何ですか

これは、Landing Zone 専用に作成したアカウントです。このアカウントは、Landing Zone でのすべての請求に使用されます。また、このアカウントは、OU とガードレールの管理だけでなく、アカウントの Account Factory プロビジョニングに使用することもできます。

注記

AWS Control Tower マスターアカウントから運用ワークロードを実行することはお勧めしません。ワークロードを実行する別の AWS Control Tower アカウントを作成します。

Landing Zone をセットアップすると、マスターアカウント内で以下の AWS リソースが作成されます。

AWS サービス リソースタイプ リソース名
AWS Organizations アカウント

audit

log archive

AWS Organizations OU

Core

Custom

AWS Organizations サービスコントロールポリシー

aws-guardrails-*

AWS CloudFormation スタック AWSControlTowerBP-BASELINE-CLOUDTRAIL-MASTER
AWS CloudFormation StackSets

AWSControlTowerBP-BASELINE-CLOUDTRAIL

AWSControlTowerBP-BASELINE-CLOUDWATCH

AWSControlTowerBP-BASELINE-CONFIG

AWSControlTowerBP-BASELINE-ROLES

AWSControlTowerBP-BASELINE-SERVICE-ROLES

AWSControlTowerBP-SECURITY-TOPICS

AWSControlTowerGuardrailAWS-GR-AUDIT-BUCKET-PUBLIC-READ-PROHIBITED

AWSControlTowerGuardrailAWS-GR-AUDIT-BUCKET-PUBLIC-WRITE-PROHIBITED

AWSControlTowerLoggingResources

AWSControlTowerSecurityResources

AWS Service Catalog 製品 AWS Control Tower Account Factory
AWS CloudTrail 証跡 aws-controltower-BaselineCloudTrail
Amazon CloudWatch CloudWatch Logs aws-controltower/CloudTrailLogs
AWS Identity and Access Management ロール

AWSControlTowerAdmin

AWSControlTowerStackSetRole

AWSControlTowerCloudTrailRolePolicy

AWS Identity and Access Management ポリシー

AWSControlTowerServiceRolePolicy

AWSControlTowerAdminPolicy

AWSControlTowerCloudTrailRolePolicy

AWSControlTowerStackSetRolePolicy

AWS シングルサインオン ディレクトリグループ

AWSAccountFactory

AWSAuditAccountAdmins

AWSControlTowerAdmins

AWSLogArchiveAdmins

AWSLogArchiveViewers

AWSSecurityAuditors

AWSSecurityAuditPowerUsers

AWSServiceCatalogAdmins

AWS シングルサインオン アクセス権限セット

AWSAdministratorAccess

AWSPowerUserAccess

AWSServiceCatalogAdminFullAccess

AWSServiceCatalogEndUserAccess

AWSReadOnlyAccess

AWSOrganizationsFullAccess

ログアーカイブアカウントとは何ですか

このアカウントは、Landing Zone のすべてのアカウントからの API アクティビティとリソース設定のログのリポジトリとして使用されます。

Landing Zone をセットアップすると、ログアーカイブアカウント内で以下の AWS リソースが作成されます。

AWS サービス リソースタイプ リソース名
AWS CloudFormation スタック

StackSet-AWSControlTowerGuardrailAWS-GR-AUDIT-BUCKET-PUBLIC-READ-PROHIBITED-

StackSet-AWSControlTowerGuardrailAWS-GR-AUDIT-BUCKET-PUBLIC-WRITE-PROHIBITED

StackSet-AWSControlTowerBP-BASELINE-CLOUDWATCH-

StackSet-AWSControlTowerBP-BASELINE-CONFIG-

StackSet-AWSControlTowerBP-BASELINE-CLOUDTRAIL-

StackSet-AWSControlTowerBP-BASELINE-SERVICE-ROLES-

StackSet-AWSControlTowerBP-BASELINE-ROLES-

StackSet-AWSControlTowerLoggingResources-

AWS Config AWS Config ルール

AWSControlTower_AWS-GR_AUDIT_BUCKET_PUBLIC_READ_PROHIBITED

AWSControlTower_AWS-GR_AUDIT_BUCKET_PUBLIC_WRITE_PROHIBIT

AWS CloudTrail 証跡 aws-controltower-BaselineCloudTrail
Amazon CloudWatch CloudWatch イベントルール aws-controltower-ConfigComplianceChangeEventRule
Amazon CloudWatch CloudWatch Logs

aws-controltower/CloudTrailLogs

/aws/lambda/aws-controltower-NotificationForwarder

AWS Identity and Access Management ロール

aws-controltower-AdministratorExecutionRole

aws-controltower-CloudWatchLogsRole

aws-controltower-ConfigRecorderRole

aws-controltower-ForwardSnsNotificationRole

aws-controltower-ReadOnlyExecutionRole

AWSControlTowerExecution

AWS Identity and Access Management ポリシー AWSControlTowerServiceRolePolicy
Amazon Simple Notification Service トピック aws-controltower-SecurityNotifications
AWS Lambda アプリケーション StackSet-AWSControlTowerBP-BASELINE-CLOUDWATCH-*
AWS Lambda 関数 aws-controltower-NotificationForwarder
Amazon Simple Storage Service バケット

aws-controltower-logs-*

aws-controltower-s3-access-logs-*

監査アカウントとは何ですか

監査アカウントは、セキュリティチームとコンプライアンスチームに対して Landing Zone のすべてのアカウントへの読み書きアクセスを許可するように設計された制限付きのアカウントです。監査アカウントからは、Lambda 関数にのみ付与されるロールを使用して、アカウントをレビューするためにプログラムによってアクセスできます。監査アカウントでは、他のアカウントに手動でログインすることはできません。Lambda 関数とロールの詳細については、「別の AWS アカウントからロールを引き受けるように Lambda 関数を設定する」を参照してください。

Landing Zone をセットアップすると、監査アカウント内で以下の AWS リソースが作成されます。

AWS サービス リソースタイプ リソース名
AWS CloudFormation スタック

StackSet-AWSControlTowerGuardrailAWS-GR-AUDIT-BUCKET-PUBLIC-READ-PROHIBITED-

StackSet-AWSControlTowerGuardrailAWS-GR-AUDIT-BUCKET-PUBLIC-WRITE-PROHIBITED-

StackSet-AWSControlTowerBP-BASELINE-CLOUDWATCH-

StackSet-AWSControlTowerBP-BASELINE-CONFIG-

StackSet-AWSControlTowerBP-BASELINE-CLOUDTRAIL-

StackSet-AWSControlTowerBP-BASELINE-SERVICE-ROLES-

StackSet-AWSControlTowerBP-SECURITY-TOPICS-

StackSet-AWSControlTowerBP-BASELINE-ROLES-

StackSet-AWSControlTowerSecurityResources-*

AWS Config アグリゲータ aws-controltower-GuardrailsComplianceAggregator
AWS Config AWS Config ルール

AWSControlTower_AWS-GR_AUDIT_BUCKET_PUBLIC_READ_PROHIBITED

AWSControlTower_AWS-GR_AUDIT_BUCKET_PUBLIC_WRITE_PROHIBITED

AWS CloudTrail 証跡 aws-controltower-BaselineCloudTrail
Amazon CloudWatch CloudWatch イベントルール aws-controltower-ConfigComplianceChangeEventRule
Amazon CloudWatch CloudWatch Logs

aws-controltower/CloudTrailLogs

/aws/lambda/aws-controltower-NotificationForwarder

AWS Identity and Access Management ロール

aws-controltower-AdministratorExecutionRole

aws-controltower-CloudWatchLogsRole

aws-controltower-ConfigRecorderRole

aws-controltower-ForwardSnsNotificationRole

aws-controltower-ReadOnlyExecutionRole

aws-controltower-SecurityAdministratorRole

aws-controltower-SecurityReadOnlyRole

AWSControlTowerExecution

AWS Identity and Access Management ポリシー AWSControlTowerServiceRolePolicy
Amazon Simple Notification Service トピック

aws-controltower-AggregateSecurityNotifications

aws-controltower-AllConfigNotifications

aws-controltower-SecurityNotifications

AWS Lambda 関数 aws-controltower-NotificationForwarder

ガードレールの仕組み

ガードレールは、AWS 環境全体に継続的なガバナンスを提供する高レベルのルールです。各ガードレールは 1 つのルールを適用します。これは、わかりやすい言語で示されます。コンプライアンスのニーズは進化します。これに応じて、有効になっている選択的ガードレールまたは強く推奨されるガードレールを AWS Control Tower コンソールからいつでも変更できます。必須ガードレールは常に適用され、変更することはできません。

予防的ガードレールにより、アクションの発生が防止されます。たとえば、[Disallow policy changes to log archive (ログアーカイブのポリシー変更を禁止する)] ガードレールにより、ログアーカイブ共有アカウント内で IAM ポリシーの変更が防止されます。禁止されたアクションを実行しようとすると、拒否され、CloudTrail に記録されます。また、リソースも AWS Config に記録されます。

発見的ガードレールにより、特定のイベントが発生したときにそのイベントが検出され、アクションが CloudTrail に記録されます。たとえば、[Enable encryption for EBS volumes attached to EC2 instances (EC2 インスタンスにアタッチされた EBS ボリュームの暗号化を有効にする)] により、暗号化されていない Amazon EBS ボリュームが Landing Zone の EC2 インスタンスにアタッチされているかどうかが検出されます。

AWS リージョンと AWS Control Tower の連携の仕組み

現在、AWS Control Tower は次の AWS リージョンでサポートされています。

  • 米国東部(バージニア北部)

  • 米国東部 (オハイオ)

  • 米国西部 (オレゴン)

  • 欧州 (アイルランド)

  • アジアパシフィック (シドニー)

Landing Zone を作成すると、AWS マネジメントコンソール へのアクセスに使用しているリージョンが AWS Control Tower のホーム AWS リージョンになります。作成プロセス中に、一部のリソースがホーム AWS リージョンにプロビジョニングされます。その他のリソース (OU や AWS アカウント) はグローバルです。

現在、すべての予防的ガードレールはグローバルに使用できます。ただし、発見的ガードレールは AWS Control Tower がサポートされているリージョンでのみ機能します。新しいリージョンで AWS Control Tower を有効化したときのガードレールの動作の詳細については、「AWS Control Tower を新しい AWS リージョンにデプロイする」を参照してください。

AWS Control Tower がロールと連携してアカウントを作成および管理する方法

AWS Control Tower は、AWS Organizations の CreateAccount API を呼び出して顧客のアカウントを作成します。AWS Organizations は、アカウントを作成する際に、このアカウント内にロールを作成します。このロールに対して AWS Control Tower は API にパラメータを渡すことで名前を付けます。ロールの名前は AWSControlTowerExecution です。

AWS Control Tower は、Account Factory によって作成されたすべてのアカウントの AWSControlTowerExecution ロールを引き受けます。このロールを使用して、AWS Control Tower は、アカウントにベースライニングを行い、必須の (およびその他有効な) ガードレールを適用します。これにより、他のロールが作成されます。これらのロールは、次に AWS Config などの他のサービスによって使用されます。

注記

アカウントのベースライニングでは、設計図とガードレールを設定します。ベースライニングプロセスでは、ブループリントのデプロイの一環として、アカウントの集中ロギングとセキュリティ監査のロールも設定します。AWS Control Tower ベースラインは、すべての管理アカウントに適用するロールに含まれています。

AWSControlTowerExecution ロールについての説明

AWSControlTowerExecution ロールは、AWS Control Tower が個々のアカウントを管理し、それらのアカウントに関する情報を監査アカウントおよびロギングアカウントに報告できるようにするものです。

  • AWSControlTowerExecution を使用すると、AWS Control Tower 監査アカウントによる監査が可能になります。

  • AWSControlTowerExecution では、各アカウントのすべてのログがロギングアカウントに送信されるよう、組織のロギングを設定できます。

アカウントの設定が完了すると、AWSControlTowerExecution により、選択した AWS Control Tower ガードレールが組織内の各個別アカウント、およびAWS Control Tower で作成したすべての新規アカウントに自動的に適用されることが確認されます。したがって、AWS Control Tower ガードレールによって具体化される監査機能とロギング機能に基づいて、コンプライアンスレポートとセキュリティレポートを簡単に提供できます。セキュリティチームとコンプライアンスチームは、すべての要件が満たされていること、組織ドリフトが発生していないことを確認できます。ドリフトの詳細については、AWS Control Tower ユーザーガイドを参照してください。

つまり、AWSControlTowerExecution ロールとその関連ポリシーを使って、組織全体のセキュリティとコンプライアンスを柔軟に管理できるということです。したがって、セキュリティ違反が発生する可能性が低くなります。

AWS Control Tower が StackSets と連携する仕組み

AWS Control Tower は、CloudFormation StackSets を使用して、アカウントのリソースをセットアップします。各スタックセットには、複数のアカウントに対応する StackInstances があり、アカウントごとに複数の AWS リージョンに対応します。Control Tower は、特定の CloudFormation パラメータに基づいて、特定のアカウントと AWS リージョンに更新を適用します。更新が一部のスタックインスタンスに適用されると、他のスタックインスタンスが OUTDATED ステータスのままになることがあります。この動作は予想されるもので、正常です。

スタックインスタンスが OUTDATED 状態になった場合、通常、そのスタックインスタンスに対応するスタックが、スタックセットの最新のテンプレートと合致していないことを意味します。スタックは古いテンプレートに残っているため、最新のリソースやパラメータが含まれていない可能性があります。スタックはまだ完全に使用可能です。

更新時に指定された AWS CloudFormation パラメータに基づいて、想定される動作を簡単にまとめます。

スタックセットの更新にテンプレートへの変更が含まれる場合 (つまり、TemplateBody プロパティや TemplateURL プロパティが指定されている場合)、または Parameters プロパティが指定されている場合、AWS CloudFormation は、指定されたアカウントと AWS リージョンのスタックインスタンスを更新する前に、すべてのスタックインスタンスのステータスに「OUTDATED」のマークを付けます。スタックセットの更新にテンプレートまたはパラメータに対する変更が含まれていない場合、AWS CloudFormation は指定されたアカウントとリージョンのスタックインスタンスを更新し、他のすべてのスタックインスタンスは既存のスタックインスタンスのステータスのまま残します。スタックセットに関連付けられたすべてのスタックインスタンスを更新するには、Accounts プロパティまたは Regions プロパティを指定しないでください。

詳細については、AWS CloudFormation ユーザーガイドの「スタックセットの更新」を参照してください。