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

Lecture de 4 minute(s)
0

J'utilise Amazon Simple Storage Service (Amazon S3) pour héberger mon site Web statique. J'ai joint une politique de compartiment qui limite l'accès à un Amazon Virtual Private Cloud (Amazon VPC) spécifique uniquement. Cependant, je peux toujours accéder au site Web à partir d'adresses IP publiques.

Résolution

Avant de résoudre le problème, veillez à suivre les étapes suivantes :

  • Videz le cache de votre navigateur Web ou de votre proxy afin de consulter la configuration la plus récente.
  • Vérifiez que 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.
  • Associez le point de terminaison VPC à la table de routage de l'instance EC2 que vous utilisez. De cette façon, le trafic est associé à l'identifiant de VPC référencé dans la politique de compartiment.

Consultez la politique de compartiment

Vérifiez que la politique de compartiment autorise l'accès au compartiment depuis le VPC. Pour ce faire, consultez les déclarations figurant dans votre politique de compartiment. Par exemple, la déclaration de politique de compartiment suivante autorise s3:getObject à condition que la demande provienne de vpc-id123456.

{
  "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"
      }
    }
  }\]
}

**Remarque :**L'hébergement statique de sites Web autorise les demandes non authentifiées (anonymes). Toutefois, si un utilisateur s'authentifie, vous pouvez lui accorder l'accès en fonction de ses informations d'identification. Par exemple, supposons qu'un utilisateur s'authentifie avec un rôle AWS Identity and Access Management (IAM) disposant d'un accès complet à Amazon S3. Cet utilisateur peut toujours télécharger des objets en dehors du VPC, malgré la politique de compartiment suivante. Pour une politique de compartiment plus restrictive, consultez Restriction de l'accès à un VPC spécifique. La restriction de l'accès à un VPC spécifique empêche même l'accès à l'administrateur ou aux utilisateurs root du compte AWS pour les demandes qui ne proviennent pas du VPC.

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

Après avoir confirmé que la politique de compartiment est correcte, vérifiez si des ACL d'objets autorisent l'accès public. Si certaines ACL d'objets autorisent l'accès public et que vous souhaitez les remplacer, effectuez l'une des actions suivantes :

  • Configurez les paramètres d'accès public pour le compartiment individuel ou votre compte AWS.
  • Ajoutez une déclaration de refus explicite à la politique de compartiment.

Pour remplacer les ACL des objets, utilisez la console Amazon S2 pour configurer les paramètres d'accès public de chaque compartiment ou les paramètres d'accès public de votre compte. 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 aux objets accordé par le biais de n'importe quelle liste de contrôle d'accès (ACL)

**Remarque :**Vous pouvez également utiliser l'Interface de la ligne de commande AWS (AWS CLI), un kit SDK AWS ou l'API REST Amazon S3 pour configurer les paramètres d'accès public du compartiment. Pour plus d'informations, consultez Blocage de l'accès public à votre stockage Amazon S3.

Pour utiliser une politique de compartiment afin de remplacer les ACL des objets, ajoutez une instruction qui refuse explicitement les actions lorsque la demande ne provient pas du VPC. Par exemple, la politique de compartiment suivante inclut une instruction qui refuse explicitement s3:getObject lorsque la demande ne provient pas de vpc-id123456.

**Avertissement :**Étant donné que cet exemple de politique de compartiment inclut une déclaration de refus explicite, passez en revue les paramètres relatifs au refus d'accès explicite avant d'enregistrer la politique. Si vous êtes bloqué accidentellement, vous verrez le message J'ai accidentellement refusé à tout le monde l'accès à mon compartiment Amazon S3. Comment puis-je retrouver 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"
        }
      }
    }
  \]
}

Informations connexes

Générateur de politiques AWS

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an