Comment utiliser ma distribution CloudFront pour restreindre l'accès à un compartiment Amazon S3 ?

Dernière mise à jour : 28/05/2020

Je souhaite restreindre l'accès à mon compartiment Amazon Simple Storage Service (Amazon S3) afin que les objets soient accessibles uniquement via ma distribution Amazon CloudFront. Comment dois-je procéder ?

Solution

Important : Avant de commencer, assurez-vous que l'origine Amazon S3 de votre distribution CloudFront est configurée comme point de terminaison API REST (AWSDOC-EXAMPLE-BUCKET.s3.amazonaws.com). Cette résolution ne s'applique pas aux origines S3 configurées en tant que point de terminaison de site Web (AWSDOC-EXAMPLE-BUCKET.s3-website-us-east-1.amazonaws.com).

Créer une identité d'accès d'origine (OAI) CloudFront

1.    Ouvrez la console CloudFront.

2.    Dans la liste des distributions, choisissez la distribution qui diffuse le contenu à partir du compartiment S3 auquel vous souhaitez restreindre l'accès.

3.    Choisissez l'onglet Origines et groupes d'origines.

4.    Sélectionnez l'origine S3, puis Modifier.

5.    Pour Retreindre l'accès au compartiment, sélectionnez Oui.

6.    Pour Origin Access Identity, sélectionnez Créer une nouvelle identité ou Utiliser une identité existante.

7.    Pour Accorder des autorisations de lecture sur le compartiment, sélectionnez Oui, mettre à jour la politique de compartiment.
Remarque : Cette étape met à jour la stratégie de compartiment de votre origine S3 pour accorder l'accès OAI pour s3:GetObject.

8.    Sélectionnez Oui, modifier.

Vérifier la stratégie de compartiment

1.    Ouvrez la console Amazon S3.

2.    Dans votre liste de compartiments, choisissez le compartiment qui est l'origine de la distribution CloudFront.

3.    Sélectionnez l'onglet Permissions (Autorisations).

4.    Sélectionnez Stratégie de compartiment.

5.    Dans l'éditeur de stratégie de compartiment, confirmez que vous voyez une instruction similaire à ce qui suit :

{
	"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/*"
}

Il s'agit de l'instruction que CloudFront ajoute à votre stratégie de compartiment lorsque vous sélectionnez Oui, mettre à jour la politique de compartiment dans le cadre de la configuration OAI.

6.    Vérifiez que votre stratégie de compartiment contient des instructions indiquant "Effect": "Deny" qui empêchent l'accès au compartiment à partir de l'OAI CloudFront. Modifiez ces instructions afin que l'OAI CloudFront puisse accéder aux objets du compartiment.

7.    Vérifiez que votre stratégie de compartiment contient des instructions indiquant "Effect": "Allow" qui autorisent l'accès au compartiment à partir de n'importe quelle source qui n'est pas l'OAI CloudFront. Modifiez ces instructions comme requis par votre cas d'utilisation.

Remarque : Si vous utilisez des listes de contrôle d'accès d'objets (ACL d'objets) pour gérer les autorisations, vous devez alors aussi vérifier les listes ACL d'objets pour vous assurer que ces fichiers ne sont pas accessibles en dehors de l'OAI CloudFront.

Remarque : Une fois que vous avez restreint l'accès à votre compartiment en utilisant l'OAI CloudFront, vous pouvez éventuellement renforcer la sécurité en intégrant AWS WAF.