如何使用 CloudTrail 来搜索特定资源的操作,如谁在 EC2 实例上删除了 EBS 卷?
我想使用 AWS CloudTrail 在特定资源中搜索信息。
解决方法
重要事项:
- 每个账户的查询请求速率限制为每秒一个请求。如果超过此限制,则会出现节流错误。
- 在事件发生之前,请确认 CloudTrail 日志记录已开启。否则,您无法在事件发生的时间范围内查找该事件。
- AWS 服务可能会继续添加事件。CloudTrail 将事件记录在事件历史记录中。
- 如果在运行 AWS 命令行界面(AWS CLI)命令时收到错误,请确保您使用的是最新的 AWS CLI 版本。
以下是从 AWS CLI 执行的示例。这些命令中的大多数都使用命令行 JSON processor, jq。有关 jq 的更多信息,请访问 jq 网站。
要在 Amazon Linux 上安装 jq,请使用 yum:
yum install jq
注意: 有适用于其他平台的 jq 安装选项。有关 jq 安装选项的信息,请参阅 jq 网站上的下载 jq。
列出特定资源的所有事件名称
以下示例使用 Amazon Elastic Block Store (Amazon EBS)卷 ID 来获取任何 API 操作的近期事件列表。将 vol-0f59a355c2example 的 AttributeValue 替换为您的卷 ID,将 us-east-1 替换为您的区域。
$ aws cloudtrail lookup-events --lookup-attributes AttributeKey=ResourceName,AttributeValue=vol-0f59a355c2example --query 'Events[].{username:Username,time:EventTime,event:EventName,eventid:EventId,accesskey:AccessKeyId,resource:(Resources[0].ResourceName)}' --output table --region us-east-1
**注意:**CloudTrail 填充最近通话所需的时间可能比预期的要长。
您可以使用不同的资源 ID(例如 EBS 快照)来运行相同的示例。将 snap-0993c0d9a8example 的 AttributeValue 替换为您的快照 ID,将 us-east-1 替换为您的区域。
$ aws cloudtrail lookup-events --lookup-attributes AttributeKey=ResourceName,AttributeValue=snap-0993c0d9a8example --query 'Events[].{username:Username,time:EventTime,event:EventName,eventid:EventId,accesskey:AccessKeyId,resource:(Resources[0].ResourceName)}' --output table --region us-east-1
列出特定资源的特定 API 操作的事件
以下示例说明如何获取 EBS 卷的 DeleteVolume API 操作的最近事件列表。将 vol-0f59a355c2example 的 AttributeValue 替换为你的卷 ID。
$ aws cloudtrail lookup-events --lookup-attributes AttributeKey=ResourceName,AttributeValue=vol-0f59a355c2example --query 'Events[].{username:Username,time:EventTime,event:EventName,eventid:EventId,accesskey:AccessKeyId,resource:(Resources[0].ResourceName)}' --output json --region us-east-1 | jq -r '.[] | select(.event == "DeleteVolume")'
输出示例:
{ "username": "jdoe", "eventid": "e3ec4051-9999-4e87-9999-9cc72example", "resource": "vol-0f59a355c2example", "accesskey": "ASIAXUZVKEUACEXAMPLE", "time": 1550191014, "event": "DeleteVolume" }
列出所有资源的特定事件名称
以下示例使用 DeleteVolume 事件名称作为筛选器来列出已删除的 EBS 卷。请将 us-east-1 替换为您的区域。
$ aws cloudtrail lookup-events --lookup-attributes AttributeKey=EventName,AttributeValue=DeleteVolume --query 'Events[].{username:Username,time:EventTime,event:EventName,eventid:EventId,accesskey:AccessKeyId,resource:(Resources[0].ResourceName)}' --output table --region us-east-1
列出所有资源的已终止的 EC2 实例
以下示例列出了最近的 EC2 TerminateInstances。将 -region us-east-1 替换为您的区域。
$ aws cloudtrail lookup-events --lookup-attributes AttributeKey=EventName,AttributeValue=TerminateInstances --query 'Events[].{username:Username,time:EventTime,event:EventName,eventid:EventId,accesskey:AccessKeyId,resource:(Resources[0].ResourceName)}' --output table --region us-east-1
查看特定事件 ID 的详细信息
找到事件 ID 后,您可以查看有关此事件的详细信息。将 0840b15f-75b5-4082-a194-86e15example 的 AttributeValue 替换为您的事件 ID,将 us-east-1 替换为您的区域。
$ aws cloudtrail lookup-events --query "Events[0].CloudTrailEvent" --output text --lookup-attribute AttributeKey=EventId,AttributeValue=0840b15f-75b5-4082-a194-86e15example --region us-east-1 | jq -r '.'
输出示例:
{ "eventVersion": "1.05", "userIdentity": { "type": "AssumedRole", "principalId": "AROAJ3THTCWDOKEXAMPLE:jdoe", "arn": "arn:aws:sts::52570EXAMPLE:assumed-role/Admin/jdoe", "accountId": "52570example", "accessKeyId": "ASIAXUZVKEUAKEXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2019-02-14T23:55:15Z" }, "sessionIssuer": { "type": "Role", "principalId": "AROAJ3THTCWDOKEXAMPLE", "arn": "arn:aws:iam::52570EXAMPLE:role/Admin", "accountId": "52570EXAMPLE", "userName": "Admin" } } }, "eventTime": "2019-02-15T00:48:05Z", "eventSource": "ec2.amazonaws.com", "eventName": "DeleteVolume", "awsRegion": "us-east-1", "sourceIPAddress": "999.999.999.999", "userAgent": "aws-cli/1.16.999 Python/2.7.15 Darwin/17.7.0 botocore/1.12.91", "requestParameters": { "volumeId": "vol-0c50d65c6eexample" }, "responseElements": { "_return": true }, "requestID": "a8a43ccd-736d-4b09-ba75-24b9cexample", "eventID": "0840b15f-75b5-4082-a194-86e15example", "eventType": "AwsApiCall", "recipientAccountId": "52570EXAMPLE" }
指定日期范围
要指定事件的日期范围,请使用 --start-time 和 --end-time 参数:
$ aws cloudtrail lookup-events --lookup-attributes AttributeKey=EventName,AttributeValue=DeleteVolume --query 'Events[].{username:Username,time:EventTime,event:EventName,eventid:EventId,accesskey:AccessKeyId,resource:(Resources[0].ResourceName)}' --output table --region us-east-1 --start-time 2019-01-01T13:00Z --end-time 2019-03-01T14:00Z
**注意:**从有效时间戳格式列表中选择您的首选时间戳。
列出的事件发生在开始时间之后和结束时间之前(包括结束)。
默认开始时间为最近 90 天内数据可用的最早日期。默认的结束时间为最接近当前时间的事件发生时间。如果指定的开始时间晚于指定的结束时间,则会返回 InvalidTimeRangeException 错误。

相关内容
- 已提问 1 年前lg...
- 已提问 10 个月前lg...
- AWS 官方已更新 3 年前
- AWS 官方已更新 3 年前
- AWS 官方已更新 3 年前
- AWS 官方已更新 4 年前