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 つ作成または追加する (ログアーカイブアカウントと監査アカウント)。
-
デフォルトの AWS Control Tower 設定を選択した場合や、ID プロバイダーを自己管理できる場合は、事前設定されたグループとシングルサインオンアクセスを使用して、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_SERVICE_LINKED_ROLE (Deployed in 3.2 and later) 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 | ディレクトリグループ | AWSAccountFactory AWSAuditAccountAdmins AWSControlTowerAdmins AWSLogArchiveAdmins AWSLogArchiveViewers AWSSecurityAuditors AWSSecurityAuditPowerUsers AWSServiceCatalogAdmins |
AWS IAM Identity Center | 許可セット | 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-SERVICE-LINKED-ROLE-(In 3.2 and later) 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-* |
監査アカウントとは
監査アカウントは、セキュリティチームとコンプライアンスチームに対してランディングゾーンのすべてのアカウントへの読み書きアクセスを許可するように設計された制限付きのアカウントです。監査アカウントからは、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-BASELINE-SERVICE-LINKED-ROLE-(In 3.2 and later) 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-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 ユーザーガイド」の「スタックセットの更新」を参照してください。