AWS Organizations のプログラムによるアカウント閉鎖のアラートを設定する - AWS 規範ガイダンス

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

AWS Organizations のプログラムによるアカウント閉鎖のアラートを設定する

作成者: Richard Milner-Watts (AWS)、Debojit Bhadra (AWS)、Manav Yadav (AWS)

コードリポジトリ: AWS アカウント管理通知子

環境: 実稼働

テクノロジー: 管理とガバナンス

AWS サービス: AWS CloudTrail、Amazon EventBridge、AWS Lambda 、AWS Organizations 、Amazon SNS

[概要]

AWS OrganizationsCloseAccount API を使用すると、ルート認証情報を使用してアカウントにログインしなくても、組織内のメンバーアカウントをプログラムで閉鎖できます。RemoveAccountFromOrganization API は AWS Organizations の組織からアカウントをプルアウトするため、スタンドアロンアカウントになります。

これらの API により、AWS アカウントを閉鎖または削除できるオペレーターの数が増加する可能性があります。AWS Organizations 管理アカウントの AWS Identity and Access Management (IAM) を通じて組織にアクセスできるすべてのユーザーは、これらの API を呼び出すことができるため、関連する多要素認証 (MFA) デバイスを持つアカウントのルート メールの所有者にアクセスが限定されません。

このパターンでは、CloseAccount および RemoveAccountFromOrganization API が呼び出されるとアラートが実装されるため、これらのアクティビティを監視できます。アラートは、「Amazon Simple Notification Service (Amazon SNS)」のトピックを使用します。ウェブフック経由で Slack 通知を設定することもできます。

前提条件と制限

前提条件

  • アクティブな AWS アカウント

  • AWS Organizations 内の組織

  • 組織のルート下にある組織管理アカウントにアクセスして、必要なリソースを作成します。

機能制限

  • AWS Organizations API リファレンス」で説明されているように、CloseAccount API では 30 日以内に閉鎖できるのは、アクティブなメンバーアカウントの 10% のみです。

  • AWS アカウントが閉鎖されると、ステータスは SUSPENDED に変わります。このステータスに移行した後 90 日間、AWS サポートはアカウントを再開できます。保留になったアカウントは 90 日後に完全に削除されます。

  • AWS Organizations 管理アカウントと API にアクセスできるユーザーには、これらのアラートを無効にする権限もあります。誤った削除ではなく悪意のある行為が主な懸念事項である場合は、このパターンで作成されたリソースを「IAM のアクセス許可の境界」で保護することを検討してください。

  • API CloseAccount および RemoveAccountFromOrganization は、米国東部 (バージニア北部) リージョン (us-east-1) で呼び出します。したがって、イベントを観察するには、このソリューションを us-east-1 でデプロイする必要があります。

アーキテクチャ

ターゲットテクノロジースタック

  • AWS Organizations

  • AWS CloudTrail

  • Amazon EventBridge

  • AWS Lambda

  • Amazon SNS

ターゲット アーキテクチャ

このパターンのソリューションアーキテクチャを次の図に示します。

AWS Organizations でアカウント閉鎖のアラートを設定するためのアーキテクチャ
  1. AWS Organizations は CloseAccount または RemoveAccountFromOrganization のリクエストを処理します。

  2. Amazon EventBridge は AWS と統合 CloudTrail され、これらのイベントをデフォルトのイベントバスに配信します。

  3. カスタム Amazon EventBridge ルールは AWS Organizations リクエストに一致し、AWS Lambda 関数を呼び出します。

  4. Lambda 関数は、ユーザーがメールでアラートを受信したり、さらに処理するためにサブスクライブできる SNS のトピックにメッセージを渡します。

  5. Slack 通知が有効になっている場合、Lambda 関数は Slack ウェブフックにメッセージを配信します。

ツール

AWS サービス

  • AWS CloudFormation は、インフラストラクチャをコードとして扱うことで、関連する AWS およびサードパーティリソースのコレクションをモデル化し、迅速かつ一貫してプロビジョニングし、ライフサイクル全体を通じて管理する方法を提供します。

  • Amazon EventBridge は、アプリケーションをさまざまなソースからのデータに接続するために使用できるサーバーレスイベントバスサービスです。 EventBridge はイベントを受信し、環境の変化を示すインジケータを受け取り、イベントをターゲットにルーティングするルールを適用します。ルールは、イベントパターンと呼ばれるイベントの構造、またはスケジュールのいずれかに基づいて、イベントをターゲットにマッチングさせます。

  • AWS Lambda」 – AWS Lambda はサーバーのプロビジョニングや管理を行わずにコードの実行を支援できるコンピューティングサービスです。Lambda は必要に応じてコードを実行し、1 日あたり数個のリクエストから 1 秒あたり数千のリクエストまで自動的にスケールします。支払いは、使用したコンピューティング時間に対する料金のみになります。コードが実行されていないときに料金は発生しません。

  • AWS Organizations は、AWS リソースの成長や拡張に伴い、環境の一元管理およびガバナンスを支援します。AWS Organizations を使用すると、プログラムによる AWS アカウントの新規作成、リソースの割り当て、ワークロードを整理するためのアカウントのグループ化、ガバナンスのアカウントまたはアカウントグループへのポリシーの適用、すべてのアカウントに単一の支払い方法を使用した請求の簡素化が可能になります。

  • AWS CloudTrail は、AWS インフラストラクチャ全体のアカウントアクティビティをモニタリングおよび記録し、ストレージ、分析、および修復アクションを制御できます。

  • Amazon Simple Notification Service (Amazon SNS ) は、 application-to-application (A2A) と application-to-person (A2P) 通信の両方に対応するフルマネージド型のメッセージングサービスです。

