Je souhaite restreindre l’accès à mon compartiment Amazon Simple Storage Service (Amazon S3) afin que les utilisateurs puissent accéder aux objets uniquement via ma distribution Amazon CloudFront.
Résolution
Important : avant de commencer, assurez-vous que l’origine Amazon S3 de votre distribution CloudFront est configurée en tant que point de terminaison d’API REST, par exemple AWSDOC-Example-Bucket.s3.amazonaws.com. Cette résolution ne s’applique pas aux origines S3 configurées comme point de terminaison de site Web, par exemple AWSDOC-EXAMPLE-BUCKET.s3-website-us-east-1.amazonaws.com. Pour plus d’informations, consultez la section Comment diffuser un site Web statique hébergé sur Amazon S3 à l’aide de CloudFront ?
Option 1 (meilleure pratique) : Création d’un OAC CloudFront
Pour créer un contrôle d’accès à l’origine (OAC) CloudFront, procédez comme suit :
- Ouvrez la console CloudFront.
- Dans la liste des distributions, choisissez la distribution qui diffuse le contenu du compartiment S3 auquel vous souhaitez restreindre l'accès.
- Choisissez l’onglet Origins.
- Sélectionnez l’origine S3, puis choisissez Modifier.
- Pour Accès à l’origine, sélectionnez Paramètres de contrôle d’accès à l’origine (recommandé).
- Pour le contrôle d'accès Origin, sélectionnez un OAC existant ou choisissez le paramètre Créer un contrôle.
- Dans la boîte de dialogue, donnez un nom à votre paramètre de contrôle. Il est recommandé de conserver le paramètre par défaut, à savoir Signer les demandes (recommandé).
- Choisissez Créer.
- Pour l’accès au compartiment S3, choisissez Copier la stratégie, puis choisissez Enregistrer pour appliquer la stratégie de compartiment au compartiment S3.
- Choisissez Accéder aux autorisations du compartiment S3 pour accéder à la console du compartiment S3.
- Choisissez Enregistrer les modifications.
- Dans la console Amazon S3, dans votre liste de compartiments, sélectionnez le compartiment qui est à l’origine de la distribution CloudFront.
- Sélectionnez l’onglet Autorisations.
- Dans Bucket Policy, vérifiez que vous voyez une déclaration similaire à la suivante :
{
"Version": "2012-10-17",
"Statement": {
"Sid": "AllowCloudFrontServicePrincipalReadOnly",
"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"
}
}
}
}
Pour permettre au CloudFront OAC de lire les objets de votre compartiment, vous devez ajouter l’instruction précédente.
Remarque : après avoir restreint l’accès à votre compartiment, vous pouvez intégrer AWS WAF pour un niveau de sécurité supplémentaire.
Option 2 : Création d’un ancien CloudFront OAI
Pour créer une ancienne identité d’accès à l’origine (OAI) CloudFront, procédez comme suit :
- Ouvrez la console CloudFront.
- Dans la liste des distributions, choisissez la distribution qui diffuse le contenu du compartiment S3 auquel vous souhaitez restreindre l'accès.
- Choisissez l’onglet Origins.
- Sélectionnez l’origine S3, puis choisissez Modifier.
- Pour Accès à l’origine, choisissez Legacy access identity.
- Dans la liste déroulante Identité d’accès à l’origine, sélectionnez le nom de l’identité d’accès à l’origine. Ou choisissez Créer une nouvelle OAI.
- Dans la boîte de dialogue, nommez votre nouvelle identité d’accès d’origine, puis choisissez Créer.
- Pour Stratégie de compartiment, sélectionnez Oui, Mettre à jour la stratégie de compartiment.
- Choisissez Enregistrer les modifications.
- Dans la console Amazon S3, dans votre liste de compartiments, choisissez le compartiment qui est à l’origine de la distribution CloudFront.
- Sélectionnez l’onglet Autorisations.
- Dans Bucket Policy, vérifiez que vous voyez une déclaration similaire à la suivante :
{{
"Sid": "1",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity EAF5XXXXXXXXX"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET/*"
}
Remarque : passez en revue votre politique en matière de tranches pour toute déclaration comportant « Effet » : « Refuser » qui empêche l’accès au bucket depuis l’OAI CloudFront. Modifiez ces instructions afin que CloudFront OAI puisse accéder aux objets du compartiment.
Consultez également votre politique relative aux tranches pour les déclarations comportant « Effet » : « Autoriser » qui autorise l’accès au bucket depuis n’importe quelle source autre que l’OAI CloudFront. Modifiez ces déclarations en fonction de votre cas d’utilisation.
Informations connexes
Création d’une distribution
Gestion des identités et des accès dans Amazon S3