我想要檢視和監控特定 AWS Identity and Access Management (IAM) 身分的帳戶活動。
簡短描述
若要檢視和監控特定 IAM 身分的帳戶活動,您可以使用下列任何 AWS 服務和功能:
解決方案
若要使用 CloudTrail 事件歷史記錄
注意: 您可以使用 CloudTrail 搜尋過去 90 天的事件歷史記錄。
1. 開啟 CloudTrail 主控台。
2. 選擇事件歷史記錄。
3. 在篩選,選取下拉式清單。然後,選擇使用者名稱。
注意: 您也可以根據 AWS 存取金鑰進行篩選。
4. 在輸入使用者或角色名稱文字方塊,輸入 IAM 使用者的「易記名稱」或擔任的角色工作階段名稱。
注意: 特定工作階段的角色工作階段名稱是在擔任該角色時作為工作階段名稱提供的值。「使用者名稱」欄位值不會是使用 IAM 角色進行呼叫的角色名稱。
5. 在時間範圍下,輸入所需的時間範圍。然後,選擇套用。
6. 在事件時間,展開該事件。然後,選擇檢視事件。
UserIdentity 元素包含有關發出請求的 IAM 身分類型的詳細資訊,以及提供的憑證。
包含用於進行 API 呼叫的 IAM 使用者憑證的 userIdentity 元素範例
注意: 使用您要搜尋的使用者名稱取代 Alice。輸入 IAM 使用者的「易記名稱」或擔任的角色的「角色工作階段名稱」。 特定工作階段的角色工作階段名稱是在擔任該角色時作為工作階段名稱提供的值。對於使用該 IAM 角色進行的呼叫,userName 欄位值不是該角色名稱。
"userIdentity": {
"type": "IAMUser",
"principalId": "AIDAJ45Q7YFFAREXAMPLE",
"arn": "arn:aws:iam::123456789012:user/Alice",
"accountId": "123456789012",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"userName": "Alice"
}
包含臨時安全憑證的 userIdentity 元素範例
"userIdentity": {
"type": "AssumedRole",
"principalId": "AROAIDPPEZS35WEXAMPLE:AssumedRoleSessionName",
"arn": "arn:aws:sts::123456789012:assumed-role/RoleToBeAssumed/AssumedRoleSessionName",
"accountId": "123456789012",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"sessionContext": {
"attributes": {
"mfaAuthenticated": "false",
"creationDate": "20131102T010628Z"
},
"sessionIssuer": {
"type": "Role",
"principalId": "AROAIDPPEZS35WEXAMPLE",
"arn": "arn:aws:iam::123456789012:role/RoleToBeAssumed",
"accountId": "123456789012",
"userName": "RoleToBeAssumed"
}
}
}
注意: CloudTrail 事件歷史記錄使用擔任的角色工作階段名稱作為篩選事件的使用者名稱。
API 呼叫會使用擔任 IAM 角色取得的臨時安全憑證。該元素包含有關擔任角色取得憑證的額外詳細資訊。
注意: 如果您看不到使用者活動,請驗證是否支援 AWS 服務,並且 CloudTrail 是否已記錄 API 事件。如需詳細資訊,請參閱 CloudTrail 的 AWS 服務主題。
若要使用 CloudWatch Logs Insights
注意: 您可以使用 CloudWatch Logs Insights 來搜尋過去 90 天前的 API 歷史記錄。您必須建立並設定追蹤,以將日誌記錄到 Amazon CloudWatch Logs。如需詳細資訊,請參閱建立追蹤。
-
開啟 CloudWatch 主控台。
-
選擇日誌。
-
在日誌群組,選擇您的日誌群組。
-
選擇搜尋日誌群組。
-
在篩選事件,輸入查詢以搜尋使用者的 API 呼叫或特定 API 動作。然後,選擇重新整理圖示。
搜尋使用者 API 呼叫的日誌的查詢範例
注意: 使用您要搜尋的使用者名稱取代 Alice。輸入 IAM 使用者的「易記名稱」或擔任的角色的「角色工作階段名稱」。 特定工作階段的角色工作階段名稱是在擔任該角色時作為工作階段名稱提供的值。對於使用該 IAM 角色進行的呼叫,userName 欄位值不是該角色名稱。
{ $.userIdentity.userName = "Alice" }
搜尋特定 API 動作的日誌的查詢範例
注意: 下列範例查詢會搜尋 DescribeInstances API 動作。
{ ($.eventName = "DescribeInstances") && ($.requestParameters.userName = "Alice" ) }
如需詳細資訊,請參閱 CloudWatch Logs Insights 查詢語法。
若要使用 Athena 查詢
注意: 您可以使用 Athena 查詢過去 90 天前的 CloudTrail 日誌。
1. 開啟 Athena 主控台。
2. 選擇查詢編輯器。
- 根據您的使用案例,輸入下列其中一個範例查詢。然後,選擇執行查詢:
傳回由特定 IAM 使用者執行的所有 CloudTrail 事件的查詢範例
重要事項: 使用您的 Athena 資料表名稱取代 athena-table。使用您想要查看其帳戶活動的 IAM 使用者取代 Alice。
SELECT *
FROM athena-table
WHERE useridentity.type = 'IAMUser'
AND useridentity.username LIKE 'Alice';
篩選由 IAM 角色執行的所有 API 活動的查詢範例
注意: 使用您的 IAM 角色名稱取代 role-name。
SELECT *
FROM athena-table
WHERE useridentity.sessionContext.sessionissuer.arn LIKE '%role-name%'
AND useridentity.sessionContext.sessionissuer.type = 'Role';
符合角色 ARN 的查詢範例
SELECT *
FROM athena-table
WHERE useridentity.sessionContext.sessionissuer.arn = 'arn:aws:iam::account-id123456789:role/role-name'
AND useridentity.sessionContext.sessionissuer.type = 'Role';
使用 IAM 存取金鑰 ID 篩選所有活動的查詢範例
SELECT eventTime, eventName, userIdentity.principalId,eventSource
FROM athena-table
WHERE useridentity.accesskeyid like 'AKIAIOSFODNN7EXAMPLE'
相關資訊
如何使用 AWS CloudTrail 追蹤對 Amazon EC2 執行個體的 API 呼叫?
如何使用 CloudTrail 查看我的 AWS 帳戶的安全群組或資源是否已變更?