使用 AWS CloudTrail 记录 Amazon EC2 和 Amazon EBS API 调用
Amazon EC2 和 Amazon EBS 与 AWS CloudTrail 集成,该服务在 Amazon EC2 和 Amazon EBS 中提供用户、角色或 AWS 服务所采取的操作的记录。CloudTrail 将对 Amazon EC2 和 Amazon EBS 的所有 API 调用作为事件捕获,包括来自控制台的调用和对API 的代码调用。如果您创建了跟踪,则可以使 CloudTrail 事件持续传送到 Amazon S3 存储桶(包括 Amazon EC2 和 Amazon EBS 的事件)。如果您不配置跟踪,则仍可在 CloudTrail 控制台中的 Event history(事件历史记录) 中查看最新事件。通过使用 CloudTrail 收集的信息,您可以确定向 Amazon EC2 和 Amazon EBS发出的请求、从中发出请求的 IP 地址、发出请求的用户、发出请求的时间以及其他详细信息。
要了解有关 CloudTrail 的更多信息,请参阅 AWS CloudTrail 用户指南。
CloudTrail 中的 Amazon EC2 和 Amazon EBS 信息
在您创建 AWS 账户 时,将在该账户上启用 CloudTrail。当 Amazon EC2 和 Amazon EBS 中发生活动时,该活动将记录在 CloudTrail 事件中,并与其他 AWS 服务 事件一同保存在事件历史记录中。您可以在 AWS 账户中查看、搜索和下载最新事件。有关更多信息,请参阅使用 CloudTrail 事件历史记录查看事件。
要持续记录 AWS 账户 中的事件(包括 Amazon EC2 和 Amazon EBS 的事件),请创建跟踪。通过跟踪,CloudTrail 可将日志文件传送至 Amazon S3 桶。预设情况下,在控制台中创建跟踪记录时,此跟踪记录应用于所有AWS 区域。此跟踪记录在 AWS 分区中记录所有区域中的事件,并将日志文件传送至您指定的 Simple Storage Service(Amazon S3)桶。此外,您可以配置其他AWS服务,进一步分析在 CloudTrail 日志中收集的事件数据并采取行动。有关更多信息,请参阅:
所有 Amazon EC2 操作和 Amazon EBS 管理操作都由 CloudTrail 记录,并记录在 Amazon EC2 API Reference 钟。例如,调用 RunInstances、DescribeInstances 或 CreateImage 操作会在 CloudTrail 日志文件中生成条目。
每个事件或日志条目都包含有关生成请求的人员信息。身份信息可帮助您确定以下内容:
-
请求是使用根用户凭证还是 IAM 用户凭证发出的。
-
请求是使用角色还是联合身份用户的临时安全凭证发出的。
-
请求是否由其他 AWS 服务 发出。
有关更多信息,请参阅 CloudTrail userIdentity 元素。
了解 Amazon EC2 和 Amazon EBS 日志文件条目
跟踪是一种配置,可用于将事件作为日志文件传送到您指定的 Amazon S3 存储桶。CloudTrail 日志文件包含一个或多个日志条目。一个事件表示来自任何源的一个请求,包括有关请求的操作、操作的日期和时间、请求参数等方面的信息。CloudTrail 日志文件不是公用 API 调用的有序堆栈跟踪,因此它们不会按任何特定顺序显示。
下面的日志文件记录显示,用户终止了一个实例。
{
"Records":[
{
"eventVersion":"1.03",
"userIdentity":{
"type":"Root",
"principalId":"123456789012",
"arn":"arn:aws:iam::123456789012:root",
"accountId":"123456789012",
"accessKeyId":"AKIAIOSFODNN7EXAMPLE",
"userName":"user"
},
"eventTime":"2016-05-20T08:27:45Z",
"eventSource":"ec2.amazonaws.com",
"eventName":"TerminateInstances",
"awsRegion":"us-west-2",
"sourceIPAddress":"198.51.100.1",
"userAgent":"aws-cli/1.10.10 Python/2.7.9 Windows/7botocore/1.4.1",
"requestParameters":{
"instancesSet":{
"items":[{
"instanceId":"i-1a2b3c4d"
}]
}
},
"responseElements":{
"instancesSet":{
"items":[{
"instanceId":"i-1a2b3c4d",
"currentState":{
"code":32,
"name":"shutting-down"
},
"previousState":{
"code":16,
"name":"running"
}
}]
}
},
"requestID":"be112233-1ba5-4ae0-8e2b-1c302EXAMPLE",
"eventID":"6e12345-2a4e-417c-aa78-7594fEXAMPLE",
"eventType":"AwsApiCall",
"recipientAccountId":"123456789012"
}
]
}
使用 AWS CloudTrail 审计通过 EC2 Instance Connect 连接的用户
使用 AWS CloudTrail 审计通过 EC2 Instance Connect 连接到实例的用户。
使用 AWS CloudTrail 控制台审计通过 EC2 Instance Connect 的 SSH 活动
-
从 AWS CloudTrail 打开 https://console.aws.amazon.com/cloudtrail/
控制台。 -
验证您是否位于正确的区域中。
-
在导航窗格中,选择事件历史记录。
-
对于筛选条件,请选择事件源,然后选择 ec2-instance-connect.amazonaws.com。
-
(可选)对于时间范围,请选择一个时间范围。
-
选择刷新事件图标。
-
该页面显示与 SendSSHPublicKey API 调用对应的事件。使用箭头展开一个事件以查看其他详细信息,例如,用于建立 SSH 连接的用户名和 AWS 访问密钥以及源 IP 地址。
-
要以 JSON 格式显示完整事件信息,请选择查看事件。requestParameters 字段包含用于建立 SSH 连接的目标实例 ID、操作系统用户名和公有密钥。
{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "ABCDEFGONGNOMOOCB6XYTQEXAMPLE", "arn": "arn:aws:iam::1234567890120:user/IAM-friendly-name", "accountId": "123456789012", "accessKeyId": "ABCDEFGUKZHNAW4OSN2AEXAMPLE", "userName": "IAM-friendly-name", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2018-09-21T21:37:58Z"} } }, "eventTime": "2018-09-21T21:38:00Z", "eventSource": "ec2-instance-connect.amazonaws.com", "eventName": "SendSSHPublicKey ", "awsRegion": "us-west-2", "sourceIPAddress": "123.456.789.012", "userAgent": "aws-cli/1.15.61 Python/2.7.10 Darwin/16.7.0 botocore/1.10.60", "requestParameters": { "instanceId": "i-0123456789EXAMPLE", "osUser": "ec2-user", "SSHKey": { "publicKey": "ssh-rsa ABCDEFGHIJKLMNO01234567890EXAMPLE" } }, "responseElements": null, "requestID": "1a2s3d4f-bde6-11e8-a892-f7ec64543add", "eventID": "1a2w3d4r5-a88f-4e28-b3bf-30161f75be34", "eventType": "AwsApiCall", "recipientAccountId": "0987654321" }
如果已将 AWS 账户配置为在 S3 存储桶中收集 CloudTrail 事件,您可以按编程方式下载和审计该信息。有关更多信息,请参阅《AWS CloudTrail 用户指南》中的获取和查看 CloudTrail 日志文件。