Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
如何找到每次向我的 Amazon S3 桶上传文件的相关外部 IP 地址?
当我的团队或第三方向我的 Amazon Simple Storage Service(Amazon S3)桶上传文件时,我希望知道他们使用的外部 IP 地址。我的桶策略可能仅允许特定 IP 地址访问。如何才能找到每次上传文件使用的外部 IP 地址?
简短描述
如要找到向 Amazon S3 发出对象级请求(上传和下载)的 IP 地址,您必须首先启动下列日志记录方法中的一种:
- Amazon S3 服务器访问日志记录将捕获所有桶级和对象级事件。这些日志使用的格式类似于 Apache Web 服务器日志。
- AWS CloudTrail 数据事件捕获最近 90 天的桶级事件(例如 PutBucketPolicy 和 DeleteBucketPolicy)。这些日志使用 JSON 格式。
解决方法
**重要提示:**一个最佳实践是为日志创建一个新的专用存储桶,与您希望监控的存储桶分开。为日志单独使用一个桶可避免获取关于日志的日志风险。
开启 Amazon S3 服务器访问日志记录功能
要开启 Amazon S3 服务器访问日志记录功能,请参阅启用 Amazon S3 服务器访问日志记录功能。
**注意:**Amazon S3 可能需要几个小时才能开始创建日志。
开启服务器访问日志记录功能后,查看日志即可找到每次向桶上传文件使用的 IP 地址。例如,在如下有关 PutObject 请求的日志中,IP 地址在时间戳 [07/Dec/2018:07:03:01 +0000] 后显示:
82a7646e61f102aa3e17exampleef08969060fa39927b8232b5a4166d279dcc7 exampleawsbucket [07/Dec/2018:07:03:01 +0000] <b>205.251.233.256</b> arn:aws:sts::111111111111:assumed-role/admin/myuser 07F2D340F08E7171 REST.PUT.OBJECT my_object.jpg "PUT /exampleawsbucket/my_object.jpg?X-Amz-Security-Token=AgoGb3JpZ2luEF.......woa2o4AU%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20181207T070301Z&X-Amz-SignedHeaders=content-md5%3Bcontent-type%3Bhost%3Bx-amz-acl%3Bx-amz-storage-class&X-Amz-Expires=300&X-Amz-Credential=ASIA5BQEXAMPLEGB3S7U%2F20181207%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Signature=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX HTTP/1.1" 200 - - 1347 29 11 "https://s3.console.aws.amazon.com/s3/buckets/exampleawsbucket/?region=us-west-2&tab=overview" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36" -
使用 AWS CloudTrail 数据事件开启对象级日志记录功能
要开启 AWS CloudTrail 数据事件,请参阅为 S3 桶和对象启用 CloudTrail 事件日志记录。
**注意:**CloudTrail 可能需要几个小时才能开始创建日志。
使用数据事件开启对象级日志记录功能后,查看日志即可找到每次向桶上传文件使用的 IP 地址。例如,在如下有关 PutObject 请求的日志中,IP 地址显示为 "sourceIPAddress":
{
"eventVersion": "1.05",
"userIdentity": {
"type": "AssumedRole",
"principalId": "AROAI63YEXAMPLEAP4M5O:myuser",
"arn": "arn:aws:sts::111111111111:assumed-role/admin/myuser",
"accountId": "111111111111",
"accessKeyId": "ASIA5BQEXAMPLEGB3S7U",
"sessionContext": {
"sessionIssuer": {
"type": "Role",
"principalId": "AROAI63YEXAMPLEAP4M5O",
"arn": "arn:aws:iam::111111111111:role/admin",
"accountId": "111111111111",
"userName": "admin"
},
"attributes": {
"creationDate": "2018-12-07T06:43:45Z",
"mfaAuthenticated": "false"
}
}
},
"eventTime": "2018-12-07T07:23:19Z",
"eventSource": "s3.amazonaws.com",
"eventName": "PutObject",
"awsRegion": "us-west-2",
"sourceIPAddress": "205.251.233.256",
"userAgent": "[Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36]",
"requestParameters": {
"X-Amz-Date": "20181207T072319Z",
"bucketName": "exampleawsbucket",
"X-Amz-Algorithm": "AWS4-HMAC-SHA256",
"x-amz-acl": "private",
"X-Amz-SignedHeaders": "content-md5;content-type;host;x-amz-acl;x-amz-storage-class",
"X-Amz-Expires": "300",
"key": "my_object.jpg",
"x-amz-storage-class": "STANDARD"
},
"responseElements": null,
"additionalEventData": {
"x-amz-id-2": "8KQRGXIqWzLGiCV67PY8CHyh81yPjaVu7nkq3gK4ZuMYXo1THZhmbu5J/ck+Di+VHIixb18hRoU="
},
"requestID": "9B9842C4FFAAA3E8",
"eventID": "af0615fa-1d25-4e04-b280-b1e73b558aaa",
"readOnly": false,
"resources": [
{
"type": "AWS::S3::Object",
"ARN": "arn:aws:s3:::exampleawsbucket/my_object.jpg"
},
{
"accountId": "111111111111",
"type": "AWS::S3::Bucket",
"ARN": "arn:aws:s3:::exampleawsbucket"
}
],
"eventType": "AwsApiCall",
"recipientAccountId": "111111111111"
},