その他のツール

Code

このパターンのコードは、 GitHub AWS アカウントクローザー通知子リポジトリにあります。

ソリューションには、このパターンのアーキテクチャをデプロイする CloudFormation テンプレートが含まれています。AWS Lambda Powertools for Python ライブラリを使用してログ記録とトレースを行います。

エピック

タスク説明必要なスキル

ソリューションスタックの CloudFormation テンプレートを起動します。

このパターンの CloudFormation テンプレートは、GitHub リポジトリ のメインブランチにあります。IAM ロール、 EventBridge ルール、Lambda 関数、および SNS トピックをデプロイします。

テンプレートを起動するには:

  1. GitHub リポジトリのクローンを作成して、ソリューションコードのコピーを取得します。

  2. AWS Organizations 管理アカウントで、AWS マネジメントコンソールを開きます。

  3. 米国東部 (バージニア北部) リージョン () を選択しus-east-1CloudFormation コンソール を開きます。

  4. account-closure-notifier.yml テンプレートを使用し、以下の値を指定することで、スタックを作成します。 

    • スタック名: aws-account-closure-notifier-stack 

    • ResourcePrefixパラメータ: aws-account-closure-notifier

    • SlackNotification パラメータ: Slack 通知が必要な場合は、この設定を true に変更します。

    • SlackWebhookEndpoint パラメーター: Slack 通知が必要な場合は、ウェブフック URL を指定します。

CloudFormation スタックの起動の詳細については、AWS ドキュメント「」を参照してください。

AWS 管理者

ソリューションが正常に起動したことを検証します。 

  1. CloudFormation スタックのステータスが CREATE_COMPLETE になるまで待ちます。

  2. EventBridge コンソールを開きますus-east-1

  3. aws-account-closure-notifier-event-rule という名前で新しいルールが作成されていることを検証します

AWS 管理者

SNS トピックにサブスクライブします。

(オプション) SNS トピックをサブスクライブする場合:

  1. us-east-1Amazon SNS コンソールを開き、aws-account-closure-notifier-sns-topic という名前のトピックを見つけます。

  2. トピック名を選択し、[サブスクリプションの作成] を選択します。

  3. プロトコルには、[Eメール] を選択します。

  4. エンドポイントに通知の受取先として使用するメールアドレスを入力し、[サブスクリプションの作成] を選択します。

  5. メールの受信トレイに AWS Notifications からのメッセージが届いていることを確認してください。メール内のリンクを使用して、サブスクリプションを確認します。

SNS 通知をセットアップする詳しい方法については、「Amazon SNS ドキュメント」を参照してください。

AWS 管理者
タスク説明必要なスキル

デフォルトのイベントバスにテストイベントを送信します。

GitHub リポジトリには、テストのために EventBridge デフォルトのイベントバスに送信できるサンプルイベントが用意されています。この EventBridge ルールは、カスタムイベントソース を使用するイベントにも反応しますaccount.closure.notifier

注: CloudTrail イベントを AWS サービスとして送信することはできないため、イベントソースを使用してこのイベントを送信することはできません。

テストイベントを送信するには

  1. EventBridge コンソールを開きますus-east-1

  2. ナビゲーションペインの [バス] で、[イベントバス] を選択してから、デフォルトのイベントバスを選択します。

  3. [イベントの送信] を選択します。

  4. [イベントソース] には、account.closure.notifier と入力します。

  5. [詳細タイプ] には、AWS API Call via CloudTrail と入力します。

  6. イベントの詳細 では、 GitHub リポジトリtests/dummy-event.jsonから の内容をテキストボックスにコピーして貼り付けます。

  7. [送信] を選択して通知ワークフローを開始します。

AWS 管理者

メール通知を受信したことを確認します。

SNS トピックをサブスクライブしているメールボックスに通知が届いていることを確認します。閉鎖されたアカウントと API コールを実行したプリンシパルの詳細が記載されたメールが届きます。

AWS 管理者

Slack 通知を受信したことを検証します。

(オプション) CloudFormation テンプレートのデプロイ時に SlackWebhookEndpointパラメータのウェブフック URL を指定した場合は、ウェブフックにマッピングされている Slack チャンネルを確認します。閉鎖されたアカウントと API コールを実行したプリンシパルの詳細が記載されたメッセージが表示されます。

AWS 管理者

関連リソース