web-dev-qa-db-fra.com

Politique d'accès aux fichiers Amazon S3 basée sur l'adresse IP

Existe-t-il un moyen de limiter l'accès à un fichier stocké dans Amazon S3 en fonction de l'adresse IP du client?

J'ai un fichier stocké là-bas, qui ne devrait être accessible que par une adresse IP spécifique. Comment faire ça?

30
Daniel Cukier

Oui, bien que je ne l'ai pas utilisé moi-même.

S3 prend en charge le contrôle granulaire des compartiments et des objets qu'ils contiennent à l'aide du "langage de stratégie d'accès". Il existe des instructions IP spécifiques pour la liste blanche et la liste noire. Vous devrez cependant écrire les instructions APL et les télécharger.

http://docs.amazonwebservices.com/AmazonS3/latest/dev/AccessPolicyLanguage.html

Voici 2 exemples de section de condition:

Liste blanche

"Condition" :  {
       "IpAddress" : {
          "aws:SourceIp" : ["192.168.176.0/24","192.168.143.0/24"]
      }
}

Liste noire

"Condition" :  {
       "NotIpAddress" : {
          "aws:SourceIp" : ["192.168.176.0/24","192.168.143.0/24"]
      }
}
35
gview

Amazon décrit cela dans leurs documents S3 sous "Bucket Policy Examples", à Restricting Access to Specific IP Addresses :

La condition dans cette déclaration identifie la plage 54.240.143. * Des adresses IP autorisées, à une exception près: 54.240.143.188.

{
  "Version": "2012-10-17",
  "Id": "S3PolicyId1",
  "Statement": [
    {
      "Sid": "IPAllow",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": "arn:aws:s3:::examplebucket/*",
      "Condition": {
         "IpAddress": {"aws:SourceIp": ["54.240.143.0/24", "1.2.3.4/32" ]},
         "NotIpAddress": {"aws:SourceIp": "54.240.143.188/32"} 
      } 
    } 
  ]
}

Vous pouvez ajouter quelque chose comme ça dans la console AWS S3. Sélectionnez votre compartiment, cliquez sur l'onglet Propriétés, puis sur Autorisations. Cliquez sur "Ajouter une stratégie de compartiment" et collez-le dans le formulaire de dialogue contextuel.

J'ai modifié l'exemple d'Amazon pour montrer comment plusieurs plages IP peuvent être incluses dans la politique en fournissant un tableau JSON au lieu d'une chaîne. L'entrée "aws: SourceIp" de "1.2.3.4/32" signifie que l'adresse IP unique, 1.2.3.4, est également autorisée à accéder.

20