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

Dernière mise à jour : 20/01/2023

Je souhaite restreindre l'accès à mon compartiment Amazon Simple Storage Service (Amazon S3) afin que les utilisateurs accèdent uniquement aux objets 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 comme point de terminaison API REST. Par exemple, 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. Par exemple, AWSDOC-EXAMPLE-BUCKET.s3-website-US-east-1.amazonaws.com.

Option 1 (meilleure pratique) : créer un contrôle d'accès d'origine (OAC) 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 Origins (Origines).
  4. Sélectionnez l'origine S3, puis Edit (Modifier).
  5. Pour la section Origin access (Accès d'origine), sélectionnez les Paramètres de contrôle d'accès d’origine (recommandé).
  6. Pour le contrôle d'accès à Origin, sélectionnez un OAC existant ou choisissez le paramètre Create Control (Créer un contrôle).
  7. Dans la boîte de dialogue, nommez votre paramètre de contrôle. Il est recommandé de conserver le paramètre par défaut Signer les demandes (recommandé). Ensuite, choisissez Create (Créer).
  8. Pour l'accès au compartiment S3, appliquez la politique du compartiment au compartiment S3. Sélectionnez Copy policy (Copier la politique) puis sélectionnez Save (Enregistrer).
  9. Sélectionnez Go to S3 bucket permissions (Accéder aux autorisations du compartiment S3) pour accéder à la console du compartiment S3.
  10. Sélectionnez Save Changes (Enregistrer les modifications).
  11. Dans la console Amazon S3, dans votre liste de compartiments, choisissez le compartiment qui est l'origine de la distribution CloudFront.
  12. Sélectionnez l'onglet Permissions (Autorisations).
  13. Sous Bucket Policy (Politique de compartiment), confirmez que vous voyez une instruction similaire à ce qui suit :
{
    "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"
            }
        }
    }
}

Vous devez ajouter l'instruction précédente pour permettre à l'OAC CloudFront pour lire les objets de votre compartiment.

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

Option 2 : créer une identité d'accès d'origine (OAI) CloudFront héritée

  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 Origins (Origines).
  4. Sélectionnez l'origine S3, puis Edit (Modifier).
  5. Sous Origin Access (Accès d'origine), sélectionnez Legacy access identity (Identités d'accès héritées)
  6. Dans la liste déroulante Origin access identity (Identité d'accès d'origine), sélectionnez le nom de l'identité d'accès d'origine ou choisissez Create new OAI (Créer OAI).
  7. Dans la boîte de dialogue, nommez votre nouvelle identité d'accès d'origine et choisissez Create (Créer).
  8. Pour Bucket policy (Stratégie de compartiment), sélectionnez Yes, update the bucket policy (Oui, mettre à jour la politique de compartiment).
  9. Choisissez Save Changes (Enregistrer les modifications).
  10. Dans la console Amazon S3, dans votre liste de compartiments, choisissez le compartiment qui est l'origine de la distribution CloudFront.
  11. Sélectionnez l'onglet Permissions (Autorisations).
  12. Sous Bucket Policy (Politique 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/*"

}

Remarque : vérifiez si 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.

Vérifiez également si 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.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?