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 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 eine zusätzliche Entscheidung darüber treffen, ob Zugriff gewährt werden soll oder nicht. Ausführliche Informationen zu 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, erfolgt die folgende Reihenfolge:
-
Der Client initiiert den TLS-Handshake mit dem Edge-Standort CloudFront .
-
CloudFront fordert ein Client-Zertifikat an und empfängt es.
-
CloudFront führt die Standardvalidierung von Zertifikaten anhand des Trust Store durch.
-
Wenn das Zertifikat die Standardvalidierung bestanden hat, CloudFront ruft es Ihre Verbindungsfunktion auf. Wenn in Ihrem aktiviert IgnoreCertificateExpiryist 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.
-
Ihre Verbindungsfunktion empfängt analysierte Zertifikatsinformationen und Verbindungsdetails.
-
Ihre Funktion trifft eine allow/deny Entscheidung auf der Grundlage einer benutzerdefinierten Logik.
-
CloudFront vervollständigt oder beendet die TLS-Verbindung auf der Grundlage Ihrer Entscheidung.
Verbindungsfunktionen werden sowohl für den Überprüfungsmodus als auch für den optionalen Modus (wenn Clients Zertifikate vorlegen) aufgerufen.
Fordern Sie eine Erhöhung des Kontingents für Verbindungsfunktionen an
Fordern Sie eine Erhöhung des Kontingents für die Verbindungsfunktion für Ihre an AWS-Konto.
Um eine Erhöhung des Kontingents für die Verbindungsfunktion zu beantragen
Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die CloudFront Konsole unterhttps://console.aws.amazon.com/cloudfront/v4/home
. -
Wählen Sie im Navigationsbereich Funktionen aus.
-
Wählen Sie die Registerkarte Verbindungsfunktionen
-
Wählen Sie unter Anfrage den Link, um den technischen CloudFront Support zu kontaktieren.
-
CloudFront Support Engineering prüft Ihre Anfrage. Das Überprüfungsverfahren kann bis zu zwei Tage dauern.
Nachdem Ihre Anfrage genehmigt wurde, können Sie in Ihrem Konto eine Verbindungsfunktion erstellen und diese mit einer oder mehreren Distributionen verknüpfen, wobei Sie Mutual TLS verwenden.
Erstellen Sie eine Verbindungsfunktion
Sie können Verbindungsfunktionen mit der CloudFront Konsole oder der AWS CLI erstellen.
Um eine Verbindungsfunktion (Konsole) zu erstellen
Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die CloudFront Konsole unterhttps://console.aws.amazon.com/cloudfront/v4/home
. -
Wählen Sie im Navigationsbereich Funktionen aus.
-
Wählen Sie die Registerkarte Verbindungsfunktionen und dann Verbindungsfunktion erstellen aus.
-
Geben Sie einen Funktionsnamen ein, der in Ihrem AWS Konto einzigartig ist.
-
Klicken Sie auf Weiter.
-
Schreiben Sie im Funktionseditor Ihren JavaScript Code für die Zertifikatsvalidierung. Der Funktionshandler muss entweder allow oder deny aufrufen.
-
Optional: Der Verbindungsfunktion kann ein KeyValue Speicher zugeordnet werden, um die Sperrkontrolle zu implementieren.
-
Wählen Sie Änderungen speichern aus.
So erstellen Sie eine Verbindungsfunktion (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 von Client-Zertifikaten, 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": { "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) }, }, }, }
Ordnen Sie eine Verbindungsfunktion zu
Nachdem Sie Ihre Verbindungsfunktion erstellt haben, müssen Sie sie in der LIVE-Phase veröffentlichen und sie Ihrer Distribution zuordnen.
Um eine Verbindungsfunktion (Konsole) zu veröffentlichen und zuzuordnen
Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die CloudFront Konsole unterhttps://console.aws.amazon.com/cloudfront/v4/home
. -
Wählen Sie im Navigationsbereich Funktionen aus
-
Wählen Sie die Registerkarte Verbindungsfunktionen und wählen Sie Ihre Verbindungsfunktion aus.
-
Wählen Sie Veröffentlichen, um es in die LIVE-Phase zu verschieben.
-
Wählen Sie in der Tabelle mit den zugehörigen Verteilungen unter dem Veröffentlichungsbereich die Option Assoziation hinzufügen aus.
-
Wählen Sie die Distribution mit aktiviertem Viewer-MTLS aus, die Sie verknüpfen möchten.
Alternativ können veröffentlichte Verbindungsfunktionen auch über die Seite mit den Distributionsdetails verknüpft werden.
-
Navigieren Sie zur Startseite der Konsole, auf der all Ihre Distributionen aufgeführt sind.
-
Wählen Sie die Distribution aus, die Sie zuordnen möchten.
-
Wählen Sie die Registerkarte Allgemein.
-
Wählen Sie im Abschnitt Settings (Einstellungen) die Option Edit (Bearbeiten) aus.
-
Suchen Sie im Bereich Konnektivität nach Viewer Mutual Authentication (mTLS).
-
Wählen Sie unter Verbindungsfunktion Ihre Funktion aus.
-
Wählen Sie Änderungen speichern aus.
So ordnen Sie eine Verbindungsfunktion (AWS CLI) zu
Das folgende Beispiel zeigt, wie eine Verbindungsfunktion einer Distribution zugeordnet wird:
// DistributionConfig: { ...other settings, "ConnectionFunctionAssociation": { "Id": "cf_30c2CV2elHwCoInb3LtcaUJkZeD" } }
Anwendungsfälle für Verbindungsfunktionen
Verbindungsfunktionen ermöglichen mehrere erweiterte mTLS-Anwendungsfälle:
-
Validierung von Zertifikatsattributen — Überprüfen Sie bestimmte Felder in Client-Zertifikaten, z. B. Anforderungen an Organisationseinheiten oder alternative Namensmuster für Antragsteller.
-
Überprüfung der Sperrung von Zertifikaten — Implementieren Sie eine benutzerdefinierte Überprüfung der Sperrung von Zertifikaten KeyValueStore , indem Sie die Seriennummern von gesperrten Zertifikaten speichern.
-
IP-basierte Zertifikatsrichtlinien — Wenden Sie unterschiedliche Zertifikatsrichtlinien an, die auf Client-IP-Adressen oder geografischen Einschränkungen basieren.
-
Mandantenübergreifende Validierung — Implementieren Sie mandantenspezifische Validierungsregeln, bei denen je nach Hostnamen oder Zertifikatattributen unterschiedliche Zertifikatsanforderungen gelten.
Anmerkung
Verbindungsfunktionen werden einmal pro Client-Verbindung während des TLS-Handshakes ausgeführt.
Verbindungsfunktionen können nur Verbindungen zulassen oder verweigern, HTTP-Anforderungen/-Antworten nicht ändern.
Nur Funktionen der LIVE-Phase (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. Ausführliche Anweisungen zur Konfiguration zusätzlicher Einstellungen, wie z. B. eines optionalen Validierungsmodus für Client-Zertifikate, finden Sie unter. Konfiguration zusätzlicher Einstellungen