View a markdown version of this page

Ordnen Sie eine CloudFront Verbindungsfunktion zu - Amazon CloudFront

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Ordnen Sie eine CloudFront Verbindungsfunktion zu

CloudFront Mit den Verbindungsfunktionen können Sie bei TLS-Handshakes eine benutzerdefinierte Logik zur Zertifikatsvalidierung implementieren und so die integrierten mTLS-Authentifizierungsfunktionen erweitern.

Was sind Verbindungsfunktionen?

Verbindungsfunktionen sind JavaScript Funktionen, die während des TLS-Handshakes ausgeführt werden, nachdem die Client-Zertifikate validiert wurden. Das validierte Client-Zertifikat wird an die Verbindungsfunktion übergeben. An diesem Punkt kann die Verbindungsfunktion zusätzlich entscheiden, ob der Zugriff gewährt werden soll oder nicht. Ausführliche Informationen zu den Verbindungsfunktionen finden Sie unterPersonalisieren Sie am Rand mit CloudFront Funktionen.

So funktionieren Verbindungsfunktionen mit mTLs

Wenn ein Client versucht, eine mTLS-Verbindung zu Ihrer CloudFront Distribution herzustellen, läuft die folgende Reihenfolge ab:

  1. Der Client initiiert den TLS-Handshake mit dem Edge-Standort CloudFront .

  2. CloudFront fordert ein Client-Zertifikat an und empfängt es.

  3. CloudFront führt eine Standardzertifikatsvalidierung anhand des Trust Stores durch.

  4. Wenn das Zertifikat die Standardvalidierung besteht, CloudFront wird Ihre Verbindungsfunktion aufgerufen. Wenn in Ihrem aktiviert IgnoreCertificateExpiry ist ViewerMtlsConfig, werden Ihre abgelaufenen — aber ansonsten gültigen — Zertifikate ebenfalls an die Verbindungsfunktion übergeben. Wenn die Client-Zertifikate ungültig sind, werden die Verbindungsfunktionen nicht aufgerufen.

  5. Ihre Verbindungsfunktion empfängt analysierte Zertifikatsinformationen und Verbindungsdetails.

  6. Ihre Funktion trifft eine allow/deny Entscheidung auf der Grundlage einer benutzerdefinierten Logik.

  7. CloudFront schließt die TLS-Verbindung je nach Ihrer Entscheidung ab oder beendet sie.

Verbindungsfunktionen werden sowohl für den Überprüfungsmodus als auch für den optionalen Modus (wenn Clients Zertifikate vorlegen) aufgerufen.

Erstellen Sie eine Verbindungsfunktion

Sie können Verbindungsfunktionen mithilfe der CloudFront Konsole oder der AWS CLI erstellen.

So erstellen Sie eine Verbindungsfunktion (Konsole)

  1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die CloudFront Konsole unterhttps://console.aws.amazon.com/cloudfront/v4/home.

  2. Wählen Sie im Navigationsbereich Funktionen aus.

  3. Wählen Sie die Registerkarte „Verbindungsfunktionen“ und wählen Sie „Verbindungsfunktion erstellen“.

  4. Geben Sie einen Funktionsnamen ein, der in Ihrem AWS Konto eindeutig ist.

  5. Klicken Sie auf Weiter.

  6. Schreiben Sie im Funktionseditor Ihren JavaScript Code für die Zertifikatsvalidierung. Der Funktionshandler muss entweder allow oder deny aufrufen.

  7. Optional: Ein KeyValue Speicher kann der Verbindungsfunktion zugeordnet werden, um die Sperrkontrolle zu implementieren.

  8. Wählen Sie Änderungen speichern aus.

Um eine Verbindungsfunktion zu erstellen (AWS CLI)

Das folgende Beispiel zeigt, wie eine Verbindungsfunktion erstellt wird:

Schreiben Sie Ihren Funktionscode in eine separate Datei, zum Beispiel 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

Struktur des Verbindungsfunktionscodes

Verbindungsfunktionen implementieren die ConnectionHandler-Funktion, die ein Verbindungsobjekt empfängt, das Zertifikat und Verbindungsinformationen enthält. Ihre Funktion muss entweder connection.allow() oder verwendenconnection.deny(), um eine Entscheidung über die Verbindung zu treffen.

Beispiel für eine grundlegende Verbindungsfunktion

Das folgende Beispiel zeigt eine einfache Verbindungsfunktion, die das Betrefffeld von Client-Zertifikaten überprüft:

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(); } }

Die vollständige Spezifikation der Eigenschaften des Client-Zertifikats, die für das Verbindungsobjekt verfügbar sind, finden Sie hier:

