AWS Identity and Access Management Access Analyzer 使用 Amazon 監控 EventBridge - AWS Identity and Access Management

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

AWS Identity and Access Management Access Analyzer 使用 Amazon 監控 EventBridge

使用本主題中的資訊,了解如何使用 Amazon 監控 IAM 存取分析器發現並存取預覽 EventBridge。 EventBridge 是 Amazon CloudWatch 活動的新版本。

問題清單事件

IAM Access Analyzer 會 EventBridge 針對每個產生的發現項目傳送事件,以變更現有發現項目的狀態,以及何時刪除發現項目。若要接收有關發現項目的發現項目和通知,您必須在 Amazon 中建立事件規則 EventBridge。建立事件規則時,您也可以根據規則指定要觸發的目標動作。例如,您可以建立事件規則,以便在從 IAM Access Analyzer 收到新問題清單的事件時觸發 Amazon SNS 主題。

存取預覽事件

IAM 存取分析器會 EventBridge 針對每個存取預覽傳送事件,並變更其狀態。這包括第一次建立存取預覽 (狀態為「建立」)、存取預覽完成 (狀態為「已完成」) 或存取預覽建立失敗 (狀態為「失敗」) 時的事件。若要接收有關存取預覽的通知,您必須在中建立事件規則 EventBridge。建立事件規則時,您可以根據規則指定要觸發的目標動作。例如,您可以建立事件規則,以便在從 IAM Access Analyzer 收到的已完成存取預覽時觸發 Amazon SNS 主題。

事件通知頻率

IAM Access Analyzer 會將新發現項目和發現項目的事件傳送至您帳戶中發生事件後大約一小時 EventBridge內的狀態更新。IAM Access Analyzer 也會在已解決的發現項目遭到刪除 EventBridge 時傳送事件,因為保留期已過期。對於因為產生它們的分析器被刪除而刪除的發現項目,事件會傳送到刪除分析器後 EventBridge 大約 24 小時。問題清單遭刪除時,問題清單的狀態不會變更。相反地,isDeleted 屬性會設定為 true。IAM Access Analyzer 也會將新建立的存取預覽和存取預覽狀態變更的事件傳送至 EventBridge。

外部存取權調查結果事件範例

以下是 IAM 存取分析器外部存取尋找事件傳送至的範例 EventBridge。id列出的是中事件的 ID EventBridge。若要深入瞭解,請參閱中的事件和事件模式 EventBridge

detail 物件中,accountIdregion 屬性的值參考結果所報告的帳戶和區域。isDeleted 屬性會指出事件是否來自要刪除的問題清單。id 是結果 ID。resources 陣列是具有產生結果的分析器 ARN 的單例。

{ "account": "111122223333", "detail": { "accountId": "111122223333", "action": [ "s3:GetObject" ], "analyzedAt": "2019-11-21T01:22:22Z", "condition": {}, "createdAt": "2019-11-20T04:58:50Z", "id": "22222222-dcba-4444-dcba-333333333333", "isDeleted": false, "isPublic": false, "principal": { "AWS": "999988887777" }, "region": "us-west-2", "resource": "arn:aws:s3:::my-bucket", "resourceType": "AWS::S3::Bucket", "status": "ACTIVE", "updatedAt": "2019-11-21T01:14:07Z", "version": "1.0" }, "detail-type": "Access Analyzer Finding", "id": "11111111-2222-4444-aaaa-333333333333", "region": "us-west-2", "resources": [ "arn:aws:access-analyzer:us-west-2:111122223333:analyzer/MyAnalyzer" ], "source": "aws.access-analyzer", "time": "2019-11-21T01:22:33Z", "version": "0" }

IAM 存取分析器也會傳送事件,以取 EventBridge 得錯誤發現項目。錯誤問題清單是 IAM Access Analyzer 無法分析資源時產生的問題清單。錯誤問題清單的事件包括下列範例所示的 error 屬性。

{ "account": "111122223333", "detail": { "accountId": "111122223333", "analyzedAt": "2019-11-21T01:22:22Z", "createdAt": "2019-11-20T04:58:50Z", "error": "ACCESS_DENIED", "id": "22222222-dcba-4444-dcba-333333333333", "isDeleted": false, "region": "us-west-2", "resource": "arn:aws:s3:::my-bucket", "resourceType": "AWS::S3::Bucket", "status": "ACTIVE", "updatedAt": "2019-11-21T01:14:07Z", "version": "1.0" }, "detail-type": "Access Analyzer Finding", "id": "11111111-2222-4444-aaaa-333333333333", "region": "us-west-2", "resources": [ "arn:aws:access-analyzer:us-west-2:111122223333:analyzer/MyAnalyzer" ], "source": "aws.access-analyzer", "time": "2019-11-21T01:22:33Z", "version": "0" }

