AWS announces preview of AWS Interconnect - multicloud
AWS announces AWS Interconnect – multicloud (preview), providing simple, resilient, high-speed private connections to other cloud service providers. AWS Interconnect - multicloud is easy to configure and provides high-speed, resilient connectivity with dedicated bandwidth, enabling customers to interconnect AWS networking services such as AWS Transit Gateway, AWS Cloud WAN, and Amazon VPC to other cloud service providers with ease.
Pourquoi est-ce que j'obtiens des erreurs « 403 Access Denied » lorsque j'utilise un point de terminaison de l’API REST S3 comme origine de ma distribution CloudFront ?
Je souhaite résoudre les erreurs « 403 Access Denied » renvoyées par Amazon CloudFront depuis Amazon Simple Storage Service (Amazon S3).
Brève description
Pour éviter les erreurs « Access Denied », utilisez les configurations suivantes :
- Rendez les objets S3 accessibles au public.
- Utilisez le contrôle d'accès d'origine (OAC) pour les compartiments S3 contenant des objets chiffrés côté serveur avec AWS Key Management Service (AWS KMS).
Remarque : Vous devez utiliser l'OAC plutôt que l'identité d'accès d'origine (OAI), car l'OAI ne sert pas les objets chiffrés AWS KMS. - Modifiez la politique de compartiment S3 afin qu'elle autorise l'accès à s3:GetObject.
- Assurez-vous que le compte AWS propriétaire du compartiment S3 est également propriétaire de l'objet.
- Vérifiez que les objets demandés existent dans le compartiment S3.
- Définissez un objet racine par défaut afin que les clients puissent demander la racine de votre distribution.
- Pour une configuration OAI, vous devez inclure l'OAI dans la politique de compartiment S3. Pour une configuration OAC, vous devez inclure le principal du service CloudFront dans la politique de compartiment S3.
Résolution
Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'AWS CLI.
Rendre les objets S3 accessibles au public
Pour déterminer si les objets de votre compartiment S3 sont accessibles au public, ouvrez l’URL de l’objet S3 dans un navigateur Web. Vous pouvez également exécuter une commande curl sur l’URL.
Voici un exemple d’URL d’un objet S3 :
**https://DOC-EXAMPLE-BUCKET.s3.amazonaws.com/index.html **
Si le navigateur Web ou la commande curl renvoie une erreur « Access Denied », cela signifie que l’objet n’est pas accessible au public.
Pour rendre l'objet accessible au public, effectuez l'une des actions suivantes :
- Créez une politique de compartiment qui accorde des autorisations en lecture seule pour le compartiment.
- Utilisez la console S3 pour autoriser l’accès public en lecture à l’objet.
- Configurez l’OAC ou l’OAI pour la distribution à l’aide du point de terminaison de l’API REST.
- Utilisez AWS Signature Version 4 pour authentifier les requêtes adressées à S3.
Utiliser l'OAC pour les objets chiffrés par AWS KMS
Pour utiliser l’OAC, ajoutez une instruction à la politique de clé AWS KMS qui accorde au principal du service CloudFront l’autorisation d’utiliser la clé. Vous pouvez également utiliser Lambda@Edge plutôt que l'OAC. Pour plus d'informations, consultez la section Diffusion de contenu chiffré SSE-KMS depuis S3 à l'aide de CloudFront.
Pour confirmer que vous avez chiffré votre objet avec AWS KMS, effectuez l'une des actions suivantes :
- Utilisez la console S3 pour afficher les propriétés de l’objet. Examinez la boîte de dialogue Chiffrement. Si AWS KMS est sélectionné, l’objet est chiffré par AWS KMS.
- Exécutez la commande head-object. Si la commande renvoie ServerSideEncryption sous la forme aws:kms, l’objet est chiffré par AWS KMS.
Autoriser l'accès à s3:GetObject
Même si vous disposez d’une instruction d’autorisation explicite pour s3:GetObject dans votre politique de compartiment, vérifiez qu’il n’existe aucun conflit avec une instruction de refus explicite. Une instruction de refus explicite a préséance sur une instruction dautorisation explicite. Pour plus d'informations sur les instructions de refus et d’autorisation, consultez la section Logique d'évaluation des politiques.
Pour vous assurer que votre politique de compartiment autorise s3:GetObject et qu’elle n’autorise aucune instruction de refus explicite, procédez comme suit :
-
Ouvrez la console Amazon S3.
-
Sélectionnez votre compartiment.
-
Choisissez l’onglet Autorisations.
-
Sélectionnez Politique de compartiment.
-
Vérifiez les instructions contenant « Action": "s3:GetObject » ou « Action": "s3:* ».
L'exemple de politique suivant inclut des instructions d’autorisation qui accordent un accès OAC CloudFront et OAI CloudFront à s3:GetObject. Il inclut également une instruction d’autorisation qui accorde un accès public à s3:GetObject. Cependant, il existe une instruction de refus explicite pour s3:GetObject qui bloque l’accès sauf si la requête provient d’un Virtual Private Cloud (VPC) Amazon spécifique.{ "Version": "2012-10-17", "Id": "PolicyForCloudFrontPrivateContent", "Statement": [{ "Sid": "Allow-OAC-Access-To-Bucket", "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudfront::111122223333:distribution/EDFDVBD6EXAMPLE" } } }, { "Sid": "Allow-OAI-Access-To-Bucket", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity EAF5XXXXXXXXX" }, "Action": "s3:GetObject", "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ] }, { "Sid": "Allow-Public-Access-To-Bucket", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ] }, { "Sid": "Access-to-specific-VPCE-only", "Effect": "Deny", "Principal": "*", "Action": "s3:GetObject", "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ], "Condition": { "StringNotEquals": { "aws:sourceVpce": "vpce-1a2b3c4d" } } } ] } -
Modifiez la politique de compartiment pour supprimer ou modifier les instructions qui bloquent l’accès OAI CloudFront, OAC CloudFront ou public à s3:GetObject.
Remarque : CloudFront met en cache les résultats d’une erreur « Access Denied » pendant 5 minutes maximum. Après avoir supprimé une instruction de refus de la politique de compartiment, vous pouvez exécuter une invalidation sur votre distribution pour supprimer l’objet du cache.
Accorder la propriété des compartiments et des objets S3
Vérifiez que le compte de l’identité Gestion des identités et des accès AWS (AWS IAM) qui a créé ce compartiment ou cet objet est propriétaire du compartiment ou de l’objet.
Remarque : L’exigence de propriété de l’objet s’applique uniquement à l’accès public en lecture accordé par une politique de compartiment. Elle ne s’applique pas à l’accès accordé par la liste de contrôle d’accès (ACL) de l’objet.
Pour vérifier si le compartiment et les objets ont le même propriétaire, procédez comme suit :
-
Exécutez la commande list-buckets pour obtenir l’ID canonique S3 du propriétaire du compartiment :
aws s3api list-buckets --query Owner.ID -
Exécutez la commande list-objects pour obtenir l’ID canonique S3 du propriétaire de l’objet :
aws s3api list-objects --bucket DOC-EXAMPLE-BUCKET --prefix index.htmlRemarque : L’exemple de commande précédent montre un seul objet, mais vous pouvez utiliser la commande list-objects pour vérifier plusieurs objets.
Si les identifiants canoniques ne correspondent pas, alors le compartiment et l’objet n’ont pas le même propriétaire.
Remarque : Vous pouvez également utiliser la console Amazon S3 pour vérifier les propriétaires du compartiment et des objets. Vous pouvez trouver les propriétaires dans l’onglet Autorisations du compartiment ou de l’objet.
Pour changer le propriétaire de l'objet en propriétaire du compartiment, procédez comme suit :
-
Depuis le compte du propriétaire de l'objet, exécutez la commande get-object-acl pour récupérer les autorisations ACL :
aws s3api get-object-acl --bucket DOC-EXAMPLE-BUCKET --key object-name -
Si l’objet dispose d’autorisations de liste ACL bucket-owner-full-control, passez à l’étape 3. Si l’objet ne dispose pas d’autorisations de liste ACL bucket-owner-full-control, exécutez la commande put-object-acl depuis le compte du propriétaire de l’objet :
aws s3api put-object-acl --bucket DOC-EXAMPLE-BUCKET --key object-name --acl bucket-owner-full-control -
Depuis le compte du propriétaire du compartiment, exécutez la commande suivante pour copier l’objet sur lui-même et changer le propriétaire de l’objet :
aws s3 cp s3://DOC-EXAMPLE-BUCKET/index.html s3://DOC-EXAMPLE-BUCKET/index.html --storage-class STANDARDRemarque : Remplacez --storage-class par votre classe de stockage.
Déplacer les objets vers le compartiment
Pour vérifier si un objet existe dans le compartiment, exécutez la commande head-object.
Remarque : Les noms d’objets S3 sont sensibles à la casse. Vérifiez que la demande d’objet qui est envoyée à CloudFront correspond exactement au nom de l’objet S3. Si le nom d’objet de la requête n’est pas correct, Amazon S3 répond comme si l’objet était manquant. Pour identifier l'objet que CloudFront demande à Amazon S3, utilisez la journalisation des accès au serveur.
Si l’objet existe dans le compartiment, l’erreur « Access Denied » ne masque pas une erreur « 404 Not Found ». Vérifiez les autres exigences de configuration pour résoudre l’erreur « Access Denied ».
Si l’objet ne se trouve pas dans le compartiment, l’erreur « Access Denied » masque l’erreur « 404 Not Found ». Vous devez résoudre le problème lié à l’objet manquant.
Définir un objet racine par défaut
Pour définir un objet racine par défaut, consultez la section Spécifier un objet racine par défaut.
Remarque : Le refus de l'accès public à s3:ListBucket constitue une bonne pratique de sécurité. Si vous autorisez l'accès public à s3:ListBucket, les utilisateurs peuvent voir et répertorier tous les objets d'un compartiment. Cela expose les détails des métadonnées de l'objet, tels que la clé et la taille, à tous les utilisateurs.
Ajouter les autorisations du principal de service OAI ou CloudFront dans la politique de compartiment S3
Pour vérifier si votre politique de compartiment autorise l’OAI, ouvrez la console Amazon S3. Trouvez votre compartiment, puis, dans l'onglet Autorisations, choisissez Politique de compartiment.
L'exemple de politique suivant inclut une instruction d’autorisation pour le principal du service CloudFront lorsque vous configurez l’OAC :
{ "Sid": "Allow-OAC-Access-To-Bucket", "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudfront::111122223333:distribution/EDFDVBD6EXAMPLE" } } }
L'exemple de politique suivant inclut une instruction d’autorisation pour l’OAI :
{ "Sid": "1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity EAF5XXXXXXXXX" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" }
Pour mettre à jour votre politique de compartiment sur la console CloudFront, procédez comme suit :
- Ouvrez la console CloudFront.
- Sélectionnez une distribution.
- Choisissez l’onglet Origines et groupes d’origine.
- Sélectionnez l’origine S3, puis choisissez Modifier.
- Dans Restreindre l’accès au compartiment, choisissez Oui.
- Dans Identité d'accès à l'origine, choisissez l’identité existante ou créez-en une.
- Dans Accorder des autorisations de lecture sur le compartiment, choisissez Oui, Mettre à jour la politique de compartiment.
- Choisissez Oui, Modifier.
Informations connexes
Résolution de problèmes liés aux codes de statut des réponses aux erreurs dans CloudFront
Comment puis-je résoudre les erreurs 403 Access Denied renvoyées par Amazon S3 ?
- Balises
- Amazon CloudFront
- Langue
- Français
Vidéos associées


Contenus pertinents
- demandé il y a 2 ans
- Réponse acceptéedemandé il y a 2 ans
- demandé il y a 3 mois
- demandé il y a 3 ans
AWS OFFICIELA mis à jour il y a 5 mois