AWS Control Tower の仕組み - AWS Control Tower

AWS Control Tower の仕組み

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

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

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

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

  • セキュリティ OU - この OU には、ログアーカイブアカウントと監査アカウントが含まれています。これらのアカウントは、共有アカウントとも呼ばれます。ランディングゾーンを起動するときに、これらの共有アカウントのカスタマイズした名前を選択できます。また、既存の AWS アカウントをセキュリティとログ記録のために AWS Control Tower に持ち込むオプションもあります。ただし、これらの名前を後で変更することはできません。また、初回起動後にセキュリティとログ記録のために既存のアカウントを追加することはできません。

  • サンドボックス OU - サンドボックス OU は、ランディングゾーンを有効にしている場合にランディングゾーンを起動すると作成されます。このメンバー OU と他のメンバー OU には、ユーザーが AWS ワークロードを実行するために使用する登録済みアカウントが含まれています。

  • IAM Identity Center ディレクトリ - このディレクトリには、IAM Identity Center ユーザーが格納されます。これは、各 IAM Identity Center ユーザーの許可の範囲を定義します。

  • IAM Identity Center ユーザー - これらは、ユーザーがランディングゾーンで AWS ワークロードを実行するために引き受けることができるアイデンティティです。

ランディングゾーンをセットアップした場合に起きること

ランディングゾーンをセットアップすると、ユーザーに代わって AWS Control Tower が管理アカウントで次のアクションを実行します。

  • AWS Organizations 組織単位 (OU) を 2 つ作成する (セキュリティとサンドボックス (任意)。どちらも組織のルート構造内に含まれます)。

  • セキュリティ OU 内に共有アカウントを 2 つ作成または追加する (ログアーカイブアカウントと監査アカウント)。

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

  • 必須の予防コントロールをすべて適用してポリシーを実施する。

  • 必須の検出コントロールをすべて適用して設定違反を検出する。

  • 予防コントロールを管理アカウントには適用しない。

  • 管理アカウントを除き、ガードレールを組織全体に適用する。

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

  • オプションのコントロール (強く推奨されるガイダンスまたは選択的ガイダンス) を有効にした場合、AWS Control Tower はアカウント内で AWS リソースを作成し、管理します。AWS Control Tower によって作成されたリソースを変更または削除しないでください。これにより、コントロールの状態が不明になる可能性があります。詳細については、「AWS Control Tower コントロールライブラリ」を参照してください。

共有アカウントとは

AWS Control Tower では、ランディングゾーンの共有アカウント (管理アカウント、ログアーカイブアカウント、および監査アカウント) がセットアップ時にプロビジョニングされます。

管理アカウントとは

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

注記

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

ランディングゾーンをセットアップすると、管理アカウント内に以下の AWS リソースが作成されます。

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

audit

log archive

AWS Organizations OU

Security

Sandbox

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

aws-guardrails-*

AWS CloudFormation スタック

AWSControlTowerBP-BASELINE-CLOUDTRAIL-MASTER

AWSControlTowerBP-BASELINE-CONFIG-MASTER (バージョン 2.6 以降)

AWS CloudFormation StackSets

AWSControlTowerBP-BASELINE-CLOUDTRAIL (3.0 以降にはデプロイされません)

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

AWSControlTowerExecutionRole

AWS Service Catalog 製品 AWS Control Tower Account Factory
AWS Config アグリゲータ aws-controltower-ConfigAggregatorForOrganizations
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 IAM Identity Center (successor to AWS Single Sign-On) ディレクトリグループ

AWSAccountFactory

AWSAuditAccountAdmins

AWSControlTowerAdmins

AWSLogArchiveAdmins

AWSLogArchiveViewers

AWSSecurityAuditors

AWSSecurityAuditPowerUsers

AWSServiceCatalogAdmins

AWS IAM Identity Center (successor to AWS Single Sign-On) 許可セット

AWSAdministratorAccess

AWSPowerUserAccess

AWSServiceCatalogAdminFullAccess

AWSServiceCatalogEndUserAccess

AWSReadOnlyAccess

AWSOrganizationsFullAccess

注記

AWS CloudFormation StackSet BP_BASELINE_CLOUDTRAIL はランディングゾーンバージョン 3.0 以降にはデプロイされません。ただし、ランディングゾーンを更新するまでは、ランディングゾーンの以前のバージョンに引き続き存在します。

ログアーカイブアカウントとは

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

ランディングゾーンをセットアップすると、ログアーカイブアカウント内で以下の 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 Rules

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-*

監査アカウントとは

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

ランディングゾーンをセットアップすると、監査アカウント内で以下の 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 Rules

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-AuditAdministratorRole

aws-controltower-AuditReadOnlyRole

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 コンソールまたは AWS Control Tower API からいつでも変更できます。必須コントロールは常に適用され、変更することはできません。

予防コントロールにより、アクションの発生が防止されます。例えば、[Disallow Changes to Bucket Policy for Amazon S3 Buckets] (Amazon S3 バケットのバケットポリシーへの変更を不許可にする) という選択的コントロール (以前の名称は [Disallow Policy Changes to Log Archive] (ログアーカイブへのポリシーへの変更を不許可にする)) により、ログアーカイブ共有アカウント内で IAM ポリシーを変更できなくなります。禁止されたアクションを実行しようとすると、拒否され、CloudTrail に記録されます。また、リソースも AWS Config に記録されます。

検出コントロールにより、特定のイベントが発生したときにそのイベントが検出され、アクションが CloudTrail に記録されます。例えば、[Detect Whether Encryption is Enabled for Amazon EBS Volumes Attached to Amazon EC2 Instances] (Amazon EC2 インスタンスにアタッチされた Amazon EBS ボリュームに対して暗号化が有効になっているかどうかを検出する) という強く推奨されるコントロールにより、暗号化されていない Amazon EBS ボリュームがランディングゾーンの EC2 インスタンスにアタッチされているかどうかが検出されます。

プロアクティブコントロールは、リソースがアカウントにプロビジョニングされる前に、リソースが会社のポリシーと目標に準拠しているかどうかを確認します。リソースがポリシーと目標に準拠していない場合、リソースはプロビジョニングされません。プロアクティブコントロールは、アカウントにデプロイされるリソースを AWS CloudFormation テンプレートを使用して監視します。

AWS をよく理解しているユーザー向け: AWS Control Tower では、予防コントロールはサービスコントロールポリシー (SCP) で実装されています。検出コントロールは、AWS Config ルールと共に実装されます。プロアクティブコントロールは、AWS CloudFormation フックを使用して実装されます。

AWS Control Tower と StackSets が動作する仕組み

AWS Control Tower は、AWS CloudFormation StackSets を使用して、アカウントのリソースをセットアップします。各スタックセットには、アカウントに対応する StackInstances があり、アカウントごとに AWS リージョンに対応します。AWS Control Tower は、アカウントとリージョンごとに 1 つのスタックセットインスタンスをデプロイします。

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

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

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

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

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