{ "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": { "serialNumber": "4a:3f:5c:92:d1:e8:7b:6c", // Unique serial number assigned by the issuing CA (hexadecimal) "issuer": "CN=Example Corp Intermediate CA,O=Example Corp,C=US", // Distinguished Name (DN) of the certificate authority that issued this certificate. "subject": "CN=client.example.com,O=Example Corp,C=US", // Distinguished Name (DN) of the certificate holder. "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) "ocspEndpoint": "http://ocsp.example.com", // OCSP responder URL from the certificate's AIA extension. "san": "DNS:client.example.com,DNS:api.example.com", // Subject Alternative Names. "spki": "30820122300d06092a864886f70d01010105000382010f003082010a0282010100...", // Subject Public Key Info (DER-encoded, hex). "sanHex": "3032820f636c69656e742e6578616d706c652e636f6d820f6170692e6578616d706c652e636f6d..." // Subject Alternative Names (DER-encoded, hex). }, "intermediates": [ { "serialNumber": "00:d4:04:a5:fd:cb:20:37:54", // Serial number of the intermediate certificate. "issuer": "CN=Example Corp Root CA,O=Example Corp,C=US", // Issuer of the intermediate certificate. "subject": "CN=Example Corp Intermediate CA,O=Example Corp,C=US", // Subject of the intermediate certificate. "validity": { "notBefore": "2020-01-01T00:00:00Z", "notAfter": "2030-01-01T23:59:59Z" }, "sha256Fingerprint": "b2c3d4e5f6a1...def456abc123", "ocspEndpoint": "http://ocsp.example.com/intermediate", "san": "DNS:ca.example.com", "spki": "30820122300d06092a864886f70d01010105000382010f003082010a0282010100b389dd513b...", "sanHex": "3015820d63612e6578616d706c652e636f6d..." } ] } } }

Ordnen Sie eine Verbindungsfunktion zu

Nachdem Sie Ihre Verbindungsfunktion erstellt haben, müssen Sie sie auf der LIVE-Bühne veröffentlichen und Ihrer Distribution zuordnen.

Um eine Verbindungsfunktion zu veröffentlichen und zuzuordnen (Konsole)

  1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die CloudFront Konsole unterhttps://console.aws.amazon.com/cloudfront/v4/home.

  2. Wählen Sie im Navigationsbereich Funktionen aus

  3. Wählen Sie die Registerkarte Verbindungsfunktionen und wählen Sie Ihre Verbindungsfunktion aus.

  4. Wählen Sie Veröffentlichen, um es auf die LIVE-Bühne zu verschieben.

  5. Wählen Sie in der Tabelle mit den zugehörigen Verteilungen unter dem Veröffentlichungsbereich die Option Zuordnung hinzufügen aus.

  6. Wählen Sie die Distribution mit aktivierten Viewer-MTLs aus, die Sie zuordnen möchten.

Alternativ können veröffentlichte Verbindungsfunktionen auch von der Seite mit den Distributionsdetails aus verknüpft werden.

  1. Navigieren Sie zur Startseite der Konsole, auf der alle Ihre Distributionen aufgelistet sind.

  2. Wählen Sie die Distribution aus, die Sie zuordnen möchten.

  3. Wählen Sie den Tab Allgemein.

  4. Wählen Sie im Abschnitt Settings (Einstellungen) die Option Edit (Bearbeiten) aus.

  5. Suchen Sie im Abschnitt Konnektivität nach Gegenseitiger Viewer-Authentifizierung (mTLS).

  6. Wählen Sie unter Verbindungsfunktion Ihre Funktion aus.

  7. Wählen Sie Änderungen speichern aus.

Um eine Verbindungsfunktion zuzuordnen (AWS CLI)

Das folgende Beispiel zeigt, wie eine Verbindungsfunktion einer Verteilung zugeordnet wird:

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

Anwendungsfälle für Verbindungsfunktionen

Verbindungsfunktionen ermöglichen mehrere erweiterte mTLS-Anwendungsfälle:

  • Validierung von Zertifikatattributen — Überprüfen Sie bestimmte Felder in Client-Zertifikaten, z. B. Anforderungen an die Organisationseinheit oder alternative Namensmuster für Betreffende.

  • Überprüfung der Zertifikatssperrung — Implementieren Sie eine benutzerdefinierte Zertifikatssperrüberprüfung KeyValueStore , indem Sie die Seriennummern gesperrter Zertifikate speichern.

  • IP-based Zertifikatsrichtlinien — Wenden Sie je nach Client-IP-Adressen oder geografischen Einschränkungen unterschiedliche Zertifikatsrichtlinien an.

  • Multi-tenant Validierung — Implementieren Sie mandantenspezifische Validierungsregeln, für die je nach Hostnamen oder Zertifikatattributen unterschiedliche Zertifikatanforderungen gelten.

Anmerkung

Die Verbindungsfunktionen werden während des TLS-Handshakes einmal pro Client-Verbindung ausgeführt.

Verbindungsfunktionen können Verbindungen nur zulassen oder verweigern, HTTP requests/responses nicht ändern.

Nur LIVE-Stage-Funktionen (veröffentlicht) können Distributionen zugeordnet werden.

Jede Distribution kann höchstens eine Verbindungsfunktion haben.

Nächste Schritte

Nachdem Sie Ihrer CloudFront Distribution eine Verbindungsfunktion zugeordnet haben, können Sie optionale Einstellungen konfigurieren, um das Verhalten Ihrer mTLS-Implementierung anzupassen. Eine ausführliche Anleitung zur Konfiguration zusätzlicher Einstellungen, wie z. B. eines optionalen Client-Zertifikatsvalidierungsmodus, finden Sie unter. Konfiguration zusätzlicher Einstellungen