AWS Control Tower でドリフトを検出および解決する - AWS Control Tower

AWS Control Tower でドリフトを検出および解決する

ドリフトの特定と解決は、AWS Control Tower 管理アカウント管理者の通常の運用タスクです。ドリフトを解決することで、ガバナンス要件のコンプライアンスを確保できます。

ランディングゾーンを作成するとき、ランディングゾーンとすべての組織単位 (OU)、アカウント、リソースは、選択したガードレールによって適用されるガバナンスルールに準拠します。ユーザーおよび組織のメンバーがランディングゾーンを使用する際、コンプライアンスステータスが変更されることがあります。一部の変更は偶発的になされますが、時間的制約のある操作上のイベントに対応するために意図的になされる場合もあります。

ドリフト検出は、ドリフトを解決するために変更や設定更新が必要になるリソースを識別するのに役立ちます。

ドリフトの検出

ドリフト検出は、AWS Control Tower で自動的に行われます。ドリフトを検出するには、AWS Control Tower が AWS Organizations への読み取り専用 API コールを行えるようにするため、AWSControlTowerAdmin ロールに管理アカウントへの永続的アクセス権が必要です。これらの API コールは、AWS CloudTrail イベントとして表示されます。

ドリフトは、監査アカウントに集約された Amazon Simple Notification Service (Amazon SNS) 通知に表示されます。各メンバーアカウントの通知を介して、アラートがローカルの Amazon SNS トピック、および Lambda 関数に送信されます。

メンバーアカウント管理者は、特定のアカウントの SNS ドリフト通知にサブスクライブできます (ベストプラクティスとしてもサブスクライブをお勧めします)。例えば、aws-controltower-AggregateSecurityNotifications SNS トピックはドリフト通知を提供します。ドリフトが発生すると、AWS Control Tower コンソールから管理アカウント管理者に通知されます。ドリフトの検出と通知に関する SNS トピックの詳細については、「ドリフトの防止と通知」を参照してください。

ドリフト通知の重複除外

同じタイプのドリフトが同じリソースセットで複数回発生した場合、AWS Control Tower はドリフトの初回インスタンスに対してのみ SNS 通知を送信します。AWS Control Tower は、このドリフトのインスタンスが修復されたことを検出した場合、それらの同一のリソースに対してドリフトが再発生した場合にのみ、別の通知を送信します。

例: アカウントドリフトと SCP ドリフトは、次の方法で処理されます。

  • 同じマネージド SCP を複数回変更した場合、初めて変更したときに通知が届きます。

  • マネージド SCP を変更し、ドリフトを修正してから再度変更すると、2 回通知が届きます。

アカウントドリフトのタイプ

  • OU 間でのアカウントの移動

  • アカウントが組織から削除

ポリシードリフトのタイプ

  • SCP の更新

  • SCP が OU にアタッチされた

  • SCP が OU からデタッチされた

  • SCP がアカウントにアタッチされた

詳細については、「ガバナンスドリフトのタイプ」を参照してください。

ドリフトの解決

検出は自動で行われますが、ドリフトを解決するステップはコンソールを使用して行う必要があります。

  • [Landing zone settings] (ランディングゾーン設定) ページでは、さまざまなタイプのドリフトを解決できます。これらのタイプのドリフトを修復するには、[Versions] (バージョン) セクションの [Repair] (修復) ボタンを選択することができます。

  • OU のアカウント数が 300 未満の場合は、[Organization] (組織) ページまたは [OU details] (OU の詳細) ページで [Re-register OU] (OU の再登録) を選択することで、Account Factory でプロビジョニングされたアカウントのドリフト、または SCP のドリフトを修復できます。

  • 個々のアカウントを更新することで、移動されたメンバーアカウント などのアカウントドリフトを修復できる場合があります。詳細については、「コンソールでアカウントを更新する」を参照してください。

注記

ランディングゾーンを修復すると、ランディングゾーンが最新のバージョンにアップグレードされます。

ドリフトスキャンと SCP スキャンに関する考慮事項

AWS Control Tower は、マネージド SCP を毎日スキャンして、対応するガードレールが正しく適用され、ドリフトが発生していないことを確認します。SCP を取得し、それらのチェックを実行するため、AWS Control Tower がユーザーに代わって管理アカウントのロールを使用して AWS Organizations を呼び出します。

AWS Control Tower のスキャンでドリフトが検出された場合は、通知が届きます。AWS Control Tower は、ドリフトの問題ごとに通知を 1 つだけ送信するため、ランディングゾーンが既にドリフト状態にある場合、新しいドリフトアイテムが見つからない限り、追加の通知が送信されることはありません。

AWS Organizations は、各 API を呼び出すことができる頻度を制限します。この制限は、1 秒あたりのトランザクション (TPS) 単位で表され、TPS 制限、スロットリングレート、または API リクエストレートと呼ばれます。AWS Control Tower が AWS Organizations を呼び出して SCP を監査する場合、AWS Control Tower が行う API コールは TPS 制限にカウントされます。これは、AWS Control Tower が管理アカウントを使用してコールを行うためです。

