Pourquoi mon site Web statique Amazon S3 est-il toujours accessible à partir d'adresses IP publiques alors que j'ai restreint l'accès à un VPC Amazon spécifique ?

Date de la dernière mise à jour : 13/03/2020

J'utilise Amazon Simple Storage Service (Amazon S3) pour héberger mon site Web statique. J'ai attaché une stratégie de compartiment qui restreint l'accès au compartiment de sorte que seul un Amazon Virtual Private Cloud (Amazon VPC) spécifique y ait accès. Or, je peux encore accéder au site Web à partir d'adresses IP publiques. Comment résoudre ce problème ?

Résolution

Avant de procéder à la résolution, assurez-vous que :

  • le cache de votre navigateur Web ou de votre proxy est bien vidé afin que vous puissiez voir la dernière configuration ;
  • l'instance Amazon Elastic Compute Cloud (Amazon EC2) à partir de laquelle vous accédez au compartiment se trouve dans la même région AWS que le compartiment ;
  • le point de terminaison du VPC est associé à la table de routage de l'instance EC2 que vous utilisez, afin que le trafic soit associé à l'ID de VPC référencé par la stratégie de compartiment.

Vérification de la stratégie de compartiment

Vérifiez les instructions de la stratégie de compartiment afin de vous assurer que cette dernière autorise l'accès au compartiment depuis le VPC. Par exemple, l'instruction suivante de stratégie de compartiment permet d'autoriser l'objet s3:GetObject, si la demande provient du VPC vpc-id123456.

Remarque : même si l'hébergement de sites Web statiques induit l'autorisation des demandes non authentifiées (ou anonymes), l'accès peut être accordé, en fonction de ses identifiants, à un utilisateur qui s'authentifie. Par exemple, les utilisateurs qui s'authentifient avec un rôle AWS Identity and Access Management (IAM), caractérisé par un accès complet à Amazon S3; peuvent continuer de télécharger des objets en dehors du VPC, malgré la stratégie de compartiment suivante. Si vous devez mettre en place une stratégie de compartiment plus restrictive, consultez la section Restriction de l'accès à un VPC spécifique. Cette restriction permet de refuser un accès même à l'administrateur, ou aux utilisateurs racine du compte AWS, lorsque la demande ne provient pas du VPC.

{
  "Version": "2012-10-17",
  "Id": "Policy1",
  "Statement": [{
    "Sid": "Access-to-Trusted-VPC-only",
    "Effect": "Allow",
    "Principal": "*",
    "Action": "s3:GetObject*",
    "Resource": "arn:aws:s3:::awsexamplebucket/*",
    "Condition": {
      "StringEquals": {
        "aws:sourceVpc": "vpc-id123456"
      }
    }
  }]
}

Vérification de la liste de contrôle d'accès (ACL) des objets

Après vous être assuré que la stratégie de compartiment est correcte, vérifiez si les listes de contrôle d'accès des objets autorisent les accès publics. Si certaines listes autorisent les accès publics et que vous souhaitez les remplacer, vous pouvez :

  • configurer les paramètres d'accès public pour le compartiment individuel ou votre compte AWS ;
  • ajouter une instruction de rejet explicite à la stratégie de compartiment.

Pour remplacer les listes de contrôle d'accès en configurant les paramètres d'accès public du compartiment individuel ou les paramètres d'accès public de votre compte à l'aide de la console Amazon S3, sélectionnez les options suivantes :

  • Bloquer l'accès public aux compartiments et aux objets accordé par le biais de nouvelles listes de contrôle d'accès (ACL)
  • Bloquer l'accès public aux compartiments et objets accordé via n'importe quelle liste de contrôle d'accès (ACL)

Remarque : vous pouvez également configurer les paramètres d'accès public du compartiment à l'aide de l'interface en ligne de commande AWS, d'un kit SDK AWS ou de l'API REST Amazon S3. Pour obtenir des informations supplémentaires, consultez la section Utilisation d'Amazon S3 Block Public Access.

Pour remplacer des listes de contrôle d'accès à l'aide d'une stratégie de compartiment, ajoutez une instruction qui permet de rejeter explicitement les actions si la demande ne provient pas du VPC. Par exemple, la stratégie de compartiment suivante comprend une instruction qui rejette explicitement l'objet s3:GetObject si la demande ne provient pas du VPC vpc-id123456.

Avertissement : car cet exemple de stratégie de compartiment inclut une instruction de rejet explicite, vous devez examiner attentivement les paramètres ad hoc avant d'enregistrer la stratégie. Si vous avez accidentellement refusé un accès, consultez la section J'ai accidentellement refusé l'accès à mon compartiment Amazon S3 à tout le monde. Comment puis-je rétablir l'accès ?.

{
  "Version": "2012-10-17",
  "Id": "Policy1",
  "Statement": [{
      "Sid": "Access-to-Trusted-VPC-only",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::awsexamplebucket/*",
      "Condition": {
        "StringEquals": {
          "aws:sourceVpc": "vpc-id123456"
        }
      }
    },
    {
      "Sid": "Deny-Access-Except-For-Trusted-VPC",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::awsexamplebucket/*",
      "Condition": {
        "StringNotEquals": {
          "aws:sourceVpc": "vpc-id123456"
        }
      }
    }
  ]
}

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

Cette page peut-elle être améliorée ?


Vous avez besoin d’aide ?