Autorización de la conexión - AWS Client VPN

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Autorización de la conexión

Puede configurar un controlador de la conexión del cliente en el punto de enlace de Client VPN. Este controlador le permite ejecutar una lógica personalizada que autorice las nuevas conexiones en función de los atributos del dispositivo, el usuario y la conexión. El controlador de la conexión del cliente se ejecuta una vez que el servicio de Client VPN ha autenticado el dispositivo y el usuario.

Para configurar un controlador de la conexión del cliente en el punto de enlace de Client VPN, cree una función de AWS Lambda que tome los atributos del dispositivo, el usuario y la conexión como entrada y devuelva una decisión al servicio Client VPN sobre si se va a permitir o denegar una nueva conexión. Especifique la función Lambda en el punto de enlace de Client VPN. Cuando los dispositivos se conectan al punto de enlace de Client VPN, el servicio Client VPN invoca la función Lambda en su nombre. Solo las conexiones autorizadas por la función Lambda pueden conectarse al punto de enlace de Client VPN.

nota

Actualmente, el único tipo de controlador de conexión del cliente que se admite son las funciones Lambda.

Requisitos y consideraciones

A continuación se explican las consideraciones y los requisitos relacionados con el controlador de la conexión del cliente:

  • El nombre de la función Lambda debe comenzar con el prefijo AWSClientVPN-.

  • Las funciones Lambda calificadas son compatibles.

  • La función Lambda debe estar en la misma AWS región y en la misma AWS cuenta que el punto final Client VPN.

  • El tiempo de espera de la función Lambda se agota después de 30 segundos. Este valor no se puede modificar.

  • La función Lambda se invoca de manera sincrónica. Se invoca después de la autenticación del dispositivo y del usuario, y antes de que se evalúen las reglas de autorización.

  • Si la función Lambda se invoca para una nueva conexión y el servicio Client VPN no obtiene una respuesta esperada de la función, el servicio Client VPN deniega la solicitud de conexión. Esto puede ocurrir, por ejemplo, si la función Lambda tiene alguna limitación controlada, se agota su tiempo de espera o se producen otros errores inesperados, o bien si la respuesta de la función no tiene un formato válido.

  • Es conveniente que configure la simultaneidad aprovisionada de la función Lambda para que pueda escalarse sin que se produzcan fluctuaciones en la latencia.

  • Si actualiza la función Lambda, las conexiones existentes con el punto de enlace de Client VPN no se verán afectadas. Puede terminar las conexiones existentes y pedirle después a sus clientes que establezcan nuevas conexiones. Para obtener más información, consulte Terminación de una conexión de cliente.

  • Si los clientes utilizan el cliente AWS proporcionado para conectarse al punto final Client VPN, deben usar la versión 1.2.6 o posterior para Windows y la versión 1.2.4 o posterior para macOS. Para obtener más información, consulte Conexión mediante el cliente proporcionado por AWS.

Interfaz de Lambda

La función Lambda toma atributos del dispositivo, del usuario y de la conexión como entrada del servicio Client VPN. A continuación, debe devolver una decisión al servicio Client VPN acerca de si se va a permitir o denegar la conexión.

Esquema de la solicitud

La función Lambda toma un blob JSON que contiene los siguientes campos como entrada.

