Associer une fonction CloudFront de connexion - Amazon CloudFront

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Associer une fonction CloudFront de connexion

CloudFront Les fonctions de connexion vous permettent de mettre en œuvre une logique de validation de certificat personnalisée lors des connexions TLS, en fournissant des extensions aux fonctionnalités d'authentification MTLS intégrées.

Que sont les fonctions de connexion ?

Les fonctions de connexion sont JavaScript des fonctions qui s'exécutent pendant le handshake TLS une fois que les certificats clients ont été validés. Le certificat client validé est transmis à la fonction de connexion, qui peut alors prendre une décision supplémentaire quant à l'octroi ou non de l'accès. Pour des informations détaillées sur les fonctions de connexion, consultezPersonnalisez à la périphérie avec CloudFront Functions.

Comment les fonctions de connexion fonctionnent avec les MTLs

Lorsqu'un client tente d'établir une connexion mTLS avec votre CloudFront distribution, la séquence suivante se produit :

  1. Le client lance une prise de contact TLS avec un CloudFront emplacement périphérique.

  2. CloudFront demande et reçoit un certificat client.

  3. CloudFront effectue la validation standard des certificats par rapport à Trust Store.

  4. Si le certificat passe la validation standard, CloudFront invoque votre fonction de connexion. S'il IgnoreCertificateExpiryest activé dans votre ViewerMtlsConfig, vos certificats expirés (mais valides pour le reste) sont également transmis à la fonction de connexion. Si les certificats clients ne sont pas valides, les fonctions de connexion ne seront pas invoquées.

  5. Votre fonction de connexion reçoit les informations de certificat et les détails de connexion analysés.

  6. Votre fonction prend une allow/deny décision basée sur une logique personnalisée.

  7. CloudFront termine ou met fin à la connexion TLS selon votre décision.

Les fonctions de connexion sont invoquées à la fois pour le mode de vérification et le mode facultatif (lorsque les clients présentent des certificats).

Demander une augmentation du quota de la fonction de connexion

Demandez une augmentation du quota de la fonction de connexion pour votre Compte AWS.

Pour demander une augmentation du quota de la fonction de connexion
  1. Connectez-vous à la CloudFront console AWS Management Console et ouvrez-la à l'adressehttps://console.aws.amazon.com/cloudfront/v4/home.

  2. Dans le volet de navigation, choisissez Fonctions.

  3. Choisissez l'onglet Fonctions de connexion

  4. Pour Request, cliquez sur le lien pour contacter l'ingénierie de CloudFront support.

  5. CloudFront l'ingénierie de support examine votre demande. Le processus de révision peut prendre jusqu’à deux jours.

Une fois votre demande approuvée, vous pouvez créer une fonction de connexion dans votre compte et l'associer à une ou plusieurs distributions tout en utilisant le protocole TLS mutuel.

Création d'une fonction de connexion

Vous pouvez créer des fonctions de connexion à l'aide de la CloudFront console ou de la AWS CLI.

Pour créer une fonction de connexion (console)

  1. Connectez-vous à la CloudFront console AWS Management Console et ouvrez-la à l'adressehttps://console.aws.amazon.com/cloudfront/v4/home.

  2. Dans le volet de navigation, choisissez Fonctions.

  3. Choisissez l'onglet Fonctions de connexion, puis sélectionnez Créer une fonction de connexion.

  4. Entrez un nom de fonction unique au sein de votre AWS compte.

  5. Sélectionnez Continuer.

  6. Dans l'éditeur de fonctions, écrivez votre JavaScript code pour la validation du certificat. Le gestionnaire de fonctions doit appeler allow ou deny.

  7. Facultatif : un KeyValue magasin peut être associé à la fonction de connexion pour implémenter le contrôle de révocation.

  8. Sélectionnez Enregistrer les modifications.

Pour créer une fonction de connexion (AWS CLI)

L'exemple suivant montre comment créer une fonction de connexion :

Écrivez le code de votre fonction dans un fichier séparé, par exemple code.js :

function connectionHandler(connection) { connection.allow(); }
aws cloudfront create-connection-function \ --name "certificate-validator" \ --connection-function-config '{ "Comment": "Client certificate validation function", "Runtime": "cloudfront-js-2.0" }' \ --connection-function-code fileb://code.js

Structure du code de la fonction de connexion

Les fonctions de connexion implémentent la fonction ConnectionHandler qui reçoit un objet de connexion contenant le certificat et les informations de connexion. Votre fonction doit utiliser l'un connection.allow() ou connection.deny() l'autre ou prendre une décision concernant la connexion.

Exemple de fonction de connexion de base

L'exemple suivant montre une fonction de connexion simple qui vérifie le champ objet des certificats clients :

