Autorização de conexão - AWSClient VPN

Autorização de conexão

É possível configurar um manipulador de conexão de cliente para o endpoint da cliente VPN. O manipulador permite executar a lógica que autoriza uma nova conexão, baseada em atributos de dispositivo, usuário e conexão. O manipulador de conexão do cliente é executado depois que o serviço do VPN do cliente autenticou o dispositivo e o usuário.

Para configurar um manipulador de conexão do cliente para o endpoint da cliente VPN, crie uma função do AWS Lambda que utilize os atributos do dispositivo, usuário e conexão como entradas e retorne uma decisão para o serviço da cliente VPN para permitir ou negar uma nova conexão. Especifique a função Lambda no endpoint da cliente VPN. Quando os dispositivos forem conectados ao endpoint da cliente VPN, o serviço da cliente VPN invocará a função Lambda . Somente as conexões autorizadas pela função Lambda podem se conectar ao endpoint da cliente VPN.

nota

Atualmente, o único tipo de manipulador de conexão do cliente compatível é uma função Lambda.

Requisitos e considerações

Veja a seguir requisitos e considerações para o manipulador de conexão do cliente:

  • O nome da função Lambda deve começar com o prefixo AWSClientVPN-.

  • As funções Lambda qualificadas são compatíveis.

  • A função Lambda deve estar na mesma região da AWS e na mesma conta da AWS que o endpoint da cliente VPN.

  • A função Lambda atinge o tempo limite após 30 segundos. Esse valor não pode ser alterado.

  • A função Lambda é de forma sincronizada. Ela é invocada depois da autenticação de dispositivo e usuário e antes de as regras de autorização serem avaliadas.

  • Se a função Lambda for invocada para uma nova conexão e o serviço da cliente VPN não obtiver uma resposta esperada da função, o serviço da cliente VPN negará a solicitação de conexão. Por exemplo, isso pode ocorrer se a função Lambda for limitada, atingir o tempo limite ou encontrar outros erros inesperados, ou se a resposta da função não estiver em um formato válido.

  • Recomendamos configurar a simultaneidade provisionada da função Lambda para permitir que ela seja dimensionada sem flutuações na latência.

  • Se você atualizar a função Lambda, as conexões existentes com o endpoint da cliente VPN não serão afetadas. É possível encerrar as conexões existentes e orientar seus clientes a estabelecer novas conexões. Para obter mais informações, consulte Encerrar uma conexão de cliente.

  • Se os clientes usarem o cliente fornecido pela AWS para se conectar ao endpoint da cliente VPN, eles deverão usar a versão 1.2.6 ou posterior para Windows e a versão 1.2.4 ou posterior para macOS. Para obter mais informações, consulte Conecte-se usando o cliente fornecido pela AWS.

Interface do Lambda

A função Lambda usa atributos de dispositivo, usuário e conexão como entradas do serviço da cliente VPN. Depois, retoma a decisão de permitir ou negar a conexão para o serviço da cliente VPN.

Esquema de solicitação

A função Lambda usa o blob JSON que contém os campos a seguir 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>, "groups": <group identifier>, "schema-version": "v2" }
  • connection-id: o ID da conexão do cliente ao endpoint da cliente VPN.

  • endpoint-id: o ID do endpoint da cliente VPN.

  • common-name: o identificador do dispositivo. No certificado do cliente criado para o dispositivo, o nome comum identifica o dispositivo de forma exclusiva.

  • username: o identificador do usuário, se aplicável. Para autenticação do Active Directory, este é o nome de usuário. Para autenticação federada baseada em SAML, é NameID. Para autenticação mútua, este campo fica vazio.

  • platform: a plataforma do sistema operacional do cliente.

  • platform-version: a versão do sistema operacional. O serviço da cliente VPN fornece um valor quando a diretiva --push-peer-info está presente na configuração do cliente OpenVPN quando ele se conecta a um endpoint da cliente VPN e está executando a plataforma Windows.

  • public-ip: o endereço IP público do dispositivo de conexão.

  • client-openvpn-version: a versão do OpenVPN que o cliente está usando.

  • groups: o identificador do grupo, se aplicável. Para autenticação do Active Directory, esta será uma lista de grupos do Active Directory. Para autenticação federada baseada em SAML, esta será uma lista de grupos de provedores de identidade (IdP). Para autenticação mútua, este campo fica vazio.

  • schema-version: a versão do esquema. O padrão é v2.

