Amazon S3 버킷에 대한 각 업로드에 연결된 외부 IP 주소를 찾으려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2019년 1월 21일

팀 또는 타사에서 Amazon Simple Storage Service(Amazon S3) 버킷에 파일을 업로드할 때 사용한 외부 IP 주소를 알고 싶습니다. 버킷 정책은 특정 IP 주소에 대한 액세스만 허용할 수 있습니다. 각 업로드에 사용된 외부 IP 주소를 찾으려면 어떻게 해야 합니까? 

간략한 설명

Amazon S3에 대한 객체 수준 요청(업로드 및 다운로드)의 IP 주소를 찾으려면 먼저 다음 로깅 방법 중 하나를 활성화해야 합니다.

  • Amazon S3 서버 액세스 로깅은 모든 버킷 수준 이벤트와 객체 수준 이벤트를 캡처합니다. 이러한 로그는 Apache 웹 서버 로그와 비슷한 형식을 사용합니다.
  • AWS CloudTrail 데이터 이벤트는 지난 90일간의 버킷 수준 이벤트(예: PutBucketPolicyDeleteBucketPolicy)를 캡처합니다. 사용자는 객체 수준 로깅을 활성화할 수 있습니다. 이러한 로그는 JSON 형식을 사용합니다.

해결 방법

중요: 모범 사례는 모니터링하려는 버킷과 분리된 새 버킷을 생성하여 로그에 따로 사용하는 것입니다. 로그에 별도의 버킷을 사용하면 로그에 대한 로그를 가져오는 위험이 방지됩니다.

Amazon S3 서버 액세스 로깅 활성화

Amazon S3 서버 액세스 로깅을 활성화하려면 S3 버킷에 대한 서버 액세스 로깅을 활성화하려면 어떻게 해야 합니까?를 참조하십시오.

참고: Amazon S3에서 로그 생성을 시작하는 데 몇 시간이 걸릴 수 있습니다.

서버 액세스 로깅을 활성화한 후 로그를 검토하여 버킷에 대한 각 업로드에 사용된 IP 주소를 찾으십시오. 예를 들어 PutObject 요청에 대한 다음 로그에서 IP 주소는 타임스탬프 [07/Dec/2018:07:03:01+0000] 뒤에 표시됩니다.

82a7646e61f102aa3e17exampleef08969060fa39927b8232b5a4166d279dcc7 exampleawsbucket [07/Dec/2018:07:03:01 +0000] 205.251.233.256 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 데이터 이벤트를 활성화하려면 AWS CloudTrail 데이터 이벤트를 사용하여 S3 버킷에 대한 객체 수준 로깅을 활성화하려면 어떻게 해야 합니까?를 참조하십시오.

참고: AWS 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"
},

이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?