function connectionHandler(connection) { // Only process if a certificate was presented if (!connection.clientCertificate) { console.log("No certificate presented"); connection.deny(); } // Check the subject field for specific organization const subject = connection.clientCertificate.certificates.leaf.subject; if (!subject.includes("O=ExampleCorp")) { console.log("Certificate not from authorized organization"); connection.deny(); } else { // All checks passed console.log("Certificate validation passed"); connection.allow(); } }

La spécification complète des propriétés du certificat client disponibles sur l'objet de connexion est disponible ici :

{ "connectionId": "Fdb-Eb7L9gVn2cFakz7wWyBJIDAD4-oNO6g8r3vXDV132BtnIVtqDA==", // Unique identifier for this TLS connection "clientIp": "203.0.113.42", // IP address of the connecting client (IPv4 or IPv6) "clientCertificate": { "certificates": { "leaf": { "subject": "CN=client.example.com,O=Example Corp,C=US", // Distinguished Name (DN) of the certificate holder "issuer": "CN=Example Corp Intermediate CA,O=Example Corp,C=US", // Distinguished Name (DN) of the certificate authority that issued this certificate "serialNumber": "4a:3f:5c:92:d1:e8:7b:6c", // Unique serial number assigned by the issuing CA (hexadecimal) "validity": { "notBefore": "2024-01-15T00:00:00Z", // Certificate validity start date (ISO 8601 format) "notAfter": "2025-01-14T23:59:59Z" // Certificate expiration date (ISO 8601 format) }, "sha256Fingerprint": "a1b2c3d4e5f6...abc123def456", // SHA-256 hash of the certificate (64 hex characters) }, }, }, }

Associer une fonction de connexion

Après avoir créé votre fonction de connexion, vous devez la publier sur la scène LIVE et l'associer à votre distribution.

Pour publier et associer une fonction de connexion (console)

  1. Connectez-vous à la CloudFront console AWS Management Console et ouvrez-la à l'adressehttps://console.aws.amazon.com/cloudfront/v4/home.

  2. Dans le volet de navigation, sélectionnez Functions

  3. Choisissez l'onglet Fonctions de connexion et sélectionnez votre fonction de connexion.

  4. Choisissez Publier pour le déplacer vers la scène LIVE.

  5. Choisissez Ajouter une association dans le tableau des distributions associé situé sous la section de publication.

  6. Sélectionnez la distribution à laquelle Viewer mTLS est activé et que vous souhaitez associer.

Les fonctions de connexion publiées de manière alternative peuvent également être associées à partir de la page de détails de distribution.

  1. Accédez à la page d'accueil de la console où toutes vos distributions sont répertoriées.

  2. Sélectionnez la distribution que vous souhaitez associer.

  3. Choisissez l'onglet Général.

  4. Dans la section Settings (Paramètres), choisissez Edit (Modifier).

  5. Dans la section Connectivité, recherchez l'authentification mutuelle (mTLS) du visualiseur.

  6. Pour Fonction de connexion, sélectionnez votre fonction.

  7. Sélectionnez Enregistrer les modifications.

Pour associer une fonction de connexion (AWS CLI)

L'exemple suivant montre comment associer une fonction de connexion à une distribution :

// DistributionConfig: { ...other settings, "ConnectionFunctionAssociation": { "Id": "cf_30c2CV2elHwCoInb3LtcaUJkZeD" } }

Cas d'utilisation des fonctions de connexion

Les fonctions de connexion permettent plusieurs cas d'utilisation avancés des MTL :

  • Validation des attributs de certificat : vérifiez des champs spécifiques dans les certificats clients, tels que les exigences relatives aux unités organisationnelles ou les modèles de noms alternatifs des sujets.

  • Vérification de la révocation des certificats - Mettez en œuvre une vérification personnalisée de la révocation des certificats KeyValueStore pour stocker les numéros de série des certificats révoqués.

  • Politiques de certification basées sur l'IP : appliquez différentes politiques de certification en fonction des adresses IP des clients ou des restrictions géographiques.

  • Validation multi-locataires : implémentez des règles de validation spécifiques au locataire dans lesquelles différentes exigences de certificat s'appliquent en fonction des noms d'hôte ou des attributs des certificats.

Note

Les fonctions de connexion s'exécutent une fois par connexion client lors de la prise de contact TLS.

Les fonctions de connexion peuvent uniquement autoriser ou refuser les connexions, pas modifier les requêtes/réponses HTTP.

Seules les fonctions de scène LIVE (publiées) peuvent être associées aux distributions.

Chaque distribution peut avoir au plus une fonction de connexion.

Étapes suivantes

Après avoir associé une fonction de connexion à votre CloudFront distribution, vous pouvez configurer des paramètres facultatifs pour personnaliser le comportement de votre implémentation mTLS. Pour obtenir des instructions détaillées sur la configuration de paramètres supplémentaires tels qu'un mode de validation de certificat client facultatif, consultezConfiguration de paramètres supplémentaires.