Associare una funzione di CloudFront connessione - Amazon CloudFront

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Associare una funzione di CloudFront connessione

CloudFront Le funzioni di connessione consentono di implementare una logica di convalida dei certificati personalizzata durante gli handshake TLS, fornendo estensioni alle funzionalità di autenticazione MTLS integrate.

Cosa sono le funzioni di connessione?

Le funzioni di connessione sono JavaScript funzioni che vengono eseguite durante l'handshake TLS dopo la convalida dei certificati client. Il certificato client convalidato viene passato alla funzione di connessione, a quel punto la funzione di connessione può determinare ulteriormente se concedere o meno l'accesso. Per informazioni dettagliate sulle funzioni di connessione, vederePersonalizza a 360° con CloudFront Functions.

Come funzionano le funzioni di connessione con le MTL

Quando un client tenta di stabilire una connessione mTLS alla CloudFront distribuzione, si verifica la seguente sequenza:

  1. Il client avvia l'handshake TLS con edge location. CloudFront

  2. CloudFront richiede e riceve il certificato del cliente.

  3. CloudFront esegue la convalida standard dei certificati rispetto al trust store.

  4. Se il certificato supera la convalida standard, CloudFront richiama la funzione di connessione. Se IgnoreCertificateExpiryè abilitato all'interno del tuo ViewerMtlsConfig, anche i certificati scaduti, ma per il resto validi, vengono passati alla Funzione di connessione. Se i certificati client non sono validi, le funzioni di connessione non verranno richiamate.

  5. La tua funzione di connessione riceve informazioni sui certificati e dettagli di connessione analizzati.

  6. La tua funzione prende una allow/deny decisione in base a una logica personalizzata.

  7. CloudFront completa o termina la connessione TLS in base alla tua decisione.

Le funzioni di connessione vengono richiamate sia per la modalità di verifica che per la modalità opzionale (quando i client presentano certificati).

Richiedi un aumento della quota della funzione di connessione

Richiedi un aumento della quota della Funzione di connessione per il tuo Account AWS.

Per richiedere un aumento della quota della funzione di connessione
  1. Accedi a Console di gestione AWS e apri la CloudFront console all'indirizzohttps://console.aws.amazon.com/cloudfront/v4/home.

  2. Nel riquadro di navigazione, seleziona Funzioni.

  3. Scegli la scheda Funzioni di connessione

  4. Per Richiesta, scegli il link per contattare l' CloudFront assistenza tecnica.

  5. CloudFront support engineering esamina la tua richiesta. Il processo di revisione può richiedere fino a due giorni.

Dopo l'approvazione della richiesta, puoi creare una funzione di connessione nel tuo account e associarla a una o più distribuzioni utilizzando il TLS reciproco.

Crea una funzione di connessione

È possibile creare funzioni di connessione utilizzando la CloudFront console o la AWS CLI.

Per creare una funzione di connessione (console)

  1. Accedi a Console di gestione AWS e apri la CloudFront console all'indirizzohttps://console.aws.amazon.com/cloudfront/v4/home.

  2. Nel riquadro di navigazione, seleziona Funzioni.

  3. Scegli la scheda Funzioni di connessione e scegli Crea funzione di connessione.

  4. Inserisci un nome di funzione univoco all'interno del tuo AWS account.

  5. Scegli Continua.

  6. Nell'editor delle funzioni, scrivi il JavaScript codice per la convalida del certificato. Il gestore della funzione deve chiamare allow o deny.

  7. Facoltativo: è possibile associare un KeyValue archivio alla funzione di connessione per implementare il controllo delle revoce.

  8. Scegli Save changes (Salva modifiche).

Per creare una funzione di connessione (AWS CLI)

L'esempio seguente mostra come creare una funzione di connessione:

Scrivi il codice della funzione in un file separato, ad esempio 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

Struttura del codice della funzione di connessione

Le funzioni di connessione implementano la funzione ConnectionHandler che riceve un oggetto di connessione contenente il certificato e le informazioni di connessione. La funzione deve utilizzare una delle due connection.allow() opzioni o connection.deny() per prendere una decisione sulla connessione.

Esempio di funzione di connessione di base

L'esempio seguente mostra una semplice funzione di connessione che verifica il campo dell'oggetto dei certificati client:

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 specifica completa delle proprietà dei certificati client disponibili sull'oggetto di connessione è disponibile qui:

{ "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) }, }, }, }

Associa una funzione di connessione

Dopo aver creato la funzione di connessione, è necessario pubblicarla nella fase LIVE e associarla alla distribuzione.

Per pubblicare e associare una funzione di connessione (console)

  1. Accedi Console di gestione AWS e apri la CloudFront console all'indirizzohttps://console.aws.amazon.com/cloudfront/v4/home.

  2. Nel riquadro di navigazione, scegli Funzioni

  3. Scegli la scheda Funzioni di connessione e seleziona la tua funzione di connessione.

  4. Scegli Pubblica per spostarlo nella fase LIVE.

  5. Scegli Aggiungi associazione nella tabella delle distribuzioni associate sotto la sezione di pubblicazione.

  6. Seleziona la distribuzione con Viewer MTLs abilitato che desideri associare.

In alternativa, è possibile associare le funzioni di connessione pubblicate anche dalla pagina dei dettagli della distribuzione.

  1. Vai alla home page della console dove sono elencate tutte le tue distribuzioni.

  2. Seleziona la distribuzione che desideri associare.

  3. Scegli la scheda Generale.

  4. Nella sezione Settings (Impostazioni), scegli Edit (Modifica).

  5. Nella sezione Connettività, trova Viewer Mutual Authentication (MTLs).

  6. Per Funzione di connessione, seleziona la tua funzione.

  7. Scegli Save changes (Salva modifiche).

Per associare una funzione di connessione (AWS CLI)

L'esempio seguente mostra come associare una funzione di connessione a una distribuzione:

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

Casi d'uso per le funzioni di connessione

Le funzioni di connessione consentono diversi casi d'uso avanzati di MTL:

  • Convalida degli attributi del certificato: verifica campi specifici nei certificati client, come i requisiti delle unità organizzative o i modelli di denominazione alternativi dei soggetti.

  • Controllo della revoca dei certificati: implementa il controllo personalizzato della revoca dei certificati utilizzando KeyValueStore per archiviare i numeri di serie dei certificati revocati.

  • Politiche di certificazione basate su IP: applica politiche di certificazione diverse in base agli indirizzi IP dei client o alle restrizioni geografiche.

  • Convalida multi-tenant: implementa regole di convalida specifiche del tenant in cui si applicano requisiti di certificato diversi in base ai nomi host o agli attributi del certificato.

Nota

Le funzioni di connessione vengono eseguite una volta per connessione client durante l'handshake TLS.

Le funzioni di connessione possono solo consentire o negare le connessioni, non modificare le richieste/risposte HTTP.

Solo le funzioni LIVE stage (pubblicate) possono essere associate alle distribuzioni.

Ogni distribuzione può avere al massimo una funzione di connessione.

Fasi successive

Dopo aver associato una funzione di connessione alla CloudFront distribuzione, è possibile configurare impostazioni opzionali per personalizzare il comportamento dell'implementazione di MTLS. Per istruzioni dettagliate sulla configurazione di impostazioni aggiuntive come una modalità opzionale di convalida del certificato client, consulta. Configurazione di impostazioni aggiuntive