Autorizzazione di connessione - AWS Client VPN

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à.

Autorizzazione di connessione

Puoi configurare un handler di connessioni client per l'endpoint Client VPN. L'handler consente di eseguire una logica personalizzata che autorizza una nuova connessione, in base agli attributi del dispositivo, dell'utente e della connessione. L'handler delle connessioni client viene eseguito dopo che il servizio Client VPN ha autenticato il dispositivo e l'utente.

Per configurare un handler delle connessioni client per l'endpoint Client VPN, crea una funzione AWS Lambda che prende gli attributi del dispositivo, dell'utente e della connessione come input e restituisce una decisione al servizio Client VPN per consentire o negare una nuova connessione. Specifica la funzione Lambda nell'endpoint Client VPN. Quando i dispositivi si connettono all'endpoint Client VPN, il servizio Client VPN richiama la funzione Lambda per conto dell'utente. Solo le connessioni autorizzate dalla funzione Lambda possono connettersi all'endpoint Client VPN.

Nota

Attualmente, l'unico tipo di handler delle connessioni client supportato è una funzione Lambda.

Requisiti e considerazioni

Di seguito sono riportati i requisiti e le considerazioni per l'handler delle connessioni client:

  • Il nome della funzione Lambda deve iniziare con il prefisso AWSClientVPN-.

  • Sono supportate le funzioni Lambda complete.

  • La funzione Lambda deve trovarsi nella stessa AWS regione e nello stesso AWS account dell'endpoint Client VPN.

  • Il timeout della funzione Lambda si verifica dopo 30 secondi. Questo valore non può essere modificato.

  • La funzione Lambda viene richiamata in modo sincrono. Viene richiamata dopo l'autenticazione del dispositivo e dell'utente e prima che vengano valutate le regole di autorizzazione.

  • Se la funzione Lambda viene richiamata per una nuova connessione e il servizio Client VPN non ottiene una risposta prevista dalla funzione, il servizio Client VPN rifiuta la richiesta di connessione. Ad esempio, ciò può verificarsi se la funzione Lambda viene limitata, se si verifica un errore imprevisto o se la risposta della funzione non è in un formato valido.

  • Consigliamo di configurare la concorrenza con provisioning per la funzione Lambda per consentirne la scalabilità senza fluttuazioni di latenza.

  • Se aggiorni la funzione Lambda, le connessioni esistenti all'endpoint Client VPN non sono interessate. Puoi terminare le connessioni esistenti e quindi indicare ai client di stabilire nuove connessioni. Per ulteriori informazioni, consulta Terminazione di una connessione client.

  • Se i client utilizzano il client AWS fornito per connettersi all'endpoint Client VPN, devono utilizzare la versione 1.2.6 o successiva per Windows e la versione 1.2.4 o successiva per macOS. Per ulteriori informazioni, consulta Connessione mediante il client fornito da AWS.

Interfaccia Lambda

La funzione Lambda accetta gli attributi del dispositivo, gli attributi dell'utente e gli attributi della connessione come input dal servizio Client VPN. Deve quindi restituire una decisione al servizio Client VPN se consentire o negare la connessione.

Schema di richiesta

La funzione Lambda accetta un blob JSON contenente i seguenti campi come input.

{ "connection-id": <connection ID>, "endpoint-id": <client VPN endpoint ID>, "common-name": <cert-common-name>, "username": <user identifier>, "platform": <OS platform>, "platform-version": <OS version>, "public-ip": <public IP address>, "client-openvpn-version": <client OpenVPN version>, "aws-client-version": <AWS client version>, "groups": <group identifier>, "schema-version": "v3" }
  • connection-id: l'ID della connessione client all'endpoint Client VPN.

  • endpoint-id: l''ID dell'endpoint Client VPN.

  • common-name: l'identificatore del dispositivo. Nel certificato client creato per il dispositivo, il nome comune identifica in modo univoco il dispositivo.

  • username: l'identificatore dell'utente, se applicabile. Per l'autenticazione di Active Directory, questo è il nome utente. Per l'autenticazione federata basata su SAML, questo è NameID. Per l'autenticazione reciproca, questo campo è vuoto.

  • platform: la piattaforma del sistema operativo client.

  • platform-version: la versione del sistema operativo. Il servizio Client VPN fornisce un valore quando la direttiva --push-peer-info è presente nella configurazione del client OpenVPN quando i client si connettono a un endpoint Client VPN e quando il client è in esecuzione sulla piattaforma Windows.

  • public-ip: l'indirizzo IP pubblico del dispositivo di connessione.

  • client-openvpn-version: la versione OpenVPN utilizzata dal client.

  • aws-client-version— La versione del client. AWS

  • groups: l'identificatore del gruppo, se applicabile. Per l'autenticazione Active Directory, questo sarà un elenco di gruppi di Active Directory. Per l'autenticazione federata basata su SAML, questo sarà un elenco di gruppi di provider di identità (IdP). Per l'autenticazione reciproca, questo campo è vuoto.

  • schema-version: la versione dello schema. Il valore di default è v3.

