Como proteger aplicativos cliente-servidor | BeyondCorp Enterprise | Google Cloud
Como proteger aplicativos cliente-servidor
Visualização — BeyondCorp Enterprise client connector
Este documento fornece uma visão geral de alto nível do conector de cliente do BeyondCorp Enterprise e descreve como ativá-lo.
O BeyondCorp Enterprise é a solução de confiança zero do Google que oferece acesso seguro a aplicativos particulares com proteção integrada contra dados e ameaças. O BeyondCorp Enterprise usa o Chrome para oferecer acesso seguro a todos os aplicativos baseados na Web (HTTPS).
O conector do cliente BeyondCorp Enterprise estende o suporte aos aplicativos não Web, criando uma conexão segura para aplicativos executados em ambientes do Google Cloud e de terceiros com acesso completo de contexto e identidade.
Veja a seguir os principais componentes do conector do cliente:
Verificação de endpoints e user agent: o conector cliente é integrado à verificação de endpoints, uma extensão do Chrome com um agente leve nativo que é executado em laptops ou computadores de usuários e relata informações do dispositivo. A verificação de endpoints também funciona como o plano de controle para o usuário final iniciar e interromper conexões com gateways de clientes.
Gateways do cliente: componentes regionais do lado do servidor aos quais os clientes podem se conectar. Os gateways do cliente são implantados por administradores. Os gateways se comunicam com o sistema de aplicação do BeyondCorp Enterprise para aplicar verificações contextuais. O sistema de aplicação do BeyondCorp Enterprise usa o Identity-Aware Proxy e o Access Context Manager, um mecanismo flexível de política de confiança zero do BeyondCorp Enterprise.
O tráfego para aplicativos protegidos de dispositivos de usuário final (cliente) é enviado por meio de um canal seguro pelo gateway. É possível se conectar a aplicativos da Web e que não são da Web em execução no Google Cloud ou fora dele. Use o Cloud VPN ou o Cloud Interconnect para se conectar aos aplicativos que não estão no Google Cloud.
Antes de começar a ativar o conector de cliente do BeyondCorp Enterprise, verifique se você tem o seguinte:
Uma licença do BeyondCorp Enterprise
Um domínio da organização do Google Cloud.
Observação: é possível ter apenas um serviço de conector de cliente por domínio.
Um projeto do Google Cloud com faturamento atribuído.
Contas de usuário do Cloud Identity do Google Workspace. Se você precisar criar contas do Cloud Identity, consulte Criar contas de usuário do Cloud Identity.
Um recurso que não é da Web que você quer proteger O recurso pode ser nativo do Google Cloud no local ou em outra nuvem pública. É possível criar uma VPC personalizada ou usar sua rede atual com um aplicativo no Google Cloud. Também é possível conectar seu aplicativo que não é do Google Cloud usando o Cloud VPN ou o Cloud Interconnect.
As seguintes APIs estão ativadas:
APIs do Compute Engine: compute.googleapis.com
APIs BeyondCorp Enterprise: beyondcorp.googleapis.com
APIs da rede de serviço:servicenetworking.googleapis.com
APIs do Access Context Manager: accesscontextmanager.googleapis.com
Os papéis do IAM a seguir:
Nível do projeto: administrador de rede do Compute (roles/compute.networkAdmin), administrador de conector do cliente BeyondCorp (roles/beyondcorp.clientConnectorAdmin)
Só é possível atribuir o papel Administrador do conector de cliente do BeyondCorp usando a CLI do Google Cloud com o comando gcloud projects add-iam-policy-binding.
Nível da organização: Administrador do Access Context Manager (roles/accesscontextmanager.policyAdmin)
Uma das configurações de hardware recomendadas para o cliente:
Apple Mac OS 10.11 e posterior, com no mínimo dois núcleos e 2 GB de memória.
Microsoft Windows 10 e posterior com no mínimo quatro núcleos e 2 GB de memória.
Como ativar o conector de cliente do BeyondCorp Enterprise
O conector do cliente usa o acesso particular a serviços para ativar a conectividade entre a rede VPC gerenciada pelo Google e a rede VPC do consumidor. Isso garante que o tráfego dos usuários seja roteado para a rede VPC do consumidor.
O Acesso privado a serviços requer que você reserve um intervalo de endereços IP para que não haja colisões de endereços IP entre sua rede VPC e a rede VPC gerenciada pelo Google. Execute o seguinte comando para alocar um intervalo de IP:
gcloud compute addresses create RESERVED_RANGE \
--network=CONSUMER_NETWORK \
--project=CONSUMER_PROJECT \
RESERVED_RANGE: o nome do intervalo de endereços IP a ser reservado para o peering de VPC. O nome pode conter apenas letras minúsculas, números e hifens.
CONSUMER_NETWORK: o nome da sua rede VPC conectada ao aplicativo.
CONSUMER_PROJECT: o ID do seu projeto que hospeda o CONSUMER_NETWORK.
Crie a conexão de peering de VPC executando o seguinte comando:
--ranges=RESERVED_RANGE \
--service="servicenetworking.googleapis.com"
RESERVED_RANGE: o nome do intervalo reservado para o peering de VPC.
Observação: no momento, o conector cliente não é compatível com o VPC Service Controls para a conexão de peering.
Para ver detalhes do intervalo de IP alocado, execute o seguinte comando:
gcloud compute addresses describe RESERVED_RANGE \
--project=CONSUMER_PROJECT
Use os valores address e prefixLength do resultado na etapa anterior para representar o intervalo de IP alocado no formato CIDR e, em seguida, execute o seguinte comando para criar uma regra de firewall:
gcloud compute firewall-rules create "allow-peered-ingress" \
--source-ranges={Allocated IP range in CIDR format i.e. address/prefixLength} \
Para mais informações sobre como configurar regras de firewall, consulte Como usar regras de firewall.
Como configurar os recursos do conector cliente
Há dois tipos de recursos, o serviço do conector cliente e o gateway cliente.
O serviço do conector do cliente é usado para definir uma configuração comum para um grupo de gateways do cliente. Os gateways do cliente se referem ao serviço do conector do cliente. Eles são usados para controlar as regiões em que você quer gerenciar o tráfego dos usuários.
No momento, só é permitido um serviço de conector do cliente por domínio e um gateway de cliente por região e serviço de conector do cliente. Além disso, você só pode usar as seguintes regiões para hospedar o serviço do conector do cliente e os recursos de gateway: asia-east1, europe-west1, us-east1 e us-central1.
Crie o serviço do conector cliente executando o seguinte comando:
-d "{ingress:{config:{transport_protocol: \"TCP\", destination_routes:[{address:\"DESTINATION_ADDRESS\", netmask:\"DESTINATION_MASK\"}]}},egress:{peered_vpc:{network_vpc:\"projects/CONSUMER_PROJECT/global/networks/CONSUMER_NETWORK\"}}}" \
https://beyondcorp.googleapis.com/v1alpha/projects/CONSUMER_PROJECT/locations/SERVICE_LOCATION/clientConnectorServices?client_connector_service_id=CLIENT_CONNECTOR_SERVICE_NAME
DESTINATION_ADDRESS: o endereço do host da sub-rede de destino que hospeda o aplicativo. Por exemplo, se o aplicativo usar 10.0.0.0/28, o endereço será 10.0.0.0.
DESTINATION_MASK: a máscara de rede da sub-rede de destino que hospeda o aplicativo. Por exemplo, se o aplicativo usar 10.0.0.0/28, a máscara será 255.255.255.240.
SERVICE_LOCATION: a região em que o serviço do conector do cliente será criado.
CLIENT_CONNECTOR_SERVICE_NAME: o nome do serviço do conector de cliente.
Para verificar se o serviço do conector cliente foi criado, liste as informações do serviço usando o seguinte comando:
https://beyondcorp.googleapis.com/v1alpha/projects/CONSUMER_PROJECT/locations/SERVICE_LOCATION/clientConnectorServices
SERVICE_LOCATION: a região em que o serviço do conector cliente está localizado.
(Opcional) Remova um serviço de conector cliente executando o seguinte comando:
https://beyondcorp.googleapis.com/v1alpha/projects/CONSUMER_PROJECT/locations/SERVICE_LOCATION/clientConnectorServices/CLIENT_CONNECTOR_SERVICE_NAME
Crie um ou mais gateways de clientes executando o seguinte comando quantas vezes forem necessárias:
-d "{client_connector_service: \"projects/CONSUMER_PROJECT/locations/SERVICE_LOCATION/clientConnectorServices/CLIENT_CONNECTOR_SERVICE_NAME\"}" \
https://beyondcorp.googleapis.com/v1alpha/projects/CONSUMER_PROJECT/locations/GATEWAY_LOCATION/clientGateways?client_gateway_id=CLIENT_GATEWAY_NAME
GATEWAY_LOCATION: a região em que o gateway do cliente será criado.
CLIENT_GATEWAY_NAME: o nome do gateway do cliente.
Esta etapa pode levar vários minutos para ser concluída.
Verifique se os gateways do cliente estão funcionando executando o seguinte comando:
https://beyondcorp.googleapis.com/v1alpha/projects/CONSUMER_PROJECT/locations/GATEWAY_LOCATION/clientGateways
GATEWAY_LOCATION: a região em que o gateway do cliente está localizado.
(Opcional) Remova um gateway de cliente executando o seguinte comando:
https://beyondcorp.googleapis.com/v1alpha/projects/CONSUMER_PROJECT/locations/GATEWAY_LOCATION/clientGateways/CLIENT_GATEWAY_NAME
GATEWAY_LOCATION: a região em que o gateway do conector do cliente está localizado.
Como configurar políticas de acesso baseado no contexto
Determine os principais ou crie um grupo de usuários. Identifique os usuários que exigem acesso a aplicativos não protegidos da Web. Se preferir, crie um grupo de usuários para simplificar a configuração e o gerenciamento.
(Opcional) Crie um nível de acesso no Access Context Manager para definir uma regra de acordo com o contexto, que pode ser usada para restringir o acesso ao app.
Observação: no momento, o conector do cliente não é compatível com o endereço IP e os níveis de acesso baseados em localização geográfica.
Configure uma política do IAM para o recurso de serviço do conector do cliente e conceda ao principal ou ao grupo de usuários o papel (roles/beyondcorp.clientConnectorServiceUser) necessário para acessar os apps que não são da Web. Opcionalmente, é possível especificar uma condição de IAM para provisionar o papel somente quando um nível de acesso for atendido. Para atualizar a política do IAM de um recurso, use o seguinte padrão read-modify-write:
Leia a política atual. O método getIamPolicy() lê a política atual do IAM para o recurso de serviço do conector do cliente em policy.json.
https://beyondcorp.googleapis.com/v1alpha/projects/CONSUMER_PROJECT/locations/SERVICE_LOCATION/clientConnectorServices/CLIENT_CONNECTOR_SERVICE_NAME:getIamPolicy > policy.json
CLIENT_CONNECTOR_SERVICE_NAME: o nome do serviço do conector do cliente.
Edite a política retornada. Atualize as vinculações em policy.json para incluir a nova atribuição de papel do IAM. Você pode fazer isso em um editor de texto ou de maneira programática. Exemplo:
"role": "roles/beyondcorp.clientConnectorServiceUser",
"user:EXAMPLE_USER@EXAMPLE.COM",
"group:EXAMPLE_GROUP@EXAMPLE.COM",
"'accessPolicies/ORGANIZATION_NUMBER/accessLevels/ACCESS_LEVEL_NAME' in
request.auth.access_levels",
Grave a política atualizada. Use o método setIamPolicy() para gravar a política atualizada do IAM. Exemplo:
-d @policy.json \
https://beyondcorp.googleapis.com/v1alpha/projects/CONSUMER_PROJECT/locations/SERVICE_LOCATION/clientConnectorServices/CLIENT_CONNECTOR_SERVICE_NAME:setIamPolicy
Como instalar o agente do conector do cliente em dispositivos de endpoint (Windows ou macOS)
Ative a extensão Verificação de endpoints seguindo as etapas em Configurar a Verificação de endpoints nos seus dispositivos.
Depois que a Verificação de endpoints estiver em execução, a extensão Verificação de endpoints exibirá um botão INICIAR CONEXO para o usuário atualizado. Para acessar o aplicativo não protegido, os usuários podem clicar no botão INICIAR CONEXO.
Quando um usuário inicia uma conexão pela primeira vez, a verificação de endpoints solicita que ele faça o download e instale os binários do conector cliente. Outra opção é fazer o download dos binários do conector cliente nos seguintes URLs:
Depois que uma conexão é estabelecida, um usuário pode acessar o recurso protegido. Os usuários podem escolher encerrar a conexão clicando no botão END CONNECTION.