Comment autoriser les clients qui n'utilisent pas le protocole TLS 1.2 ou supérieur à accéder à mes compartiments Amazon S3 ?

Lecture de 9 minute(s)
0

Mes clients n'utilisent pas les versions 1.2 ou supérieures du protocole TLS. Ils ne peuvent donc pas accéder au contenu stocké dans mes compartiments Amazon Simple Storage Service (Amazon S3). Je souhaite autoriser ces clients à accéder au contenu de mes compartiments Amazon S3 à l'aide de TLS 1.0 ou 1.1.

Brève description

AWS impose l'utilisation du protocole TLS 1.2 ou supérieur sur tous les points de terminaison de l'API AWS. Pour continuer à vous connecter aux services AWS, mettez à jour tous les logiciels qui utilisent TLS 1.0 ou 1.1.

Résolution

Amazon CloudFront autorise l'utilisation d'anciennes versions du protocole TLS en soustrayant les clients du protocole TLS utilisé entre votre distribution CloudFront et Amazon S3.

Création d'une distribution CloudFront avec OAC

Avec CloudFront, vous pouvez prendre en charge les requêtes anonymes et publiques adressées à vos compartiments S3. Vous pouvez également rendre vos compartiments S3 privés et accessibles via CloudFront uniquement en exigeant des demandes signées pour accéder à vos compartiments S3.

Prise en charge des requêtes anonymes et publiques adressées à vos compartiments S3

Remarque : L'exemple suivant suppose que vous utilisez déjà un compartiment S3. Si vous ne possédez pas de compartiment S3, créez-en un.

Pour créer la distribution CloudFront, procédez comme suit :

  1. Ouvrez la console CloudFront.
  2. Choisissez Créer Distribution.
  3. Sous Origine, pour le Origine domaine, choisissez le point de terminaison de l'API REST de votre compartiment S3 dans la liste déroulante.
  4. Pour la Politique de protocole Viewer sélectionnez Rediriger HTTP vers HTTPS.
  5. Pour les Points de terminaison HTTP autorisés, sélectionnez GET, HEAD, OPTIONS pour prendre en charge les demandes de lecture.
  6. Dans la section Accès Origin, sélectionnez les **Paramètres de contrôle d'accès Origine (recommandé). **
  7. Sélectionnez Créer un paramètre de contrôle et utilisez le nom par défaut. Pour le comportement de signature, sélectionnez Demandes de signature (recommandé), puis sélectionnez Créer. Les paramètres recommandés par l'OAC authentifient automatiquement la demande du spectateur.
  8. Sélectionnez l'identité dans la liste déroulante. Une fois la distribution créée, mettez à jour la politique du compartiment pour restreindre l'accès à l’OAC.
  9. Sous Comportement de cache par défaut, Viewer, sélectionnez Rediriger HTTP vers HTTPS pour la** politique de protocole du Viewer** et laissez les autres paramètres par défaut.
  10. Sous Clé de cache et demandes d'origine, sélectionnez Stratégie de cache et politique de demande d'origine (recommandée). Utilisez ensuite CachingOptimized pour la politique de cache et CORS-S3Origin pour la politique de demande d'origine.
  11. Sélectionnez Créer une distribution, puis attendez que son statut passe à Activé.

Exigez des demandes signées pour accéder à vos compartiments S3

Renforcez la sécurité de vos compartiments S3 en prenant en charge uniquement les demandes signées. Dans le cas des demandes signées, l'OAC suit vos paramètres d'authentification et les transmet à l'origine S3, qui refuse ensuite les demandes anonymes.

