Passer au contenu

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

Lecture de 4 minute(s)
0

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

Pour restreindre l'accès à un compartiment S3, vous créez un contrôle d'accès d'origine (OAC) ou créez une ancienne identité d'accès d’origine (OAI). Il est recommandé de créer un OAC plutôt que l'ancienne OAI.

Important : Avant de commencer, vérifiez que vous avez configuré l'origine Amazon S3 de votre distribution CloudFront en tant que point de terminaison d'API REST, tel que AWSDOC-EXAMPLE-BUCKET.s3.amazonaws.com. Cette résolution ne s’applique pas aux origines Amazon S3 configurées comme point de terminaison de site Web, telles que 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 ?

Créer un OAC CloudFront

Procédez comme suit :

  1. Ouvrez la console CloudFront.
  2. Dans le volet de navigation, choisissez Distributions, puis choisissez la distribution qui diffuse le contenu du compartiment S3 auquel vous souhaitez restreindre l'accès.
  3. Choisissez l’onglet Origines.
  4. Sélectionnez l’origine Amazon S3, puis choisissez Modifier.
  5. Dans Accès d’origine, sélectionnez Paramètres de contrôle d’accès d’origine (recommandé).
  6. Dans Contrôle d'accès d’origine, sélectionnez un OAC existant. Vous pouvez également sélectionner Créer un nouveau OAC.
  7. Dans la boîte de dialogue, saisissez le nom de votre paramètre de contrôle. Il est recommandé de conserver le paramètre par défaut, à savoir Signer les demandes (recommandé). 
  8. Sélectionnez Créer.
  9. Dans Accès au compartiment S3, choisissez Copier la politique.
  10. Sélectionnez Enregistrer les modifications.
  11. Ouvrez la console Amazon S3.
  12. Dans le volet de navigation, choisissez Compartiments à usage général, puis sélectionnez le compartiment qui est à l'origine de la distribution CloudFront.
  13. Choisissez l’onglet Autorisations.
  14. Dans Politique de compartiment, vérifiez que vous voyez une instruction 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"
            }
        }
    }
}

Remarque : Remplacez DOC-EXAMPLE-BUCKET par le nom de votre compartiment et arn:aws:cloudfront::111122223333:distribution/EDFDVBD6EXAMPLE par l’Amazon Resource Name (ARN) de votre distribution CloudFront. Pour permettre au CloudFront OAC de lire les objets de votre compartiment, vous devez ajouter l’instruction précédente à votre politique de compartiment. Après avoir restreint l’accès à votre compartiment, vous pouvez intégrer AWS WAF pour un niveau de sécurité supplémentaire.

Créer un ancien OAI CloudFront

Procédez comme suit :

  1. Ouvrez la console CloudFront.
  2. Dans le volet de navigation, choisissez Distributions, puis choisissez la distribution qui diffuse le contenu du compartiment S3 auquel vous souhaitez restreindre l'accès.
  3. Choisissez l’onglet Origines.
  4. Sélectionnez l’origine Amazon S3, puis choisissez Modifier.
  5. Dans Accès d’origine, choisissez Identités d'accès existantes.
  6. Dans la liste déroulante Identité d’accès d’origine, sélectionnez le nom de l’OAI. Vous pouvez également choisir Créer une nouvelle OAI.
  7. Dans la boîte de dialogue, saisissez le nom de votre nouvel OAI, puis choisissez Créer.
  8. Dans Politique de compartiment, sélectionnez Oui, Mettre à jour la politique de compartiment.
  9. Sélectionnez Enregistrer les modifications.
  10. Ouvrez la console Amazon S3.
  11. Dans le volet de navigation, choisissez Compartiments à usage général, puis sélectionnez le compartiment qui est à l'origine de la distribution CloudFront.
  12. Choisissez l’onglet Autorisations.
  13. Dans Politique de compartiment, vérifiez que vous voyez une instruction similaire à l’exemple suivant :
{  
    "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 : Remplacez arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity EAF5XXXXXXXXX par l'ARN de votre distribution CloudFront et AWS****DOC-EXAMPLE-BUCKET par le nom de votre compartiment. Examinez votre politique de compartiment pour les instructions contenant "Effect": "Deny" qui bloquent l'accès au compartiment depuis l'OAI CloudFront. Changez l'action à Autoriser afin que l'OAI CloudFront puisse accéder aux objets du compartiment. Consultez également votre politique de compartiment pour les instructions contenant **"Effect": **"Allow" qui autorisent l'accès au compartiment depuis n'importe quelle source autre que l'OAI CloudFront. Modifiez ces instructions en fonction de votre cas d’utilisation.

Informations connexes

Créer une distribution

Gestion des identités et des accès pour Amazon S3