Amazon EventBridge による AWS IAM Access Analyzer のモニタリング - AWS Identity and Access Management

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

Amazon EventBridge による AWS IAM Access Analyzer のモニタリング

このトピックでは、Amazon EventBridge を使用して Access Analyzer の結果をモニタリングする方法について説明します。EventBridge は Amazon CloudWatch Events の新しいバージョンです。

結果のイベント

Access Analyzer は、各結果の生成時、既存の結果の状態の変更時、および結果の削除時に EventBridge にイベントに送信します。結果および結果に関する通知を受信するには、Amazon EventBridge でイベントルールを作成する必要があります。イベントルールを作成するときに、ルールに基づいてトリガーするターゲットアクションを指定することもできます。たとえば、新しい結果のイベントが Access Analyzer から返されたときに Amazon SNS トピックをトリガーするイベントルールを作成できます。

イベントの通知頻度

Access Analyzer は、アカウント内でイベントが発生してから約 1 時間以内に新しい結果や、既存の結果のステータス更新に関するイベントを EventBridge に送信します。また、Access Analyzer は、保存期間の期限が切れたために解決済みの結果が削除されたときにも EventBridge にイベントを送信します。結果を生成したアナライザーが削除されたために結果が削除された場合は、アナライザーが削除されてから約 24 時間後に EventBridge にイベントが送信されます。結果が削除されても、結果のステータスは変更されません。代わりに、isDeleted 属性が true に設定されます。

イベントの例

次に示すのは、EventBridge に送信される Access Analyzer イベントの例です。表示されている id は、EventBridge のイベントの ID です。詳細については、「EventBridge のイベントとイベントパターン」を参照してください。

detail オブジェクトでは、accountId 属性と region 属性の値は、結果で報告されたアカウントとリージョンを参照します。isDeleted 属性は、イベントが削除対象の結果に関連するものであるかどうかを示します。

{ "id": "22222222-dcba-4444-dcba-333333333333", "detail-type": "Access Analyzer Finding", "source": "aws.access-analyzer", "account": "111122223333", "time": "2019-11-21T01:22:33Z", "region": "us-west-2", "resources": [ "arn:aws:access-analyzer:us-west-2:111122223333:analyzer/MyAnalyzer" ], "detail": { "version": "1.0", "accountId": "111122223333", "region": "us-west-2", "isDeleted": false, COMPLETE_ACCESS_ANALYZER_GET_FINDING_RESPONSE } }

"id" は結果 ID です。"resources" 配列は、結果を生成したアナライザーの ARN を持つシングルトンです。

次の例では、Access Analyzer API の GetFinding オペレーションから EventBridge に送信されたイベントのデータを示しています。

"version": "0", "id": "22222222-dcba-4444-dcba-333333333333", "status": "ACTIVE", "resourceType": "AWS::S3::Bucket", "resource": "arn:aws:s3:::my-bucket", "createdAt": "2019-11-20T04:58:50Z", "analyzedAt": "2019-11-21T01:22:22Z", "updatedAt": "2019-11-21T01:14:07Z", "principal": {"AWS": "999988887777"}, "action": ["s3:GetObject"], "condition": {}, "isPublic": false

Access Analyzer は、エラー結果に関するイベントも EventBridge に送信します。エラー結果は、Access Analyzer が分析対象のリソースにアクセスできない場合に生成されます。エラー結果のイベントには、次の例に示すように error 属性が含まれます。

"id": "22222222-dcba-4444-dcba-333333333333", "status": "ACTIVE", "resourceType": "AWS::S3::Bucket", "resource": "arn:aws:s3:::my-bucket", "error": "ACCESS_DENIED", "createdAt": "2019-10-16T19:21:44.244Z", "analyzedAt": "2019-10-16T19:21:44.244Z", "updatedAt": "2019-10-16T19:21:44.244Z"

コンソールを使用したイベントルールの作成

次の手順では、コンソールを使用してイベントルールを作成する方法について説明します。

https://console.aws.amazon.com/events/ で Amazon EventBridge コンソールを開きます。

  1. [Create rule] を選択します。

  2. [Name (名前)] に名前を入力し、必要に応じて [Description (説明)] に説明を入力します。

  3. [Define pattern (パターンの定義)] で [Event pattern (イベントパターン)]、[Custom pattern (カスタムパターン)] の順に選択します。

  4. 次の例をコピーし、[Event pattern (イベントパターン)] ボックス内に貼り付けます。

    { "source": [ "aws.access-analyzer" ], "detail-type": [ "Access Analyzer Finding" ] }
  5. [Save] を選択します。

  6. [Select targets (ターゲットの選択)] で、Amazon SNS トピックや AWS Lambda 関数など、ルールの [Target (ターゲット)] アクションを選択します。

  7. ターゲットがトリガーされたときに使用する特定の SNS トピックまたは Lambda 関数を選択します。

    ターゲットは、ルールで定義したイベントパターンに一致するイベントが返されたときにトリガーされます。

  8. [Save (保存)] を選択してルールを作成します。

ルールの作成の詳細については、「AWS リソースからのイベントでトリガーする EventBridge ルールの作成」を参照してください。

CLI を使用したイベントルールの作成

  1. AWS CLI を使用して Amazon EventBridge のルールを作成する方法は次のとおりです。ルール名 TestRule を、使用するルールの名前に置き換えます。

    aws events put-rule --name TestRule --event-pattern "{\"source\":[\"aws.access-analyzer\"]}"
  2. ルールをカスタマイズして、生成された結果のサブセット (特定の属性を持つ結果など) に対してのみターゲットアクションをトリガーできます。次の例は、ステータスが Active の結果に対してのみターゲットアクションをトリガーするルールを作成する方法を示しています。

    aws events put-rule --name TestRule --event-pattern "{\"source\":[\"aws.access-analyzer\"],\"detail-type\":[\"Access Analyzer Finding\"],\"detail\":{\"status\":[\"ACTIVE\"]}}"
  3. 作成したルールのターゲットとして Lambda 関数を定義するには、次のコマンド例を使用します。環境に応じて、ARN のリージョンと関数名を置き換えます。

    aws events put-targets --rule TestRule --targets Id=1,Arn=arn:aws:lambda:us-east-1:111122223333:function:MyFunction
  4. ルールのターゲットを呼び出すために必要なアクセス許可を追加します。次の例は、前述の例に従って、Lambda 関数にアクセス許可を付与する方法を示しています。

    aws lambda add-permission --function-name MyFunction --statement-id 1 --action 'lambda:InvokeFunction' --principal events.amazonaws.com