Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Restreindre l'accès à une origine Amazon Simple Storage Service
CloudFront propose deux méthodes pour envoyer des demandes authentifiées à une origine Amazon S3 : le contrôle d'accès à l'origine (OAC) et l'identité d'accès à l'origine (OAI). OAC vous aide à sécuriser vos origines, par exemple pour Amazon S3. Nous vous recommandons d'utiliser OAC car il prend en charge :
-
Tous les compartiments Amazon S3 en tout Régions AWS, y compris les régions optionnelles lancées après décembre 2022
-
Chiffrement côté serveur avec AWS KMS (SSE-KMS) Amazon S3
-
Demandes dynamiques (
PUT
etDELETE
) vers Amazon S3
L'identité d'accès d'origine ne fonctionne pas pour les scénarios de la liste précédente ou nécessite des solutions de contournement supplémentaires dans ces scénarios. Les rubriques suivantes décrivent comment utiliser le contrôle d'origine d'accès (OAC) avec une origine Amazon S3. Pour plus d'informations sur la migration de l'identité d'accès d'origine (OAI) vers le contrôle d'accès d'origine (OAC), consultez Migration de l'identité d'accès à l'origine (OAI) vers le contrôle d'accès à l'origine (OAC).
Remarques
-
Lorsque vous utilisez l' CloudFront OAC avec les origines des compartiments Amazon S3, vous devez définir Amazon S3 Object Ownership pour que le propriétaire du compartiment soit appliqué, ce qui est le cas par défaut pour les nouveaux compartiments Amazon S3. Si vous avez besoin d'ACL, utilisez le paramètre préféré du propriétaire du compartiment pour garder le contrôle sur les objets chargés via CloudFront.
-
Si votre origine est un compartiment Amazon S3 configuré comme point de terminaison de site Web, vous devez le configurer en CloudFront tant qu'origine personnalisée. Cela signifie que vous ne pouvez pas utiliser OAC (ou OAI). OAC ne prend pas en charge la redirection d'origine à l'aide de Lambda @Edge.
Rubriques
Création d'un nouveau contrôle d'accès à l'origine
Suivez les étapes décrites dans les rubriques suivantes pour configurer un nouveau contrôle d'accès à l'origine dans CloudFront.
Rubriques
Prérequis
Avant de créer et de configurer le contrôle d'accès à l'origine (OAC), vous devez disposer d'une CloudFront distribution avec une origine de compartiment Amazon S3. Cette origine doit être un compartiment S3 normal, et non un compartiment configuré en tant que point de terminaison. Pour plus d'informations sur la configuration d'une CloudFront distribution avec une origine de compartiment S3, consultezCommencez avec une CloudFront distribution de base.
Note
Lorsque vous utilisez OAC pour sécuriser l'origine de votre compartiment S3, la communication entre Amazon S3 CloudFront et Amazon S3 s'effectue toujours via HTTPS, quels que soient vos paramètres spécifiques.
Donnez à l'origine l'autorisation de contrôle d'accès d'accéder au compartiment S3
Avant de créer un contrôle d'accès à l'origine (OAC) ou de le configurer dans une CloudFront distribution, assurez-vous que l'OAC est autorisé à accéder à l'origine du compartiment S3. Procédez ainsi après avoir créé une CloudFront distribution, mais avant d'ajouter l'OAC à l'origine S3 dans la configuration de distribution.
Pour autoriser l'OAC à accéder au compartiment S3, utilisez une politique de compartiment S3 pour autoriser le principal de CloudFront service (cloudfront.amazonaws.com
) à accéder au compartiment. Utilisez un Condition
élément de la politique CloudFront pour autoriser l'accès au compartiment uniquement lorsque la demande provient de la CloudFront distribution contenant l'origine S3.
Pour plus d'informations sur l'ajout ou la modification d'une stratégie de compartiment, consultez Ajout d'une stratégie de compartiment à l'aide de la console Amazon S3 dans le Guide de l’utilisateur Amazon S3.
Voici des exemples de politiques de compartiment S3 qui permettent à un CloudFront OAC d'accéder à une origine S3.
Exemple Politique de compartiment S3 qui autorise l'accès en lecture seule à un OAC CloudFront
{ "Version": "2012-10-17", "Statement": { "Sid": "AllowCloudFrontServicePrincipalReadOnly", "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::
<S3 bucket name>
/*", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudfront::111122223333
:distribution/<CloudFront distribution ID>
" } } } }
Exemple Politique de compartiment S3 qui autorise l'accès en lecture et en écriture à un CloudFront OAC
{ "Version": "2012-10-17", "Statement": { "Sid": "AllowCloudFrontServicePrincipalReadWrite", "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": "arn:aws:s3:::
<S3 bucket name>
/*", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudfront::111122223333
:distribution/<CloudFront distribution ID>
" } } } }
SSE-KMS
Si les objets de l'origine du compartiment S3 sont chiffrés à l'aide du chiffrement côté serveur avec AWS Key Management Service (SSE-KMS), vous devez vous assurer que l'OAC est autorisé à utiliser la clé. AWS KMS Pour accorder à l'identité d'accès l'autorisation d'utiliser la clé KMS, ajoutez une instruction à la Stratégie de clé KMS. Pour plus d'informations sur la modification d'une stratégie de clé, consultez Modification d'une stratégie de clé dans le Manuel du développeur AWS Key Management Service .
L'exemple suivant montre une déclaration de stratégie de clé KMS qui permet à l'OAC d'utiliser la clé KMS.
Exemple Déclaration de politique relative aux clés KMS qui permet à un CloudFront OAC d'accéder à une clé KMS pour SSE-KMS
{ "Sid": "AllowCloudFrontServicePrincipalSSE-KMS", "Effect": "Allow", "Principal": { "Service": [ "cloudfront.amazonaws.com" ] }, "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudfront::
111122223333
:distribution/<CloudFront distribution ID>
" } } }
Création du contrôle d'accès à l'origine
Pour créer un contrôle d'accès à l'origine (OAC), vous pouvez utiliser le AWS Management Console AWS CloudFormation, AWS CLI, ou l' CloudFront API.
Supprimer une distribution avec un OAC attaché à un compartiment S3
Si vous devez supprimer une distribution avec un OAC attaché à un compartiment S3, vous devez supprimer la distribution avant de supprimer l'origine du compartiment S3. Vous pouvez également inclure la région dans le nom de domaine d'origine. Si cela n'est pas possible, vous pouvez supprimer l'OAC de la distribution en passant au mode public avant de le supprimer. Pour plus d’informations, consultez Supprimer une distribution .
Migration de l'identité d'accès à l'origine (OAI) vers le contrôle d'accès à l'origine (OAC)
Pour migrer d'une ancienne identité d'accès à l'origine (OAI) vers un contrôle d'accès à l'origine (OAC), commencez par mettre à jour l'origine du compartiment S3 afin de permettre à l'OAI et à l'OAC d'accéder au contenu du compartiment. Cela garantit qu'il CloudFront ne perdra jamais l'accès au bucket pendant la transition. Pour permettre à l'OAI et à l'OAC d'accéder à un compartiment S3, mettez à jour la Stratégie de compartiment de façon à inclure deux déclarations, une pour chaque type de principal.
L'exemple de stratégie de compartiment S3 suivant permet à la fois à une OAI et à un OAC d'accéder à une origine S3.
Exemple Stratégie de compartiment S3 autorisant l'accès en lecture seule à une OAI et à un OAC
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCloudFrontServicePrincipalReadOnly", "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::
<S3 bucket name>
/*", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudfront::111122223333
:distribution/<CloudFront distribution ID>
" } } }, { "Sid": "AllowLegacyOAIReadOnly", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity<origin access identity ID>
" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::<S3 bucket name>
/*" } ] }
Après avoir mis à jour la stratégie de compartiment de l'origine S3 pour autoriser l'accès à la fois à l'OAI et à l'OAC, vous pouvez mettre à jour la configuration de distribution pour utiliser l'OAC au lieu de l'OAI. Pour plus d’informations, consultez Création d'un nouveau contrôle d'accès à l'origine.
Une fois la distribution entièrement déployée, vous pouvez supprimer l'instruction de la politique de compartiment qui autorise l'accès à l'OAI. Pour plus d’informations, consultez Donnez à l'origine l'autorisation de contrôle d'accès d'accéder au compartiment S3.
Paramètres avancés pour le contrôle d'accès à l'origine
La fonctionnalité de contrôle CloudFront d'accès à l'origine inclut des paramètres avancés destinés uniquement à des cas d'utilisation spécifiques. Utilisez les paramètres recommandés, sauf si vous avez des besoins spécifiques en matière de paramètres avancés.
Le contrôle d'accès à Origin contient un paramètre nommé Comportement de signature (dans la console) ou SigningBehavior
(dans l'API, la CLI et AWS CloudFormation). Ce paramètre fournit les options suivantes :
- Toujours signer les demandes d'origine (paramètre recommandé)
-
Nous vous recommandons d'utiliser ce paramètre, nommé Signer les demandes (recommandé) dans la console ou
always
dans l'API, la CLI et AWS CloudFormation. Avec ce paramètre, il signe CloudFront toujours toutes les demandes qu'il envoie à l'origine du compartiment S3. - Ne jamais signer les demandes d'origine
-
Ce paramètre est nommé Ne pas signer les demandes dans la console ou
never
dans l'API, la CLI et AWS CloudFormation. Utilisez ce paramètre pour désactiver le contrôle d'accès à l'origine pour toutes les origines dans toutes les distributions qui utilisent ce contrôle d'accès à l'origine. Cela permet d'économiser du temps et des efforts par rapport à la suppression d'un contrôle d'accès à l'origine de toutes les origines et distributions qui l'utilisent, une par une. Avec ce paramètre, il CloudFront ne signe aucune demande envoyée à l'origine du compartiment S3.Avertissement
Pour utiliser ce paramètre, l'origine du compartiment S3 doit être accessible au public. Si vous utilisez ce paramètre avec une origine de compartiment S3 qui n'est pas accessible au public, vous CloudFront ne pouvez pas accéder à l'origine. L'origine du compartiment S3 renvoie les erreurs aux utilisateurs CloudFront et les CloudFront transmet aux utilisateurs.
- Ne remplacez pas l'en-tête
Authorization
de l'utilisateur (client) -
Ce paramètre est nommé Ne pas remplacer l'en-tête d'autorisation dans la console ou
no-override
dans l'API, la CLI et AWS CloudFormation. Utilisez ce paramètre lorsque vous CloudFront souhaitez signer des demandes d'origine uniquement lorsque la demande d'affichage correspondante ne contient pas d'Authorization
en-tête. Avec ce paramètre, CloudFront transmet l'Authorization
en-tête de la demande du visualiseur lorsqu'il y en a un, mais signe la demande d'origine (en ajoutant son propreAuthorization
en-tête) lorsque la demande du visualiseur n'inclut pas d'Authorization
en-tête.Avertissement
Pour parcourir l'en-tête
Authorization
de la demande de l'utilisateur, vous devez ajouter l'en-têteAuthorization
à une stratégie de mise en cache pour tous les comportements de cache qui utilisent les origines du compartiment S3 associées à ce contrôle d'accès à l'origine.
Utiliser une identité d'accès d'origine (ancienne, non recommandée)
CloudFront L'identité d'accès à l'origine (OAI) fournit des fonctionnalités similaires à celles du contrôle d'accès à l'origine (OAC), mais elle ne fonctionne pas dans tous les scénarios. C'est pourquoi nous vous recommandons d'utiliser OAC à la place. Plus précisément, l'OAI ne prend pas en charge :
-
Tous les compartiments Amazon S3 Régions AWS, y compris les régions optionnelles
-
Chiffrement côté serveur avec AWS KMS (SSE-KMS) Amazon S3
-
Demandes dynamiques (
PUT
,POST
ouDELETE
) vers Amazon S3 -
Nouveau Régions AWS lancé après décembre 2022
Pour plus d'informations sur la migration d'OAI vers OAC, consultez Migration de l'identité d'accès à l'origine (OAI) vers le contrôle d'accès à l'origine (OAC).
Lorsque vous créez un OAI ou que vous en ajoutez un à une distribution à l'aide de la CloudFront console, vous pouvez automatiquement mettre à jour la politique de compartiment Amazon S3 pour autoriser l'OAI à accéder à votre compartiment. Vous pouvez également choisir de créer ou de mettre à jour manuellement la politique de compartiment. Quelle que soit la méthode que vous utilisez, vous devez toujours vérifier les autorisations pour vous assurer que :
-
Votre CloudFront OAI peut accéder aux fichiers du bucket pour le compte des utilisateurs qui les demandent. CloudFront
-
Les utilisateurs ne peuvent pas utiliser les URL Amazon S3 pour accéder à vos fichiers en dehors de CloudFront.
Important
Si vous configurez CloudFront pour accepter et transférer toutes les méthodes HTTP compatibles, CloudFront assurez-vous d'accorder à votre CloudFront OAI les autorisations souhaitées. Par exemple, si vous configurez CloudFront pour accepter et transférer les demandes qui utilisent cette DELETE
méthode, configurez votre politique de compartiment de manière à gérer les DELETE
demandes de manière appropriée afin que les utilisateurs puissent supprimer uniquement les fichiers que vous souhaitez qu'ils souhaitent.
Utiliser les politiques relatives aux compartiments Amazon S3
Vous pouvez accorder à un CloudFront OAI l'accès aux fichiers d'un compartiment Amazon S3 en créant ou en mettant à jour la politique de compartiment de la manière suivante :
-
Utilisation de l’onglet Autorisations du compartiment Amazon S3 dans la console Amazon S3
. -
Utilisation PutBucketPolicydans l'API Amazon S3.
-
En utilisant la console CloudFront
. Lorsque vous ajoutez un OAI à vos paramètres d'origine dans la CloudFront console, vous pouvez choisir Oui, mettre à jour la politique de compartiment pour indiquer de mettre CloudFront à jour la politique de compartiment en votre nom.
Si vous mettez à jour manuellement la politique de compartiment, assurez-vous que vous :
-
Spécifiez l’identité d’accès à l’origine correcte comme
Principal
dans la politique. -
Accordez à l’identité d’accès à l’origine les autorisations dont elle a besoin pour accéder aux objets pour le compte des utilisateurs.
Pour plus d’informations, consultez les sections suivantes.
Spécification d’une OAI comme Principal
dans une politique de compartiment
Pour spécifier une OAI comme Principal
dans une politique de compartiment Amazon S3, utilisez l’Amazon Resource Name (ARN) qui inclut son ID. Par exemple :
"Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity
<origin access identity ID>
" }
Trouvez l'ID OAI dans la CloudFront console sous Security, Origin access, Identities (legacy). Vous pouvez également l'utiliser ListCloudFrontOriginAccessIdentitiesdans l' CloudFrontAPI.
Octroi d’autorisations à une OAI
Pour donner à l’identité d’accès à l’origine les autorisations pour accéder aux objets de votre compartiment Amazon S3, utilisez des actions dans la politique qui se rapportent à des opérations d’API Amazon S3 spécifiques. Par exemple, l'action s3:GetObject
permet à l'identité d'accès à l'origine de lire des objets dans le compartiment. Pour plus d’informations, consultez les exemples de la section suivante ou la section Actions Amazon S3 du Guide de l’utilisateur Amazon Simple Storage Service.
Exemples de politique de compartiment Amazon S3
Les exemples suivants présentent les politiques de compartiment Amazon S3 qui permettent à CloudFront OAI d'accéder à un compartiment S3.
Trouvez l'ID OAI dans la CloudFront console sous Security, Origin access, Identities (legacy). Vous pouvez également l'utiliser ListCloudFrontOriginAccessIdentitiesdans l' CloudFrontAPI.
Exemple Politique de compartiment Amazon S3 qui donne à l’identité d’accès à l’origine un accès en lecture
L’exemple suivant permet à l’identité d’accès à l’origine de lire des objets dans le compartiment spécifié (s3:GetObject
).
{ "Version": "2012-10-17", "Id": "PolicyForCloudFrontPrivateContent", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity
<origin access identity ID>
" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::<S3 bucket name>
/*" } ] }
Exemple Politique de compartiment Amazon S3 qui donne à l’identité d’accès à l’origine un accès en lecture et en écriture
L’exemple suivant permet à l’identité d’accès à l’origine de lire et d’écrire des objets dans le compartiment spécifié (s3:GetObject
et s3:PutObject
). Cela permet aux utilisateurs de télécharger des fichiers dans votre compartiment Amazon S3 via CloudFront.
{ "Version": "2012-10-17", "Id": "PolicyForCloudFrontPrivateContent", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity
<origin access identity ID>
" }, "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": "arn:aws:s3:::<S3 bucket name>
/*" } ] }
Utiliser les ACL d'objets Amazon S3 (non recommandé)
Important
Il est recommandé d’utiliser les politiques du compartiment Amazon S3 pour attribuer à une OAI l’accès à un compartiment S3. Vous pouvez utiliser des listes de contrôle d'accès (ACL) comme décrit dans cette section, mais nous le déconseillons.
Amazon S3 recommande de définir S3 Object Ownership (Propriété de l’objet S3) sur bucket owner enforced (appliqué par le propriétaire du compartiment), ce qui signifie que les listes ACL sont désactivées pour le compartiment et les objets à l’intérieur. Lorsque vous appliquez ce paramètre à Object Ownership (Propriété de l’objet), vous devez utiliser des politiques du compartiment pour donner l’accès à l’OAI (consultez la section précédente).
La section suivante concerne uniquement les cas d’utilisation hérités nécessitant des listes ACL.
Vous pouvez accorder à un CloudFront OAI l'accès aux fichiers d'un compartiment Amazon S3 en créant ou en mettant à jour l'ACL du fichier de la manière suivante :
-
Utilisation de l’onglet Autorisations de l’objet Amazon S3 dans la console Amazon S3
. -
Utilisation PutObjectAcldans l'API Amazon S3.
Lorsque vous accordez l’accès à une identité d’accès à l’origine à l’aide d’une liste ACL, vous devez spécifier l’identité d’accès à l’origine à l’aide de son ID d’utilisateur canonique Amazon S3. Dans la CloudFront console, vous pouvez trouver cet identifiant sous Sécurité, Accès à l'origine, Identités (ancienne). Si vous utilisez l' CloudFront API, utilisez la valeur de l'S3CanonicalUserId
élément renvoyé lorsque vous avez créé l'OAI, ou appelez ListCloudFrontOriginAccessIdentitiesl' CloudFrontAPI.
Les régions Amazon S3 plus récentes requièrent que vous utilisiez Signature version 4 pour les demandes authentifiées. (Pour connaître les versions de signatures prises en charge dans chaque région Amazon S3, consultez la section Points de terminaison et quotas Amazon Simple Storage Service de la Références générales AWS.) Si vous utilisez une identité d’accès à l’origine et que votre compartiment se trouve dans l’une des régions qui nécessitent Signature version 4, notez les points suivants :
-
Les demandes
DELETE
,GET
,HEAD
,OPTIONS
etPATCH
sont prises en charge sans qualifications. -
Les demandes
POST
ne sont pas prises en charge.