Comment spécifier les points de terminaison d'un VPC ou les adresses IP autorisés à accéder à mon compartiment Amazon S3 ?

Dernière mise à jour : 10/02/2021

Je souhaite bloquer tout trafic qui ne provient pas d'un point de terminaison Amazon Virtual Private Cloud (VPC) spécifique ou de certaines adresses IP externes. Ou bien, j'utilise un compartiment Amazon Simple Storage Service (Amazon S3) pour héberger un site web statique. Le site web doit être accessible à partir de points de terminaison d'un VPC ou d'adresses IP spécifiques. Comment dois-je procéder ?

Résolution

Utilisez une stratégie de compartiment pour indiquer les points de terminaison d'un VPC ou les adresses IP externes qui peuvent accéder au compartiment S3.

Remarque : une adresse IP externe est une adresse IP publique qui peut être située dans ou en dehors d'un VPC. Par exemple, une adresse IP externe peut être l'adresse IP Elastic d'une instance Amazon Elastic Compute Cloud (Amazon EC2). Ou bien, l'adresse IP externe peut être l'adresse IP de la passerelle NAT ou du serveur proxy d'un VPC.

Par exemple, la stratégie de compartiment suivante bloque tout le trafic vers le compartiment, sauf si la demande provient de points de terminaison d'un VPC (aws:sourceVpce) :

{
  "Id": "VPCe",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VPCe",
      "Action": "s3:*",
      "Effect": "Deny",
      "Resource": [
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET",
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
      ],
      "Condition": {
        "StringNotEquals": {
          "aws:SourceVpce": [
            "vpce-1111111",
            "vpce-2222222"
          ]
        }
      },
      "Principal": "*"
    }
  ]
}

Notez bien ce qui suit :

Par exemple, la stratégie de compartiment suivante bloque tout le trafic vers le compartiment, sauf si la demande provient d'adresses IP externes (aws:SourceIp) :

{
  "Id": "SourceIP",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "SourceIP",
      "Action": "s3:*",
      "Effect": "Deny",
      "Resource": [
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET",
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
      ],
      "Condition": {
        "NotIpAddress": {
          "aws:SourceIp": [
            "11.11.11.11/32",
            "22.22.22.22/32"
          ]
        }
      },
      "Principal": "*"
    }
  ]
}

Avertissement : ces stratégies de compartiment citées à titre d’exemples refusent explicitement l'accès à toutes les demandes en dehors des points de terminaison d'un VPC ou des adresses IP autorisés. Même l'utilisateur qui est entré dans la stratégie de compartiment peut se voir refuser l'accès au compartiment s'il ne répond pas aux conditions. Vous devez examiner attentivement la politique de compartiment avant de l'enregistrer. Si vous êtes bloqué par erreur, consultez J'ai accidentellement refusé à tout le monde l'accès à mon compartiment Amazon S3. Comment puis-je rétablir l'accès ?

Si vous devez autoriser des utilisateurs spécifiques (dans le même compte AWS) à accéder au compartiment, incluez l'instruction suivante dans le bloc Condition :

  • AROAEXAMPLEID est l'ID d'un rôle IAM que vous voulez autoriser
  • AIDAEXAMPLEID est l'ID d'un utilisateur IAM que vous voulez autoriser
  • 111111111111 est l'ID de compte AWS du compartiment, qui représente les informations d'identification racine du compte

Par exemple :

"StringNotLike": {
"aws:userId": [
"AROAEXAMPLEID:*",
"AIDAEXAMPLEID",
"111111111111"
]
}

Pour plus d'informations sur l'octroi d'accès à des rôles IAM spécifiques, consultez Comment limiter l'accès à un compartiment Amazon S3 à un rôle IAM donné.


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


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