Schema di risposta

La funzione Lambda deve restituire i seguenti campi.

{ "allow": boolean, "error-msg-on-denied-connection": "", "posture-compliance-statuses": [], "schema-version": "v3" }
  • allow: obbligatorio. Un valore booleano (true | false) che indica se consentire o negare la nuova connessione.

  • error-msg-on-denied-connection: obbligatorio. Una stringa di massimo 255 caratteri che può essere utilizzata per fornire fasi e indicazioni ai client se la connessione viene negata dalla funzione Lambda. In caso di errori durante l'esecuzione della funzione Lambda (ad esempio a causa del throttling) il seguente messaggio predefinito viene restituito ai client.

    Error establishing connection. Please contact your administrator.
  • posture-compliance-statuses: obbligatorio. Se usi la funzione Lambda per la valutazione dell'assetto, questo è l'elenco degli stati per il dispositivo di collegamento. Puoi definire i nomi degli stati in base alle categorie di valutazione dell'assetto per i dispositivi, ad esempio compliant, quarantined, unknown e così via. Ogni nome può contenere al massimo 255 caratteri. È possibile specificare fino a 10 stati.

  • schema-version: obbligatorio. Versione dello schema. Il valore di default è v3.

Puoi utilizzare la stessa funzione Lambda per più endpoint Client VPN nella stessa regione.

Per ulteriori informazioni sulla creazione di una funzione Lambda, consulta Nozioni di base su AWS Lambda nella Guida per gli sviluppatori di AWS Lambda .

Utilizzo dell'handler delle connessioni client per la valutazione dell'assetto

Puoi utilizzare l'handler delle connessioni client per integrare l'endpoint Client VPN con la soluzione di gestione dei dispositivi esistente per valutare la conformità dell'assetto dei dispositivi di connessione. Perché la funzione Lambda funzioni come handler di autorizzazione del dispositivo, utilizza l'autenticazione reciproca per l'endpoint Client VPN. Crea un certificato e una chiave client univoci per ogni client (dispositivo) che si connetterà all'endpoint Client VPN. La funzione Lambda può utilizzare il nome comune univoco per il certificato client (passato dal servizio Client VPN) per identificare il dispositivo e recuperare lo stato di conformità dell'assetto dalla soluzione di gestione del dispositivo. Puoi utilizzare l'autenticazione reciproca combinata con l'autenticazione basata sull'utente.

In alternativa, puoi eseguire una valutazione dell'assetto di base nella funzione Lambda stessa. Ad esempio, puoi valutare i campi platform e platform-version che vengono passati alla funzione Lambda dal servizio Client VPN.

Nota

Sebbene il gestore di connessione possa essere utilizzato per imporre una versione minima AWS Client VPN dell'applicazione, il campo aws-client-version del gestore di connessione è applicabile solo all' AWS Client VPN applicazione e viene compilato dalle variabili di ambiente sul dispositivo utente.

Abilitazione dell'handler delle connessioni client

Per abilitare l'handler delle connessioni client, crea o modifica un endpoint Client VPN e specifica l'Amazon Resource Name (ARN) della funzione Lambda. Per ulteriori informazioni, consulta Creare un endpoint Client VPN e Modifica un endpoint Client VPN..

Ruolo collegato ai servizi

AWS Client VPN crea automaticamente un ruolo collegato al servizio nell'account chiamato. AWSServiceRoleForClientVPNConnections Il ruolo dispone delle autorizzazioni per richiamare la funzione Lambda quando viene effettuata una connessione all'endpoint Client VPN. Per ulteriori informazioni, consulta Utilizzo dei ruoli collegati ai servizi per Client VPN.

Monitoraggio degli errori di autorizzazione della connessione

Puoi visualizzare lo stato di autorizzazione delle connessioni all'endpoint Client VPN. Per ulteriori informazioni, consulta Visualizzazione delle connessioni client.

Quando l'handler delle connessioni client viene utilizzato per la valutazione dell'assetto, puoi inoltre visualizzare gli stati di conformità dell'assetto dei dispositivi che si connettono all'endpoint Client VPN nei log delle connessioni. Per ulteriori informazioni, consulta Registrazione delle connessioni.

Se un dispositivo non ottiene l'autorizzazione della connessione, il campo connection-attempt-failure-reason nei log delle connessioni restituisce uno dei seguenti motivi di errore:

  • client-connect-failed: la funzione Lambda ha impedito di stabilire la connessione.

  • client-connect-handler-timed-out: si è verificato il timeout della funzione Lambda.

  • client-connect-handler-other-execution-error: la funzione Lambda ha riscontrato un errore imprevisto.

  • client-connect-handler-throttled: la funzione Lambda è stata limitata.

  • client-connect-handler-invalid-response: la funzione Lambda ha restituito una risposta non valida.

  • client-connect-handler-service-error: si è verificato un errore sul lato servizio durante il tentativo di connessione.