以下是 IAM 存取分析器未使用的存取尋找事件傳送至的範例 EventBridge。id列出的是中事件的 ID EventBridge。若要深入瞭解,請參閱中的事件和事件模式 EventBridge

detail 物件中,accountIdregion 屬性的值參考結果所報告的帳戶和區域。isDeleted 屬性會指出事件是否來自要刪除的問題清單。id 是結果 ID。

{ "version": "0", "id": "dc7ce3ee-114b-3243-e249-7f10f9054b21", "detail-type": "Unused Access Finding for IAM entities", "source": "aws.access-analyzer", "account": "123456789012", "time": "2023-09-29T17:31:40Z", "region": "us-west-2", "resources": [ "arn:aws:access-analyzer:us-west-2:123456789012:analyzer/integTestLongLivingAnalyzer-DO-NOT-DELETE" ], "detail": { "findingId": "b8ae0460-5d29-4922-b92a-ba956c986277", "resource": "arn:aws:iam::111122223333:role/FindingIntegTestFakeRole", "resourceType": "AWS::IAM::Role", "accountId": "111122223333", "createdAt": "2023-09-29T17:29:18.758Z", "updatedAt": "2023-09-29T17:29:18.758Z", "analyzedAt": "2023-09-29T17:29:18.758Z", "previousStatus": "", "status": "ACTIVE", "version": "62160bda-8e94-46d6-ac97-9670930d8ffb", "isDeleted": false, "findingType": "UnusedPermission", "numberOfUnusedServices": 0, "numberOfUnusedActions": 1 } }

IAM 存取分析器也會傳送事件,以取 EventBridge 得錯誤發現項目。錯誤問題清單是 IAM Access Analyzer 無法分析資源時產生的問題清單。錯誤問題清單的事件包括下列範例所示的 error 屬性。

{ "version": "0", "id": "c2e7aa1a-4df7-7652-f33e-64113b8997d4", "detail-type": "Unused Access Finding for IAM entities", "source": "aws.access-analyzer", "account": "111122223333", "time": "2023-10-31T20:26:12Z", "region": "us-west-2", "resources": [ "arn:aws:access-analyzer:us-west-2:111122223333:analyzer/ba811f91-de99-41a4-97c0-7481898b53f2" ], "detail": { "findingId": "b01a34f2-e118-46c9-aef8-0d8526b495c7", "resource": "arn:aws:iam::123456789012:role/TestRole", "resourceType": "AWS::IAM::Role", "accountId": "444455556666", "createdAt": "2023-10-31T20:26:08.647Z", "updatedAt": "2023-10-31T20:26:09.245Z", "analyzedAt": "2023-10-31T20:26:08.525Z", "previousStatus": "", "status": "ACTIVE", "version": "7c7a72a2-7963-4c59-ac71-f0be597010f7", "isDeleted": false, "findingType": "UnusedIAMRole", "error": "INTERNAL_ERROR" } }

存取預覽事件範例

下列範例顯示建立存取預覽 EventBridge 時傳送至的第一個事件的資料。resources 陣列是存取預覽相關聯的分析器 ARN 的單例。在 detail 物件中,id 指的是存取預覽 ID,而 configuredResources 是指為其建立存取預覽的資源。statusCreating,並且是指存取預覽狀態。previousStatus 未指定,因為剛剛建立存取預覽。

{ "account": "111122223333", "detail": { "accessPreviewId": "aaaabbbb-cccc-dddd-eeee-ffffaaaabbbb", "configuredResources": [ "arn:aws:s3:::example-bucket" ], "createdAt": "2020-02-20T00:00:00.00Z", "region": "us-west-2", "status": "CREATING", "version": "1.0" }, "detail-type": "Access Preview State Change", "id": "aaaabbbb-2222-3333-4444-555566667777", "region": "us-west-2", "resources": [ "arn:aws:access-analyzer:us-west-2:111122223333:analyzer/MyAnalyzer" ], "source": "aws.access-analyzer", "time": "2020-02-20T00:00:00.00Z", "version": "0" }

下列範例顯示傳送至 EventBridge 以進行存取預覽之事件的資料,其狀態從變更CreatingCompleted。在詳細資料物件中,id 是指存取預覽 ID。statuspreviousStatus 是指存取預覽狀態,其中先前的狀態為 Creating,而目前的狀態為 Completed

