チュートリアル: による組織の重要な変更のモニタリングCloudWatch イベント - AWS Organizations

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

チュートリアル: による組織の重要な変更のモニタリングCloudWatch イベント

このチュートリアルでは、組織の変更を監視するために CloudWatch イベント を設定する方法を示します。まず、ユーザーが特定の AWS Organizations 操作を呼び出したときにトリガーされるルールを設定します。次に、ルールがトリガーされたときに AWS Lambda 関数を実行するために CloudWatch イベント を設定し、イベントに関する詳細を E メールで送信するように Amazon SNS を設定します。

次の図は、チュートリアルの主なステップを示しています。

ステップ 1: 証跡およびイベントセレクタの設定

AWS CloudTrail で、証跡と呼ばれるログを作成します。すべての API コールをキャプチャするように設定します。

ステップ 2: Lambda関数を設定する

イベントに関する詳細を S3 バケットにログ記録する AWS Lambda 関数を作成します。

ステップ 3: サブスクライバーに E メールを送信する Amazon SNSトピックを作成する

受信者に E メールを送信する Amazon SNS トピックを作成し、トピックに自分自身をサブスクライブします。

ステップ 4: CloudWatch イベントルールの作成

指定された API コールの詳細を Lambda 関数および SNS トピック受信者に渡すよう CloudWatch イベント に指示するルールを作成します。

ステップ 5: CloudWatch イベントルールをテストする

監視対象の操作の 1 つを実行して新しいルールをテストします。このチュートリアルでは、監視対象の操作で、組織単位 (OU) を作成しています。Lambda 関数が作成するログエントリを表示し、Amazon SNS が受信者に送信する E メールを表示します。

Tip

このチュートリアルを、アカウントの作成が完了した際のメール通知を送信など、類似したオペレーションを設定するガイドとして使用することもできます。アカウントの作成は非同期オペレーションであるため、デフォルトでは完了時に通知されません。AWS Organizations で AWS CloudTrail と CloudWatch イベント を使用する方法については、「AWS Organizations でのログ記録とモニタリング」を参照してください。

Prerequisites

このチュートリアルでは、以下のことを前提としています。

  • 組織の管理アカウント (以前の「マスターアカウント」) の AWS マネジメントコンソール ユーザーIAMとして にサインインできます。IAM ユーザーには、CloudTrail のログ、Lambda の関数、Amazon SNS のトピック、CloudWatch のルールを作成および設定するためのアクセス権限が必要です。アクセス許可を付与する方法の詳細については、『https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html』の「IAM ユーザーガイドアクセス管理」または、アクセスを設定するサービスのガイドを参照してください。

  • ステップ 1 で設定した CloudTrail ログを受信するための既存の Amazon Simple Storage Service (Amazon S3) バケット (または、バケットを作成するアクセス許可がある) にアクセスできます。

重要

現在、AWS Organizations は、米国東部(バージニア北部) リージョン (グローバルに利用可能ですが) でホストされています。このチュートリアルのステップを実行するには、そのリージョンを使用するよう AWS マネジメントコンソール を設定する必要があります。

ステップ 1: 証跡およびイベントセレクタの設定

このステップでは、 管理アカウントにサインインして、 でログ (証跡と呼ばれる) を設定しますAWS CloudTrail。また、CloudWatch イベント がトリガーを呼び出すように、証跡でイベントセレクターを設定し、すべての読み取り/書き込み API コールをキャプチャします。

証跡を作成するには

  1. 組織の管理アカウントの管理者AWSとして にサインインし、 で CloudTrail コンソールを開きますhttps://console.aws.amazon.com/cloudtrail/

  2. コンソールの右上にあるナビゲーションバーで、米国東部(バージニア北部) リージョンを選択します。別のリージョンを選択した場合、AWS Organizations は、CloudWatch イベント 設定のオプションとして表示されず、CloudTrail は、AWS Organizations に関する情報をキャプチャしません。

  3. ナビゲーションペインで、[Trails] を選択します。

  4. [Create trail (証跡の作成)] を選択します。

  5. [証跡名] に、My-Test-Trail と入力します。

  6. CloudTrail がログを配信する場所を指定するには、次のいずれかのオプションを実行します。

    • 既にバケットがある場合、[Create a new S3 bucket (新しい S3 バケットの作成)] の横にある [No (いいえ)] を選択してから、[S3 バケット] リストからバケット名を選択します。

    • バケットを作成する必要がある場合は、[Create a new S3 bucket (新しい S3 バケットの作成)] の横にある [はい] を選択し、S3 バケットに新しいバケットの名前を入力します。

      注記

      S3 バケット名は、グローバルに 一意である必要があります。

  7. [作成] をクリックします。

  8. 先ほど作成した証跡 [My-Test-Trail] を選択します。

  9. [Management events] の横にある鉛筆アイコンを選択します。

  10. [Read/Write events] で、[All]、[Save]、[Configure] の順に選択します。

