Comment puis-je restreindre l’accès à mon compartiment Amazon S3 en utilisant des points de terminaison d’un VPC ou des adresses IP spécifiques ?

Lecture de 5 minute(s)
0

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. 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.

Résolution

Avertissement : les exemples de politiques de compartiment présentés dans cet article interdisent explicitement l’accès à toutes les requêtes en dehors des points de terminaison d’un VPC ou des adresses IP autorisés. Veillez à lire attentivement la politique de compartiment avant de l’enregistrer.

Utilisez une politique de compartiment pour indiquer les points de terminaison d’un VPC, les adresses IP source d’un VPC ou les adresses IP externes qui peuvent accéder au compartiment S3.

Remarque : une adresse IP source de VPC est une adresse IP privée provenant d’un VPC. Les adresses privées ne sont pas accessibles sur Internet et peuvent être utilisées pour la communication entre les instances de votre VPC. Par exemple, une adresse IP privée peut être l’adresse IP privée d’une instance Amazon Elastic Compute Cloud (Amazon EC2).

Une adresse IP externe est une adresse IP publique qui peut se trouver dans un VPC ou en dehors de celui-ci. Par exemple, une adresse IP externe peut être l’adresse IP Elastic ou publique d’une instance Amazon Elastic Compute Cloud (Amazon EC2). L’adresse IP externe peut également être l’adresse IP de la passerelle NAT ou du serveur proxy d’un VPC.

Par exemple, la politique de compartiment suivante bloque le trafic vers le compartiment, sauf si la requête provient de points de terminaison d’un VPC spécifiés (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": "*"
    }
  ]
}

Remarque :

Par exemple, la politique de compartiment suivante bloque le trafic vers le compartiment, sauf si la requête provient d’adresses IP privées spécifiées (aws:VpcSourceIp) :

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

Remarque : pour utiliser cette politique avec la condition aws:VpcSourceIP, vous devez associer un point de terminaison d’un VPC pour Amazon S3. Le point de terminaison d’un VPC doit être attaché à la table de routage du sous-réseau de l’instance EC2 et se trouver dans la même région AWS que le compartiment.

Par exemple, la politique de compartiment suivante bloque le trafic vers le compartiment, sauf si la requête provient d’adresses IP externes spécifiées (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 exemples de politiques de compartiment interdisent explicitement l’accès à toutes les requêtes en dehors des points de terminaison d’un VPC ou des adresses IP autorisés. Même l’utilisateur qui a saisi la politique du compartiment peut se voir refuser l’accès au compartiment s’il ne remplit pas les conditions. Par conséquent, veillez donc à lire attentivement la politique de compartiment avant de l’enregistrer. Si vous êtes bloqué par erreur, veuillez consulter la section J’ai accidentellement refusé à tout le monde l’accès au 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 de rôle d’un rôle IAM que vous souhaitez autoriser
  • AIDAEXAMPLEID est l’ID utilisateur d’un utilisateur IAM que vous souhaitez autoriser
  • 111111111111 est l’ID de compte AWS du compartiment qui représente les informations d’identification de l’utilisateur racine du compte AWS

Exemple :

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

Pour plus d’informations sur l’octroi d’accès à des rôles IAM spécifiques, veuillez consulter la section Comment restreindre l’accès au compartiment Amazon S3 à un rôle IAM spécifique.

Informations connexes

Points de terminaison d’un VPC

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 2 ans