Autorisation de connexion - AWS Client VPN

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.

Autorisation de connexion

Vous pouvez configurer un gestionnaire de connexion client pour votre point de terminaison Client VPN. Ce gestionnaire vous permet d'exécuter une logique personnalisée qui autorise une nouvelle connexion, en fonction des attributs de périphérique, d'utilisateur et de connexion. Le gestionnaire de connexion client (Client Connect Handler) s'exécute une fois que le service Client VPN a authentifié le périphérique et l'utilisateur.

Pour configurer un gestionnaire de connexion client pour votre point de terminaison Client VPN, créez une fonction AWS Lambda qui prend les attributs de périphérique, d'utilisateur et de connexion comme entrées, et renvoie la décision au service Client VPN d'autoriser ou de refuser une nouvelle connexion. Vous spécifiez la fonction Lambda dans votre point de terminaison Client VPN. Lorsque les périphériques se connectent à votre point de terminaison Client VPN, le service Client VPN appelle la fonction Lambda en votre nom. Seules les connexions autorisées par la fonction Lambda sont autorisées à se connecter au point de terminaison Client VPN.

Note

Actuellement, le seul type de gestionnaire de connexion client pris en charge est une fonction Lambda.

Exigences et considérations

Voici les exigences et considérations relatives au gestionnaire de connexion client :

  • Le nom de la fonction Lambda doit commencer par le préfixe AWSClientVPN-.

  • Les fonctions Lambda qualifiées sont prises en charge.

  • La fonction Lambda doit se trouver dans la même AWS région et sur le même AWS compte que le point de terminaison VPN du Client.

  • La fonction Lambda expire après 30 secondes. Cette valeur ne peut pas être modifiée.

  • La fonction Lambda est appelée de manière synchrone. Elle est appelée après l'authentification du périphérique et de l'utilisateur, et avant l'évaluation des règles d'autorisation.

  • Si la fonction Lambda est appelée pour une nouvelle connexion et que le service Client VPN n'obtient pas de réponse attendue de la fonction, le service Client VPN refuse la demande de connexion. Par exemple, ceci peut se produire si la fonction Lambda est limitée, expire ou rencontre d'autres erreurs inattendues, ou si la réponse de la fonction n'est pas dans un format valide.

  • Nous vous recommandons de configurer la simultanéité allouée pour la fonction Lambda afin qu'elle puisse être mise à l'échelle sans fluctuations de latence.

  • Si vous mettez à jour votre fonction Lambda, les connexions existantes au point de terminaison Client VPN ne sont pas affectées. Vous pouvez résilier les connexions existantes, puis demander à vos clients d'établir de nouvelles connexions. Pour plus d’informations, consultez Mettre fin à une connexion client.

  • Si les clients utilisent le client AWS fourni pour se connecter au point de terminaison VPN du Client, ils doivent utiliser la version 1.2.6 ou ultérieure pour Windows, et la version 1.2.4 ou ultérieure pour macOS. Pour plus d'informations, consultez Se connecter à l'aide d'un client fourni par AWS.

Interface Lambda

La fonction Lambda prend les attributs de périphérique, les attributs utilisateur et les attributs de connexion comme entrées du service Client VPN. Elle doit ensuite renvoyer une décision au service Client VPN : autoriser ou refuser la connexion.

Schéma de la demande

La fonction Lambda prend un blob JSON contenant les champs suivants en entrée.

