Passer au contenu

Comment utiliser le contrôle d'accès et l'authentification pour restreindre la diffusion de contenu pour les distributions CloudFront ?

Lecture de 5 minute(s)
0

Je souhaite restreindre l'accès au contenu de ma distribution Amazon CloudFront.

Brève description

Pour restreindre l'accès au contenu privé de votre distribution CloudFront, utilisez des URL signées ou des cookies signés.

Si vous n'avez besoin que d'une authentification de base avec un nom d'utilisateur et un mot de passe, utilisez Lambda@Edge ou CloudFront Functions pour configurer l'authentification de base.

Pour restreindre l'accès en fonction de l'adresse IP ou de l'emplacement géographique, configurez CloudFront pour autoriser ou bloquer les requêtes.

Pour configurer une authentification utilisateur sécurisée auprès d'un fournisseur d'identité, utilisez Lambda@Edge pour intégrer CloudFront à OpenID Connect (OIDC).

Résolution

Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'AWS CLI.

Utiliser des URL signées ou des cookies signés

Les URL signées intègrent des signatures chiffrées dans les URL pour fournir un accès temporaire à des fichiers individuels. Utilisez des URL signées pour sécuriser l'accès à des ressources spécifiques.

CloudFront envoie des cookies signés aux clients pour leur permettre d'accéder à plusieurs fichiers sous un même chemin. Utilisez des cookies signés pour un contrôle d'accès plus large.

Remarque : Les URL signées et les cookies signés utilisent des paires de clés cryptographiques que vous créez et associez à votre distribution.

Pour utiliser des URL signées ou des cookies signés, procédez comme suit :

Créer une paire de clés

Créez une paire de clés et chargez-la sur CloudFront.

Créer un groupe de clés approuvé

  1. Ouvrez la console CloudFront.
  2. Dans le volet de navigation, sous Gestion des clés, choisissez Groupes de clés.
  3. Choisissez Créer un groupe de clés.
  4. Dans Nom, saisissez le nom de votre groupe de clés.
  5. Dans Clés publiques, choisissez une clé.
  6. Choisissez Créer un groupe de clés.

Configurer votre distribution

Mettez à jour votre distribution afin d'utiliser votre groupe de clés d’approbation pour les URL signées ou les cookies signés. Pour plus d'informations sur la configuration de votre distribution, consultez la section Paramètres de comportement du cache.

Générer des URL signées ou des cookies signés

Pour générer des URL signées, exécutez la commande sign de l’AWS CLI suivante :

aws cloudfront sign \
    --url "https://your-distribution-domain.cloudfront.net/path/to/file.pdf" \
    --key-pair-id "YOUR_KEY_PAIR_ID" \
    --private-key file://path/to/your/private-key.pem \
    --date-less-than "2024-12-31T23:59:59"

Pour des options supplémentaires telles que les restrictions d’adresse IP, consultez la section Options dans la référence de la commande de l'AWS CLI.

Remarque : Vous pouvez également créer des URL signées pour des outils tiers.

Pour générer des cookies signés, utilisez un kit AWS SDK correspondant à votre langue. Pour des exemples de code, consultez les sections Créer des cookies signés à l'aide de PHP et Créer des URL et de cookies signés à l'aide d'un kit AWS SDK.

Utiliser les URL signées ou les cookies signés

Incluez les URL signées ou les cookies signés dans les requêtes adressées à CloudFront.

Utiliser Lambda@Edge pour configurer l'authentification de base

Remarque : Vous devez créer un code personnalisé pour utiliser Lambda@Edge afin d'implémenter votre logique d'authentification.

Procédez comme suit :

  1. Créez une fonction AWS Lambda pour gérer l'authentification des requêtes de l’utilisateur.
  2. Dans le code de la fonction, inspectez les en-têtes de requête, validez les informations d'identification et autorisez ou refusez la requête. Pour un exemple de fonction, consultez la section Exemple : Rediriger les utilisateurs non authentifiés vers une page de connexion.
  3. Utilisez des déclencheurs pour associer la fonction au comportement de votre distribution.

Utiliser les fonctions CloudFront pour configurer l'authentification de base

Remarque : Vous devez créer un code personnalisé pour utiliser CloudFront Functions afin d’implémenter votre logique d'authentification.

Procédez comme suit :

  1. Créez une fonction CloudFront pour authentifier les requêtes de l’utilisateur.
  2. Dans le code de la fonction, inspectez les en-têtes, validez les informations d'identification et autorisez ou refusez les requêtes. Pour un exemple de fonction, consultez la section Valider un jeton simple dans une requête d’utilis8ateur CloudFront Functions.
  3. Associez la fonction au comportement de votre distribution.

Configurer CloudFront pour autoriser ou bloquer les requêtes en fonction de l'adresse IP du client ou de sa localisation géographique

Effectuez l'une des actions suivantes :

  • Pour créer des restrictions basées sur le contrôle d'accès IP, utilisez AWS WAF pour définir des listes d'adresses IP autorisées et des listes de refus pour votre distribution.
  • Pour créer des restrictions en fonction de la situation géographique, limitez l'accès à votre contenu en fonction du pays dont proviennent les requêtes.

Remarque : AWS WAF et les restrictions géographiques s'appliquent uniquement au niveau de distribution et non au comportement du cache.

Utiliser Lambda@Edge pour intégrer CloudFront à OIDC

Remarque : Pour l'intégration, vous devez implémenter le flux d'authentification OIDC dans votre application et obtenir un jeton d'identification à inclure dans les requêtes adressées à CloudFront.

Procédez comme suit :

  1. Créez une fonction Lambda pour valider le jeton d'identification OIDC dans les requêtes de l’utilisateur.
  2. Dans le code de la fonction, inspectez l'en-tête d'autorisation, validez le jeton d'identification et autorisez ou refusez la requête.
  3. Associez la fonction au comportement de votre distribution.

Informations connexes

Authorization@Edge — Comment utiliser Lambda@Edge et les jetons Web JSON pour améliorer la sécurité des applications Web

Autorisation de serveur externe avec Lambda@Edge

Sécurisation des distributions CloudFront à l'aide d'OpenID Connect et d'AWS Secrets Manager

AWS OFFICIELA mis à jour il y a un an