Pourquoi mon site web statique Simple Storage Service (Amazon S3) est-il toujours accessible à partir d'adresses IP publiques alors que j'ai restreint l'accès à un Amazon VPC 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 politique de compartiment qui restreint l'accès au compartiment de sorte que seul un cloud privé virtuel (Amazon VPC) spécifique y ait accès. Or, je peux encore accéder au site web à partir d'adresses IP publiques. Comment puis-je 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 d'un 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 politique 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 politique de compartiment permet d'autoriser l'objet s3:GetObject, si la condition provient du VPC vpc-id123456.

Remarque : même si l'hébergement de site web statique autorise les demandes non authentifiées (anonymes), si un utilisateur s'authentifie, l'accès peut lui être accordé en fonction de ses informations d'identification. Par exemple, les utilisateurs qui s'authentifient avec un rôle AWS Identity and Access Management (IAM) caractérisé par un accès complet à Simple Storage Service (Amazon S3); peuvent continuer de télécharger des objets en dehors du VPC, malgré la politique de compartiment suivante. Si vous devez mettre en place une politique 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 Simple Storage Service (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 d'AWS Command Line Interface (AWS CLI), d'un kit SDK AWS ou de l'API REST Simple Storage Service (Amazon S3). Pour en savoir plus, consultez Blocage de l'accès public à votre stockage Simple Storage Service (Amazon S3).

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

Avertissement :comme cet exemple de politique de compartiment inclut une instruction de refus explicite, vous devez examiner attentivement les paramètres ad hoc avant d'enregistrer cette politique. Si vous êtes bloqué par erreur, veuillez consulter la section J'ai accidentellement refusé à tout le monde l'accès à mon compartiment Simple Storage Service (Amazon S3). 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 ?


Avez-vous besoin d'aide pour une question technique ou de facturation ?