{ "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 — ID de la connexion client au point de terminaison Client VPN.

  • endpoint-id — ID du point de terminaison Client VPN.

  • common-name — Identifiant du périphérique. Dans le certificat client que vous créez pour le périphérique, le nom commun identifie le périphérique de manière unique.

  • username — Identifiant de l'utilisateur, le cas échéant. Pour l'authentification Active Directory, il s'agit du nom d'utilisateur. Pour l'authentification fédérée basée sur SAML, il s’agit de NameID. Pour l'authentification mutuelle, ce champ est vide.

  • platform — Plateforme du système d'exploitation client.

  • platform-version — Version du système d’exploitation. Le service Client VPN fournit une valeur lorsque la directive --push-peer-info est présente dans la configuration du client OpenVPN, lorsque les clients se connectent à un point de terminaison Client VPN et lorsque le client exécute la plateforme Windows.

  • public-ip — Adresse IP publique du périphérique qui se connecte.

  • client-openvpn-version — Version OpenVPN utilisée par le client.

  • aws-client-version— La version AWS du client.

  • groups — Identifiant du groupe, le cas échéant. Pour l'authentification Active Directory, il s'agit d'une liste de groupes Active Directory. Pour l'authentification fédérée basée sur SAML, il s'agit d'une liste de groupes de fournisseurs d'identité (IdP). Pour l'authentification mutuelle, ce champ est vide.

  • schema-version — Version du schéma. La valeur par défaut est v3.

Schéma de la réponse

La fonction Lambda doit renvoyer les champs suivants.

{ "allow": boolean, "error-msg-on-denied-connection": "", "posture-compliance-statuses": [], "schema-version": "v3" }
  • allow — Obligatoire. Booléen (true | false) qui indique s'il faut autoriser ou refuser la nouvelle connexion.

  • error-msg-on-denied-connection — Obligatoire. Chaîne de 255 caractères maximum qui peut être utilisée pour fournir des étapes et des conseils aux clients si la connexion est refusée par la fonction Lambda. En cas d'échec lors de l'exécution de la fonction Lambda (par exemple, en raison de la limitation), le message par défaut suivant est renvoyé aux clients.

    Error establishing connection. Please contact your administrator.
  • posture-compliance-statuses — Obligatoire. Si vous utilisez la fonction Lambda pour évaluer la posture, ceci est une liste des états pour le périphérique qui se connecte. Vous définissez les noms d'états en fonction de vos catégories d'évaluation de posture pour les périphériques, par exemple compliant, quarantined, unknown, etc. Chaque nom peut contenir jusqu'à 255 caractères. Vous pouvez spécifier jusqu'à 10 statuts.

  • schema-version — Obligatoire. Version du schéma. La valeur par défaut est v3.

Vous pouvez utiliser la même fonction Lambda pour plusieurs points de terminaison Client VPN dans la même région.

Pour plus d'informations sur la création d'une fonction Lambda, consultez Mise en route avec AWS Lambda dans le Guide du développeur AWS Lambda .

Utilisation du gestionnaire de connexion client pour l'évaluation de la posture

Vous pouvez utiliser le gestionnaire de connexion client pour intégrer votre point de terminaison Client VPN à votre solution existante de gestion de périphériques afin d'évaluer la conformité de posture des périphériques qui se connectent. Pour que la fonction Lambda fonctionne comme gestionnaire d'autorisation de périphérique, utilisez l'authentification mutuelle pour votre point de terminaison Client VPN. Créez un certificat client unique et une clé pour chaque client (périphérique) qui se connectera au point de terminaison Client VPN. La fonction Lambda peut utiliser le nom commun unique du certificat client (transmis par le service Client VPN) pour identifier le périphérique et récupérer son état de conformité de posture à partir de votre solution de gestion des périphériques. Vous pouvez utiliser l'authentification mutuelle combinée à l'authentification basée sur l'utilisateur.

Vous pouvez également effectuer une évaluation de la posture de base dans la fonction Lambda elle-même. Par exemple, vous pouvez évaluer les champs platform et platform-version qui sont transmis à la fonction Lambda par le service Client VPN.

Note

Bien que le gestionnaire de connexion puisse être utilisé pour imposer une version minimale de AWS Client VPN l'application, le champ aws-client-version du gestionnaire de connexion ne s'applique qu'à l' AWS Client VPN application et est renseigné à partir de variables d'environnement sur l'appareil utilisateur.

Activation du gestionnaire de connexion client

Pour activer le gestionnaire de connexion client, créez ou modifiez un point de terminaison Client VPN et spécifiez l’ARN (Amazon Resource Name) de la fonction Lambda. Pour de plus amples informations, veuillez consulter Créer un point de terminaison VPN Client et Modifier un point de terminaison VPN Client.

Rôle lié à un service

AWS Client VPN crée automatiquement un rôle lié à un service dans votre compte appelé. AWSServiceRoleForClientVPNConnections Le rôle dispose des autorisations pour appeler la fonction Lambda lorsqu'une connexion est établie au point de terminaison Client VPN. Pour plus d'informations, consultez Utilisation de rôles liés à un service pour Client VPN.

Surveillance des échecs d'autorisation de connexion

Vous pouvez afficher l'état d'autorisation de connexion des connexions au point de terminaison Client VPN. Pour plus d'informations, consultez Afficher les connexions client.

Lorsque le gestionnaire de connexion client est utilisé pour évaluer la posture, vous pouvez également afficher les états de conformité de posture des périphériques qui se connectent à votre point de terminaison Client VPN dans les journaux de connexion. Pour plus d'informations, consultez Journalisation des connexions.

Si un périphérique échoue l'autorisation de connexion, le champ connection-attempt-failure-reason dans les journaux de connexion renvoie l'une des raisons d'échec suivantes :

  • client-connect-failed — La fonction Lambda a empêché l'établissement de la connexion.

  • client-connect-handler-timed-out — La fonction Lambda a expiré.

  • client-connect-handler-other-execution-error — La fonction Lambda a rencontré une erreur inattendue.

  • client-connect-handler-throttled — La fonction Lambda a été limitée.

  • client-connect-handler-invalid-response — La fonction Lambda a renvoyé une réponse non valide.

  • client-connect-handler-service-error — Une erreur côté service s'est produite lors de la tentative de connexion.