{ "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 conexión del cliente con el punto de enlace de Client VPN.

  • endpoint-id: ID del punto de enlace de Client VPN.

  • common-name: identificador del dispositivo. En el certificado de cliente que va a crear para el dispositivo, el nombre común identifica de forma inequívoca el dispositivo.

  • username: identificador del usuario, si procede. En la autenticación de Active Directory, es el nombre de usuario. En la autenticación federada basada en SAML, es NameID. En la autenticación mutua, este campo está vacío.

  • platform: plataforma del sistema operativo cliente.

  • platform-version: versión del sistema operativo. El servicio Client VPN proporciona un valor si la directiva --push-peer-info está presente en la configuración del cliente de OpenVPN cuando los clientes se conectan a un punto de enlace de Client VPN y cuando el cliente ejecuta la plataforma Windows.

  • public-ip: dirección IP pública del dispositivo de conexión.

  • client-openvpn-version: versión de OpenVPN que se utiliza en el cliente.

  • aws-client-version— La versión del AWS cliente.

  • groups: identificador del grupo, si procede. Para la autenticación de Active Directory, será una lista de grupos de Active Directory. Para la autenticación federada basada en SAML, será una lista de grupos de proveedores de identidades (IdP). En la autenticación mutua, este campo está vacío.

  • schema-version: versión del esquema. El valor predeterminado es v3.

Esquema de respuesta

La función Lambda debe devolver los siguientes campos.

{ "allow": boolean, "error-msg-on-denied-connection": "", "posture-compliance-statuses": [], "schema-version": "v3" }
  • allow: obligatorio. Valor booleano (true | false) que indica si se va a permitir o denegar la nueva conexión.

  • error-msg-on-denied-connection: obligatorio. Cadena de hasta 255 caracteres que se puede utilizar para proporcionar pasos y directrices a los clientes si la función Lambda deniega la conexión. Si se producen errores durante la ejecución de la función Lambda (por ejemplo, debido a una limitación controlada), se devuelve a los clientes el siguiente mensaje predeterminado.

    Error establishing connection. Please contact your administrator.
  • posture-compliance-statuses: obligatorio. Si utiliza la función Lambda para evaluar la posición, es una lista de estados del dispositivo de conexión. Los nombres de estado se definen de acuerdo con las categorías de evaluación de la posición de los dispositivos; por ejemplo, compliant, quarantined, unknown, etc. Un nombre puede tener 255 caracteres como máximo. Puede especificar hasta 10 estados.

  • schema-version: obligatorio. Versión del esquema. El valor predeterminado es v3.

Puede utilizar la misma función Lambda con varios puntos de enlace de Client VPN de la misma región.

Para obtener más información acerca de cómo crear una función de Lambda, consulte Introducción a AWS Lambda en la Guía para desarrolladores de AWS Lambda .

Uso del controlador de la conexión del cliente para evaluar la posición

Puede utilizar el controlador de la conexión del cliente para integrar el punto de enlace de Client VPN con la solución de administración de dispositivos existente y evaluar la conformidad de la posición de los dispositivos de conexión. Para que la función Lambda trabaje como un controlador de autorización de dispositivos, utilice la autenticación mutua con el punto de enlace de Client VPN. Cree un certificado de cliente único y una clave para cada cliente (dispositivo) que se conecte al punto de enlace de Client VPN. La función Lambda puede utilizar el nombre común único del certificado de cliente (que se pasa desde el servicio Client VPN) para identificar el dispositivo y obtener su estado de conformidad de posición de la solución de administración de dispositivos. Puede utilizar la autenticación mutua combinada con la autenticación basada en usuarios.

Si lo desea, también puede realizar una evaluación básica de la posición de la propia función Lambda. Por ejemplo, puede evaluar los campos platform y platform-version que el servicio Client VPN pasa a la función Lambda.

nota

Si bien el controlador de conexión se puede utilizar para imponer una versión mínima de la AWS Client VPN aplicación, el campo aws-client-version del controlador de conexión solo se aplica a la AWS Client VPN aplicación y se rellena a partir de las variables de entorno del dispositivo del usuario.

Habilitación del controlador de la conexión del cliente

Para habilitar el controlador de la conexión del cliente, cree o modifique un punto de enlace de Client VPN y especifique el nombre de recurso de Amazon (ARN) de la función Lambda. Para obtener más información, consulte Creación de un punto de enlace de Client VPN y Modificación de un punto de enlace de Client VPN..

Función vinculada al servicio

AWS Client VPN crea automáticamente un rol vinculado al servicio en tu cuenta llamado. AWSServiceRoleForClientVPNConnections El rol tiene permisos para invocar la función Lambda cuando se realiza una conexión con el punto de enlace de Client VPN. Para obtener más información, consulte Uso de roles vinculados a servicios en Client VPN.

Monitoreo de errores de autorización de la conexión

Puede ver el estado de la autorización de las conexiones con el punto de enlace de Client VPN. Para obtener más información, consulte Visualización de conexiones de clientes.

Cuando se utiliza el controlador de la conexión del cliente para evaluar la posición, también se pueden ver los estados de conformidad de la posición de los dispositivos que se conectan al punto de enlace de Client VPN en los registros de conexión. Para obtener más información, consulte Registro de conexión.

Si un dispositivo no consigue la autorización de conexión, el campo connection-attempt-failure-reason de los registros de conexión devuelve uno de los siguientes motivos de error:

  • client-connect-failed: la función Lambda impidió que se estableciera la conexión.

  • client-connect-handler-timed-out: se agotó el tiempo de espera de la función Lambda.

  • client-connect-handler-other-execution-error: la función Lambda encontró un error inesperado.

  • client-connect-handler-throttled: se aplicaron limitaciones en la función Lambda.

  • client-connect-handler-invalid-response: la función Lambda devolvió una respuesta que no era válida.

  • client-connect-handler-service-error: se produjo un error en el lado del servicio durante el intento de conexión.