まれに、サードパーティーのソリューションまたは作成したカスタムスクリプトを使用して、同じ API を繰り返し呼び出すと、この制限に達することがあります。例えば、お客様と AWS Control Tower が同じタイミング (1 秒以内) で同じ AWS Organizations API コールを行い、TPS 制限に達すると、後続のコールはスロットリングされます。つまり、これらのコールは Rate exceeded のようなエラーを返します。

API リクエストレートを超えた場合

  • AWS Control Tower が上限に達してスロットリングされた場合、監査の実行が一時停止され、後で再開されます。

  • ワークロードが制限に達してスロットリングされた場合、その結果は、ワークロードの構成方法に応じて、わずかな遅延からワークロードの致命的なエラーにまで及ぶ可能性があります。このエッジケースには注意が必要です。

日次 SCP スキャンは、

  1. すべての OU を取得します。

  2. 登録された OU ごとに、OU にアタッチされている AWS Control Tower によって管理されているすべての SCP が取得されます。マネージド SCP には、aws-guardrails で始まる識別子があります。

  3. OU で有効な予防ガードレールごとに、ガードレールのポリシーステートメントが OU のマネージド SCP に存在することを確認します。

日次スキャンでは、以下の AWS Organizations API に対して TPS が消費されます。

listOrganizationalUnits

8 バースト、5 持続的

ランディングゾーンあたり 1

listPoliciesForTarget

8 バースト、5 持続的

登録済み OU あたり 1

describePolicy

2 TPS

マネージド SCP あたり 1

OU には、マネージド SCP が 1 つ以上ある場合があります。

すぐに修復すべきドリフトのタイプ

ほとんどのタイプのドリフトは、管理者が解決できます。ただし、AWS Control Tower ランディングゾーンに必須の組織単位を削除したなど、即時修復しなければならないタイプのドリフトもあります。回避すべき重要なドリフトの例を以下に示します。

  • セキュリティ OU を削除しないでください。AWS Control Tower によるランディングゾーンのセットアップ中に元々セキュリティと名付けられていた組織単位は削除しないでください。削除すると、ランディングゾーンをすぐに修復するように指示するエラーメッセージが表示されます。修復が完了するまで、AWS Control Tower で他のアクションを実行することはできません。

  • 必要なロールを削除しないでください。ユーザーがコンソールにログインすると、AWS Control Tower は特定の AWS Identity and Access Management (IAM) ロールに IAM ロールのドリフトがないかチェックします。これらのロールが見つからないかアクセス可能でない場合は、ランディングゾーンを修復するように指示するエラーページが表示されます。これらのロールは、AWSControlTowerAdmin AWSControlTowerCloudTrailRole AWSControlTowerStackSetRole です。

    これらのユーザーロールの詳細については、「AWS Control Tower コンソールを使用するために必要なアクセス許可」を参照してください。

  • 追加の OU はすべて削除しないでください。AWS Control Tower によるランディングゾーンのセットアップ中に元々サンドボックスと名付けられていた組織単位を削除した場合、ランディングゾーンはドリフト状態になりますが、AWS Control Tower は引き続き使用できます。AWS Control Tower の運用には少なくとも 1 つの追加の OU が必要ですが、それがサンドボックス OU である必要はありません。

  • 共有アカウントは削除しないでください。セキュリティ OU からログアカウントを削除するなど、基礎 OU から共有アカウントを削除した場合、ランディングゾーンはドリフト状態になります。これを修復しないと、AWS Control Tower コンソールを使用し続けることができません。

リソースへの修復可能な変更

以下に示しているのは、AWS Control Tower リソースに許可された変更のリストです。ただし、それらの変更により、修復可能なドリフトが発生します。これらの許可されたオペレーションの結果は AWS Control Tower コンソールで表示できますが、更新が必要な場合があります。

発生したドリフトを解決する方法の詳細については、「AWS Control Tower の外部でのリソースの管理」を参照してください。

AWS Control Tower コンソールの外部で許可される変更

  • 登録済み OU の名前変更。

  • セキュリティ OU の名前変更。

  • 基礎 OU 以外のメンバーアカウントの名前変更。

  • セキュリティ OU での AWS Control Tower の共有アカウントの名前変更。

  • 基礎以外の OU の削除。

  • 基礎以外の OU からの登録済みアカウントの削除。

  • セキュリティ OU での共有アカウントのメールアドレスの変更。

  • 登録された OU 内のメンバーアカウントのメールアドレスの変更。

注記

OU 間でのアカウントの移動はドリフトと見なされ、修復する必要があります。

ドリフトと新しいアカウントのプロビジョニング

ランディングゾーンがドリフト状態である場合、AWS Control Tower 内の [Enroll account] (アカウントの登録) 機能は動作しません。その場合、AWS Service Catalog を使用して新しいアカウントをプロビジョニングする必要があります。手順については、「AWS Service Catalog で Account Factory アカウントをプロビジョニングする」を参照してください。

特に、ポートフォリオの名前変更など、AWS Service Catalog を使用してアカウントに特定の変更を加えた場合、[Enroll account] (アカウントの登録) 機能は動作しません。