CloudWatch イベント は、アラームルールが着信 API コールと一致したときに、アラートを送信する複数の異なる方法から選択できます。このチュートリアルでは、2 つの方法を示しています: API コールをログに記録できる Lambda 関数を呼び出す方法、およびトピックの受信者へ E メールまたはテキストメッセージを送信する Amazon SNS トピックに情報を送信する方法です。次の 2 つのステップでは、必要なコンポーネントである Lambda 関数および Amazon SNS トピックを作成します。

ステップ 2: Lambda関数を設定する

このステップでは、後で設定する CloudWatch イベント ルールで送信された API アクティビティをログに記録する Lambda 関数を作成します。

CloudWatch イベント イベントをログに記録する Lambda 関数を作成するには

  1. AWS Lambda コンソール (https://console.aws.amazon.com/lambda/) を開きます。

  2. Lambda を初めて利用する場合は、ウェルカムページの [Get Started Now (今すぐ開始する)] を選択するか、[Create a function (関数の作成)] を選択します。

  3. [Create function] ページで、[Blueprints] を選択します。

  4. [設計図] 検索ボックスでは、フィルターに hello を入力し、[hello-world] 設計図を選択します。

  5. [Configure] を選択します。

  6. [基本的な情報] ページでは、以下を実行します。

    1. Lambda 関数名では、[名前] テキストボックスに LogOrganizationEvents と入力します。

    2. [ロール] で、[カスタムロールの作成] を選択してから、[AWS Lambda requires access to your resources] ページで、[Allow (許可)] を選択します。このロールは、必要なデータにアクセスし、出力ログを書き込むために Lambda 関数にアクセス権限を付与します。

    3. [Create function (関数の作成)] を選択します。

  7. 次のページでは、以下の例に示すように、Lambda 関数のサンプルコードを編集します。

    console.log('Loading function'); exports.handler = async (event, context) => { console.log('LogOrganizationsEvents'); console.log('Received event:', JSON.stringify(event, null, 2)); return event.key1; // Echo back the first key value // throw new Error('Something went wrong'); };

    このサンプルコードでは、「LogOrganizationEvents」マーカー文字列の後にイベントを構成する JSON 文字列を続けてイベントをログに記録します。

  8. [Save] を選択します。

ステップ 3: サブスクライバーに E メールを送信する Amazon SNSトピックを作成する

このステップでは、受信者に情報を E メールで送信する Amazon SNS トピックを作成します。このトピックは、後で作成する CloudWatch イベント ルールの「target」にします。

受信者に E メールを送信する Amazon SNS トピックを作成するには

  1. Amazon SNS コンソール (https://console.aws.amazon.com/sns/v3/) を開きます。

  2. ナビゲーションペインで、[トピック] を選択します。

  3. [Create new topic (新しいトピックの作成)] を選択します。

    1. [トピック名] に OrganizationsCloudWatchTopic と入力します。

    2. [Display name (表示名)] に OrgsCWEvnt と入力します。

    3. [Create topic (トピックの作成)] を選択します。

  4. トピックのサブスクリプションを作成できるようになりました。先ほど作成したトピックの ARN を選択します。

  5. [Create subscription] を選択します。

    1. [Create subscription] ページの [Protocol] で [Email] を選択します。

    2. [エンドポイント] に E メールアドレスを入力します。

    3. [Create subscription] を選択します。AWS は、前のステップで指定した E メールアドレスに E メールを送信します。E メールが送信されたら、[サブスクリプションを確認] リンクを選択して、E メールを正常に受信したことを確認します。

    4. コンソールに戻り、ページを更新します。[Pending confirmation] メッセージが表示されなくなり、現在有効なサブスクリプション ID に置き換えられます。

ステップ 4: CloudWatch イベントルールの作成

必要な Lambda 関数がアカウントに存在するようになったので、ルールの基準が満たされたときにそのルールを呼び出す CloudWatch イベント ルールを作成します。

CloudWatch イベント ルールを作成するには:

  1. CloudWatch コンソール (https://console.aws.amazon.com/cloudwatch/) を開きます。

  2. 前と同じように、 コンソールを米国東部(バージニア北部)リージョンに設定する必要があります。設定しないと、 に関する情報Organizationsは利用できません。コンソールの右上にあるナビゲーションバーで、米国東部(バージニア北部) リージョンを選択します。

  3. ナビゲーションペインで、[ルール] を選択し、[ルールの作成] を選択します。

  4. [イベントソース] で、以下の操作を実行します。

    1. [Event pattern] を選択します。

    2. [Build event pattern to match events by service] を選択します。

    3. [Service Name] で、[Organizations] を選択します。

    4. [Event Type (イベントタイプ)] で、[CloudTrail 経由の AWS API 呼び出し] を選択します。

    5. 特定のオペレーションを選択し、モニタリングする を入力します。APIsCreateAccountおよび CreateOrganizationalUnit 。 同様に、他のサービスを選択できます。使用可能な の完全なリストについては、 を参照してくださいAWS Organizations。APIsAWS Organizations API リファレンス

  5. [ターゲット] の [関数] で、前の手順で作成した関数を選択します。

  6. [ターゲット] で、[ターゲットの追加] を選択します。

  7. 新しいターゲット行で、ドロップダウンのヘッダーを選択して、[SNS トピック] を選択します。

  8. [Topic (トピック)] で、前の手順で作成した という名前のトピックを選択します。OrganizationCloudWatchTopic

  9. [詳細の設定] を選択します。

  10. [Configure rule details (詳細ルールの設定)] ページの [名前] に「OrgsMonitorRule」と入力し、[State (状態)] を選択したままにして、[Create rule (ルールの作成)] を選択します。

ステップ 5: CloudWatch イベントルールをテストする

このステップでは、組織単位 (OU) を作成すると、CloudWatch イベント ルールによってログエントリが生成され、イベントに関する詳細が E メールで送信されることを確認します。

OU を作成するには

  1. AWS Organizations コンソール (https://console.aws.amazon.com/organizations/) を開きます。

  2. [Organize Accounts (アカウントの整理)] タブを選択してから、[New organizational unit (新しい組織単位)] を選択します。

  3. OU の名前では、TestCWEOU と入力してから、[Create organizational unit (組織単位の作成)] を選択します。

CloudWatch イベント のログエントリを表示するには

  1. CloudWatch コンソール (https://console.aws.amazon.com/cloudwatch/) を開きます。

  2. ナビゲーションページで [Logs (ログ)] を選択します。

  3. [Log Groups (ロググループ)] で、Lambda 関数 [/aws/lambda/LogOrganizationEvents] に関連付けられているグループを選択します。

  4. 各グループには 1 つ以上のストリームがあり、今日のための 1 つのグループがあります。これを選択します。

  5. ログを表示します。次のような行が表示されます。

  6. エントリの中央の行を選択すると、受信したイベントの完全な JSON テキストが表示されます。API リクエストのすべての詳細は、出力の requestParameters および responseElements で確認できます。

    2017-03-09T22:45:05.101Z 0999eb20-051a-11e7-a426-cddb46425f16 Received event: { "version": "0", "id": "123456-EXAMPLE-GUID-123456", "detail-type": "AWS API Call via CloudTrail", "source": "aws.organizations", "account": "123456789012", "time": "2017-03-09T22:44:26Z", "region": "us-east-1", "resources": [], "detail": { "eventVersion": "1.04", "userIdentity": { ... }, "eventTime": "2017-03-09T22:44:26Z", "eventSource": "organizations.amazonaws.com", "eventName": "CreateOrganizationalUnit", "awsRegion": "us-east-1", "sourceIPAddress": "192.168.0.1", "userAgent": "AWS Organizations Console, aws-internal/3", "requestParameters": { "parentId": "r-exampleRootId", "name": "TestCWEOU" }, "responseElements": { "organizationalUnit": { "name": "TestCWEOU", "id": "ou-exampleRootId-exampleOUId", "arn": "arn:aws:organizations::1234567789012:ou/o-exampleOrgId/ou-exampleRootId-exampeOUId" } }, "requestID": "123456-EXAMPLE-GUID-123456", "eventID": "123456-EXAMPLE-GUID-123456", "eventType": "AwsApiCall" } }
  7. E メールアカウントで、 OrgsCWEvnt からのメッセージ ( Amazon SNSトピックの表示名) を確認します。E メールの本文には、前のステップで示されたログエントリと同じ JSON テキスト出力が含まれます。

クリーンアップ: 不要になったリソースを削除する

料金の発生を防ぐには、不要なこのチュートリアルの一部として作成した AWS リソースを削除する必要があります。

AWS 環境をクリーンアップするには

  1. https://console.aws.amazon.com/cloudtrail/ で CloudTrail コンソールを使用して、ステップ 1 で作成した My-Test-Trail という名前の証跡を削除します。

  2. ステップ 1 で Amazon S3 バケットを作成した場合は、https://console.aws.amazon.com/s3/ で Amazon S3 コンソールを使用して削除します。

  3. https://console.aws.amazon.com/lambda/ で Lambda コンソールを使用して、ステップ 2 で作成した LogOrganizationEvents という名前の関数を削除します。

  4. https://console.aws.amazon.com/sns/ で Amazon SNS コンソールを使用して、ステップ 3 で作成した OrganizationsCloudWatchTopic という名前の Amazon SNS トピックを削除します。

  5. https://console.aws.amazon.com/cloudwatch/ で CloudWatch コンソールを使用して、ステップ 4 で作成した OrgsMonitorRule という名前の CloudWatch ルールを削除します。

これで完了です。このチュートリアルでは、組織の変更を監視する CloudWatch イベント を設定しました。ユーザーが特定の AWS Organizations オペレーションを呼び出したときにトリガーされるルールを設定しました。ルールによって、イベントを記録した Lambda 関数が実行され、イベントに関する詳細を含む E メールが送信されました。