如何监控特定 IAM 用户、角色和 AWS 访问密钥的账户活动?
我想要查看并监控特定 AWS Identity and Access Management (IAM) 身份的账户活动。
概述
要查看和监控特定 IAM 身份的账户活动,您可以使用以下任何 AWS 服务和功能:
解决方法
CloudTrail 事件历史
**注意:**您可以使用 CloudTrail 搜索过去 90 天的事件历史记录。
1. 打开 CloudTrail 控制台。
-
选择事件历史记录。
-
在筛选器中,选择下拉列表。然后,选择用户名。
**注意:您也可以按 ** AWS 访问密钥进行筛选。
4.在输入用户名或角色名称文本框中,输入 IAM 用户的 “友好名称” 或代入的角色会话名称。
注意: 特定会话的角色会话名称是代入该角色时作为会话名称提供的值。“用户名” 字段的值不是使用 IAM 角色进行调用的角色名称。
-
在时间范围中,输入所需的时间范围。然后,选择应用。
-
在事件时间中,扩展事件。然后,选择查看事件。
userIdentity 元素包含有关发出请求的 IAM 身份类型和提供的证书的详细信息。
包含用于发出 API 调用的 IAM 用户凭证的 UserIdentity 元素示例
**注意:**用您要搜索的用户名替换 Alice。输入 IAM 用户的 “友好名称” 或代入角色的 “角色会话名称”。“ 特定会话的角色会话名称是代入该角色时作为会话名称提供的值。对于使用 IAM 角色进行的调用,用户名字段的值不是角色名称。
"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 日志。有关详细信息,请参阅创建记录。
-
打开 CloudWatch 控制台。
-
选择日志。
-
在日志组中,选择您的日志组。
-
选择搜索日志组。
-
在筛选事件中,输入查询搜索用户的 API 调用或特定 API 操作。然后,选择刷新图标。
搜索用户 API 调用日志的查询示例
**注意:**用您要搜索的用户名替换 Alice。输入 IAM 用户的 “友好名称” 或代入角色的 “角色会话名称”。“ 特定会话的角色会话名称是代入该角色时作为会话名称提供的值。对于使用 IAM 角色进行的调用,用户名字段的值不是角色名称。
{ $.userIdentity.userName = "Alice" }
搜索特定 API 操作日志的查询示例
**注意:**以下示例查询搜索 DescribeInstances API 操作。
{ ($.eventName = "DescribeInstances") && ($.requestParameters.userName = "Alice" ) }
有关更多信息,请参阅 CloudWatch 日志见解查询语法。
使用 Athena 查询
**注意:**您可以使用 Athena 查询过去 90 天内的 CloudTrail 日志。
1. 打开 Athena 控制台。
-
选择查询编辑器。
-
根据您的用例输入以下示例查询。然后,选择运行查询:
返回特定 IAM 用户执行的所有 CloudTrail 事件的查询示例
**重要事项:用您的 ** Athena 表名替换 athena 表。将 Alice 替换为您想要查看其账户活动的 IAM 用户。
SELECT * FROM athena-table WHERE useridentity.type = 'IAMUser' AND useridentity.username LIKE 'Alice';
用于筛选 IAM 角色执行的所有 API 活动的查询示例
注意:将角色名称替换为您的 IAM 角色名称。
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 官方已更新 2 年前
- AWS 官方已更新 3 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 1 年前