{ "account": "111122223333", "detail": { "accessPreviewId": "aaaabbbb-cccc-dddd-eeee-ffffaaaabbbb", "configuredResources": [ "arn:aws:s3:::example-bucket" ], "createdAt": "2020-02-20T00:00:00.000Z", "previousStatus": "CREATING", "region": "us-west-2", "status": "COMPLETED", "version": "1.0" }, "detail-type": "Access Preview State Change", "id": "11112222-3333-4444-5555-666677778888", "region": "us-west-2", "resources": [ "arn:aws:access-analyzer:us-west-2:111122223333:analyzer/MyAnalyzer" ], "source": "aws.access-analyzer", "time": "2020-02-20T00:00:00.00Z", "version": "0" }

下列範例顯示傳送至 EventBridge 以進行存取預覽之事件的資料,其狀態從變更CreatingFailed。在 detail 物件中,id 是指存取預覽 ID。statuspreviousStatus 是指存取預覽狀態,其中先前的狀態為 Creating,而目前的狀態為 FailedstatusReason 欄位會提供原因代碼,指出存取預覽因為無效的資源組態而失敗。

{ "account": "111122223333", "detail": { "accessPreviewId": "aaaabbbb-cccc-dddd-eeee-ffffaaaabbbb", "configuredResources": [ "arn:aws:s3:::example-bucket" ], "createdAt": "2020-02-20T00:00:00.00Z", "previousStatus": "CREATING", "region": "us-west-2", "status": "FAILED", "statusReason": { "code": "INVALID_CONFIGURATION" }, "version": "1.0" }, "detail-type": "Access Preview State Change", "id": "99998888-7777-6666-5555-444433332222", "region": "us-west-2", "resources": [ "arn:aws:access-analyzer:us-west-2:111122223333:analyzer/MyAnalyzer" ], "source": "aws.access-analyzer", "time": "2020-02-20T00:00:00.00Z", "version": "0" }

使用主控台建立事件規則

下列程序說明如何使用主控台建立事件規則。

  1. 在以下位置打開 Amazon EventBridge 控制台 https://console.aws.amazon.com/events/

  2. 使用下列值建立監視尋找事件或存取預覽事件的 EventBridge 規則:

    • 針對規則類型,選擇具有事件模式的規則

    • Event source (事件來源) 中,選擇 Other (其他)。

    • Event pattern (事件模式) 中,選擇 Custom patterns (JSON editor) (自訂模式 (JSON 編輯器)),並將下列事件模式範例貼到文字區域:

      • 若要根據外部存取權或未使用的存取權調查結果事件建立規則,請使用下列模式範例:

        { "source": [ "aws.access-analyzer" ], "detail-type": [ "Access Analyzer Finding" ] }
      • 若要僅根據未使用的存取發現項目事件建立規則,請使用下列模式範例:

        { "source": [ "aws.access-analyzer" ], "detail-type": [ "Unused Access Finding for IAM entities" ] }
        注意

        您無法僅根據外部存取發現項目事件建立規則。

      • 若要根據存取預覽事件建立規則,請使用下列模式範例:

        { "source": [ "aws.access-analyzer" ], "detail-type": [ "Access Preview State Change" ] }
    • 對於目標類型請選擇AWS 服務,然後為選取目標選擇一個目標,例如 Amazon SNS 主題或 AWS Lambda 功能。當接收到符合規則中定義之事件模式的事件時,就會觸發目標。

    若要進一步了解如何建立規則,請參閱 Amazon EventBridge 使用者指南中的建立可對事件做出反應的 Amazon EventBridge 則。

使用 CLI 建立事件規則

  1. 使用以下內容創建 Amazon EventBridge 使用的規則 AWS CLI。將規則名稱TestRule取代為規則的名稱。

    aws events put-rule --name TestRule --event-pattern "{\"source\":[\"aws.access-analyzer\"]}"
  2. 您可以自訂規則,只針對產生的一部分問題清單 (例如具有特定屬性的問題清單) 觸發目標動作。下列範例示範如何建立規則,該規則會僅針對狀態為作用中的問題清單而觸發目標動作。

    aws events put-rule --name TestRule --event-pattern "{\"source\":[\"aws.access-analyzer\"],\"detail-type\":[\"Access Analyzer Finding\"],\"detail\":{\"status\":[\"ACTIVE\"]}}"

    下列範例示範如何建立規則,該規則會僅針對狀態從 Creating 變更為 Completed 的存取預覽而觸發目標動作。

    aws events put-rule --name TestRule --event-pattern "{\"source\":[\"aws.access-analyzer\"],\"detail-type\":[\"Access Preview State Change\"],\"detail\":{\"status\":[\"COMPLETED\"]}}"
  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