Comment trouver l’adresse IP externe associée à chacun des téléchargements vers mon compartiment Amazon S3 ?

Lorsque mon équipe ou un tiers télécharge des fichiers dans mon compartiment Amazon Simple Storage Service (Amazon S3), je souhaite connaître l’adresse IP externe qu’ils ont utilisée. Ma stratégie de compartiment peut autoriser l’accès à certaines adresses IP spécifiques uniquement. Comment trouver l’adresse IP externe utilisée avec chaque téléchargement ? 

Brève description

Pour trouver les adresses IP correspondant aux demandes de niveau objet pour Amazon S3 (téléchargements et chargements), vous devez d’abord activer les méthodes de journalisation suivantes :

  • La journalisation d’accès au serveur Amazon S3 permet de conserver tous les événements de niveau compartiment et objet. Ces journaux utilisent un format similaire à celui des journaux du serveur Web Apache.
  • Les événements de données AWS CloudTrail capturent les 90 derniers jours d'événements au niveau du compartiment (par exemple, PutBucketPolicy et DeleteBucketPolicy), et vous pouvez activer la journalisation au niveau des objets. Ces journaux utilisent un format JSON.

Solution

Important : une bonne pratique consiste à créer un compartiment spécifiquement pour les journaux, distinct du compartiment que vous souhaitez surveiller. Un compartiment distinct pour les journaux évite le risque d'obtenir des journaux sur les journaux.

Activation de la journalisation de l’accès au serveur Amazon S3

Pour activer la journalisation de l’accès au serveur Amazon S3, consultez la section Comment activer la journalisation de l’accès au serveur pour un compartiment S3 ?

Remarque : Amazon S3 peut prendre quelques heures pour commencer à créer des journaux.

Une fois que vous avez activé la journalisation des accès au serveur, passez en revue les journaux pour trouver les adresses IP utilisées avec chaque chargement dans votre compartiment. Par exemple, dans le journal suivant d'une demande PutObject, l'adresse IP est affichée avec l'horodatage [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" -

Activation de la journalisation au niveau des objets avec les événements de données AWS CloudTrail

Pour activer les événements de données AWS CloudTrail, consultez la section Comment activer la journalisation au niveau objet pour un compartiment S3 avec AWS CloudTrail Data Events ?

Remarque : AWS CloudTrail peut prendre quelques heures pour commencer à créer des journaux.

Une fois que vous avez activé la journalisation des événements de données au niveau des objets, passez en revue les journaux pour trouver les adresses IP utilisées avec chaque chargement dans votre compartiment. Par exemple, dans le journal qui suit, l’adresse IP répertoriée pour une demande PutObject est « 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"
},

Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?