Esquema de resposta

A função Lambda deve retornar os campos a seguir.

{ "allow": boolean, "error-msg-on-denied-connection": "", "posture-compliance-statuses": [], "schema-version": "v2" }
  • allow: obrigatório. Um booleano (true | false) que indica se deseja permitir ou negar a nova conexão.

  • error-msg-on-denied-connection: obrigatório. Uma série de até 255 caracteres que pode ser usada para fornecer etapas e diretrizes para os clientes se a conexão for negada pela função Lambda. No caso de falhas durante a execução da função Lambda (por exemplo, durante a limitação), a seguinte mensagem padrão será apresentada para os clientes.

    Error establishing connection. Please contact your administrator.
  • posture-compliance-statuses: obrigatório. Se você usa a função Lambda para avaliação da postura, esta é uma lista de status para o dispositivo de conexão. Você define os nomes de status de acordo com as categorias de avaliação da postura dos dispositivos, por exemplo, compliant, quarantined unknown e assim por diante. Os nomes podem ter até 255 caracteres. É possível especificar até 10 status.

  • schema-version: obrigatório. A versão do esquema. O padrão é v2.

Você pode usar a mesma função Lambda para vários endpoints da cliente VPN na mesma região.

Para obter mais informações sobre como criar uma função Lambda, consulte a seção Conceitos básicos do AWS Lambda no Guia do desenvolvedor do AWS Lambda.

Usar o manipulador de conexão do cliente para avaliação da postura

É possível usar o manipulador de conexão do cliente para integrar o endpoint da cliente VPN à solução de gerenciamento de dispositivos existente para avaliar a conformidade da postura dos dispositivos de conexão. Para que a função Lambda funcione como um manipulador de autorização de dispositivo, use a autenticação mútua para o endpoint da cliente VPN. Crie um certificado de cliente exclusivo e uma chave para cada cliente (dispositivo) que se conectará ao endpoint da cliente VPN. A função Lambda pode usar o nome comum exclusivo para o certificado de cliente (que é passado do serviço da cliente VPN) para identificar o dispositivo e buscar o status de conformidade da postura da solução de gerenciamento de dispositivo. É possível usar a autenticação mútua combinada com a autenticação baseada em usuário.

Como alternativa, você pode realizar uma avaliação de postura básica na própria função Lambda. Por exemplo, é possível avaliar os campos platform e platform-version que são passados para a função Lambda pelo serviço da cliente VPN.

Habilitar o manipulador de conexão do cliente

Para habilitar o manipulador de conexão do cliente, crie ou modifique um endpoint da cliente VPN e especifique o nome de recurso da Amazon (ARN) da função Lambda. Para obter mais informações, consulte Criar um endpoint do Client VPN e Modificar um endpoint do Client VPN.

Função vinculada ao serviço

A AWS Client VPN cria automaticamente uma função vinculada a serviços na conta chamada AWSServiceRoleForClientVPNConnections. A função tem permissões para invocar a função Lambda quando uma conexão é estabelecida com o endpoint da cliente VPN. Para obter mais informações, consulte Uso de funções vinculadas a serviços para o Client VPN.

Monitorar falhas de autorização de conexão

Você pode ver o status de autorização de conexões com o endpoint da cliente VPN. Para obter mais informações, consulte Visualizar conexões de clientes.

Quando o manipulador de conexão do cliente é usado para avaliação da postura, também é possível visualizar os status de conformidade da postura de dispositivos que se conectam ao endpoint da cliente VPN nos logs de conexão. Para obter mais informações, consulte Registro em log de conexão.

Caso um dispositivo falhe na autorização da conexão, o campo connection-attempt-failure-reason nos logs de conexão apresentará um dos seguintes motivos de falha:

  • client-connect-failed: a função Lambda impediu que a conexão fosse estabelecida.

  • client-connect-handler-timed-out: a função Lambda atingiu o tempo limite.

  • client-connect-handler-other-execution-error: a função Lambda encontrou um erro inesperado.

  • client-connect-handler-throttled: a função Lambda foi limitada.

  • client-connect-handler-invalid-response: a função Lambda retornou uma resposta inválida.

  • client-connect-handler-service-error: houve um erro no serviço durante a tentativa de conexão.