Pour créer une distribution CloudFront nécessitant des demandes signées pour accéder à vos compartiments S3, procédez comme suit :

  1. Ouvrez la console CloudFront.
  2. Choisissez Créer Distribution.
  3. Sous Origine, pour le Origine domaine, choisissez le point de terminaison de l'API REST de votre compartiment S3 dans la liste déroulante.
  4. Pour la Politique de protocole Viewer sélectionnez Rediriger HTTP vers HTTPS.
  5. Pour les Points de terminaison HTTP autorisés, sélectionnez GET, HEAD, OPTIONS pour prendre en charge les demandes de lecture.
  6. Dans la section Accès Origin, sélectionnez les **Paramètres de contrôle d'accès Origine (recommandé). **
  7. Bloquez toutes les demandes non signées en cochant l'option ** Ne pas signer les demandes**.
    **Remarque :**Pour bloquer les demandes non signées, chaque client doit signer ses demandes afin que l'origine S3 puisse évaluer les autorisations.
  8. Créez une politique de cache personnalisée pour transmettre l'en-tête d'autorisation du client à l'origine.
  9. Sous Clé de cache et demandes d'origine, sélectionnez Stratégie de cache et politique de demande d'origine (recommandée).
  10. Sélectionnez Créer une politique.
  11. Entrez le nom de la politique de cache dans la section Nom.
  12. Sous Paramètres des clés de cache, accédez à En-têtes, puis sélectionnez Inclure les en-têtes suivants.
  13. Sous Ajouter un en-tête, sélectionnez Autorisation.
  14. Sélectionnez Créer.

Contrôlez la politique de sécurité du client

Pour contrôler une politique de sécurité dans CloudFront, vous devez disposer d'un domaine personnalisé. Il est recommandé de spécifier un autre nom de domaine pour votre distribution. Il est également recommandé d'utiliser un certificat SSL personnalisé configuré dans AWS Certificate Manager (ACM). Vous pouvez ainsi mieux contrôler la politique de sécurité et permettre aux clients de continuer à utiliser TLS 1.0. Pour plus d'informations, consultez la section Protocoles et chiffrements pris en charge entre les utilisateurs et CloudFront.

Si vous utilisez le nom de domaine par défaut *.cloudfront.net, CloudFront fournit automatiquement un certificat et définit la politique de sécurité pour autoriser les protocoles TLS 1.0 et 1.1. Pour plus d'informations, consultez la section Paramètres de distribution.

Pour configurer un autre nom de domaine pour votre distribution CloudFront, procédez comme suit :

  1. Connectez-vous à la console de gestion AWS, puis ouvrez la console CloudFront .
  2. Choisissez l'ID de la distribution que vous souhaitez mettre à jour.
  3. Dans l'onglet Général, choisissez Modifier.
  4. Pour les Noms de domaine alternatifs (CNAME), choisissez Ajouter un élément, puis entrez votre nom de domaine.
    **Remarque :**Il est recommandé d'utiliser un enregistrement de nom canonique (CNAME) personnalisé pour accéder à vos ressources. L'utilisation d'un CNAME vous permet de mieux contrôler le routage et de faciliter la transition pour vos clients.
  5. Pour le Certificat SSL personnalisé, choisissez le certificat SSL personnalisé dans la liste déroulante qui couvre votre CNAME pour l'attribuer à la distribution.
    **Remarque :**Pour plus d'informations sur l'installation d'un certificat, consultez Comment configurer ma distribution CloudFront pour utiliser un certificat SSL/TLS ?
  6. Choisissez Créer une distribution et attendez que son statut passe à Activé.

Après avoir créé la distribution, vous devez autoriser OAC à accéder à votre compartiment. Procédez comme suit :

  1. Accédez à la page de la console CloudFront et ouvrez votre distribution CloudFront.
  2. Sélectionnez l'onglet Origines, sélectionnez votre origine, puis cliquez sur Modifier.
  3. Choisissez Copier la politique, ouvrez l'autorisation du compartiment et mettez à jour votre politique de compartiment.
  4. Ouvrez la page des Autorisations du compartiment Go to S3.
  5. Dans Politique de compartiment, choisissezModifier. Collez la politique que vous avez copiée précédemment, puis choisissez Enregistrer. Si votre politique de compartiment ne se limite pas à la lecture de S3, vous pouvez ajouter les API requises.

