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

事件通知頻率

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

範例問題清單事件

以下為傳送至 EventBridge 的範例 Access Analyzer 事件。所列的 id 是 EventBridge 中事件的 ID。若要進一步了解,請參閱 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" }

Access Analyzer 也會將事件傳送至錯誤問題清單的 EventBridge。錯誤問題清單是 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" }

存取預覽事件範例

下列範例會顯示您建立存取預覽時傳送至 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" }

下列範例顯示針對狀態從 Creating 變更為 Completed 的存取預覽傳送至 EventBridge 的事件資料。在詳細資料物件中,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" }

下列範例顯示針對狀態從 Creating 變更為 Failed 的存取預覽傳送至 EventBridge 的事件資料。在 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" }

使用主控台建立事件規則

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

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" ] }

    或複製下列存取預覽事件範例,然後將它貼到 Event pattern (事件模式) 方塊中。

    { "source": [ "aws.access-analyzer" ], "detail-type": [ "Access Preview State Change" ] }
  5. 選擇 Save (儲存)。

  6. Select targets (選取目標),選擇規則的 Target (目標) 動作,例如 Amazon SNS 主題或 AWS Lambda 函數。

  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. 您可以自訂規則,只針對產生的一部分問題清單 (例如具有特定屬性的問題清單) 觸發目標動作。下列範例示範如何建立規則,該規則會僅針對狀態為作用中的問題清單而觸發目標動作。

    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