Si vous utilisez un nom de domaine personnalisé, modifiez vos entrées DNS pour utiliser la nouvelle URL de distribution CloudFront. Si vous n'utilisez pas de nom de domaine personnalisé, vous devez fournir la nouvelle URL de distribution CloudFront à vos utilisateurs. Vous devez également mettre à jour tout logiciel client ou appareil utilisant l'ancienne URL.

Si vous utilisez un kit SDK AWS pour accéder aux objets Amazon S3, vous devez modifier votre code pour utiliser des points de terminaison HTTPS classiques. Assurez-vous également d'utiliser la nouvelle URL CloudFront. Si les objets ne sont pas publics et nécessitent un meilleur contrôle, vous pouvez diffuser du contenu privé à l'aide d'URL et de cookies signés.

Utiliser des URL pré-ignées S3 pour accéder à des objets

Si votre flux de travail repose sur des URL pré-signées S3, utilisez une distribution CloudFront pour relayer votre requête vers l'origine S3. Commencez par générer une URL pré-signée pour l'objet de votre choix. Remplacez ensuite l'hôte dans l'URL par le point de terminaison CloudFront pour transmettre l'appel via CloudFront et mettre automatiquement à niveau le protocole de chiffrement. Pour tester et générer une URL pré-signée, exécutez la commande CLI suivante :

aws s3 presign s3://BUCKET_NAME/test.jpg

Exemple de sortie :

https://bucket_name.s3.us-east-1.amazonaws.com/test.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=%5b...%5d%2F20220901%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=%5b...%5d&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Signature">https://BUCKET_NAME.s3.us-east-1.amazonaws.com/test.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=[...]%2F20220901%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=[...]&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Signature    =[...]

À présent, remplacez l'URL S3 par le nouveau point de terminaison CloudFront. Par exemple, remplacez cette URL S3 :

BUCKET_NAME.s3.eu-west-1.amazonaws.com

avec ce point de terminaison :

https://DISTRIBUTION_ID.cloudfront.net.

Exemple de sortie :

https://<DISTRIBUTION_ID>.cloudfront.net /test.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=[...]%2F20220901%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=[...]&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Signature=[...]

Pour utiliser des URL pré-signées, appliquez les paramètres CloudFront suivants :

  1. Définissez le comportement de signature de l'OAC sur Ne pas signer les demandes.
  2. Définissez la politique de demande d'origine de la distribution CloudFront sur paramètres de demande d'origine : En-têtes — Aucun ; Cookies — Aucun ; Chaînes de requête — Toutes.
  3. Définissez la politique de cache sur ** En-têtes — Aucun ; Cookies — Aucun ; Chaînes de requête — Aucune**.

Dans AWS CloudTrail, la requête GET de téléchargement à partir d'une URL pré-signée S3 apparaît comme l'identité qui a généré l'URL pré-signée.

Si vous utilisez un kit SDK AWS pour accéder aux objets S3, vous devez modifier votre code pour utiliser l'URL pré-signée. Utilisez plutôt une requête HTTPS normale et utilisez la nouvelle URL CloudFront.

Vérifiez que vous utilisez des protocoles de chiffrement modernes pour S3

Pour tester votre nouvelle politique, utilisez l'exemple de commande curl suivant pour effectuer des requêtes HTTPS utilisant un ancien protocole spécifique :

curl https://${CloudFront_Domain}/image.png -v --tlsv1.0 --tls-max 1.0

L'exemple de commande curl envoie une requête à CloudFront à l'aide de TLS 1.0. Cela se connecte à l'origine S3 à l'aide de TLS 1.2 et télécharge correctement le fichier.

Il est recommandé d'utiliser AWS CloudTrail Lake pour identifier les connexions TLS antérieures aux points de terminaison des services AWS. Vous pouvez configurer le magasin de données d'événements CloudTrail Lake pour capturer des événements de gestion ou des événements de données. L'événement CloudTrail correspondant dans CloudTrail Lake indique la version 1.2 du protocole TLS, confirmant que vos clients utilisent une politique de sécurité moderne pour se connecter à Amazon S3.

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an