Nesta página, descrevemos como configurar e usar o conector de app BeyondCorp Enterprise para proteger aplicativos que não são do Google Cloud.
Visão geral
É possível usar o conector de app BeyondCorp Enterprise para fornecer identidade e acesso baseado no contexto a aplicativos HTTPS em execução em ambientes que não sejam do Google Cloud. O conector de app do BeyondCorp Enterprise é uma interface segura e autenticada entre o plano de aplicação do BeyondCorp Enterprise e os aplicativos em execução em outras nuvens e ambientes locais.
Uma vantagem de usar o conector de app BeyondCorp Enterprise é que você não precisa abrir firewalls ou configurar conexões do Cloud VPN site a site.
Arquitetura
Veja a seguir um diagrama de arquitetura de alto nível que descreve os principais componentes do conector de app do BeyondCorp Enterprise.
Os componentes do conector de app do BeyondCorp Enterprise são controlados por três recursos principais de API: conectores, conexões e gateways de apps.
- Conectores de apps
- Um recurso de conector define um agente remoto exclusivo do conector de app. Os agentes remotos do conector de apps são implantados em ambientes corporativos remotos, como em outras nuvens e ambientes locais. Os agentes remotos iniciam e mantêm sessões de túnel para o Google Cloud, recebem tráfego do Google Cloud e redirecionam o tráfego para endpoints de aplicativos remotos no mesmo ambiente.
- Conexões de apps
- Um recurso de conexão define uma conexão lógica do Google Cloud para um endpoint de aplicativo específico identificado usando endereço IP:Porta ou FQDN:Porta. Um recurso de conexão orquestra um conjunto de gateways de conectores de app gerenciados alocados para um determinado endpoint de aplicativo. Os gateways são gerenciados no Google Cloud e encerram as sessões do túnel dos agentes remotos quando não são mais necessários.
- Gateways de apps
Um gateway de app é uma oferta de serviço gerenciado pelo Google. Os agentes remotos do conector de apps se conectam a um ou mais gateways que permitem que esses conectores redirecionem o tráfego de usuários finais para agentes remotos. O tráfego de conexões de apps hospedadas no mesmo gateway de app é roteado por uma infraestrutura virtual comum.
Quando você conecta um aplicativo usando o conector, os gateways de apps são criados e gerenciados implicitamente para você. Também é possível criar outros gateways de aplicativos se quiser organizar recursos de conexões de aplicativos em grupos. Os gateways de app oferecem a flexibilidade de agrupar ou segregar conexões de apps para permitir o isolamento de aplicativos.
Cada gateway de app aceita até 1 Gbps em capacidade total para até 200.000 conexões simultâneas. Recomendamos que você crie gateways dedicados para aplicativos críticos que exigem alto desempenho. É possível alocar no máximo até 10 apps por gateway.
Para oferecer suporte a até 200.000 conexões simultâneas e até 1 Gbps em capacidade total, recomendamos que você use uma VM dedicada de 8 núcleos e 8 GB de memória para executar o agente remoto do conector de app. Por exemplo, é possível dedicar dois agentes remotos do conector de app em um cluster de alta disponibilidade com 8 núcleos e 8 GB de memória cada um para dar suporte a um aplicativo da Web de alto desempenho (app1.examplecompany.com) com um gateway de app dedicado (app_gateway1). Crie outro cluster de duas VMs, cada uma com 8 núcleos e 8 GB de memória, para oferecer suporte a uma combinação de 10 apps de baixo uso com outro gateway de app dedicado (app_gateway2).
Os recursos de conector, conexão de app e gateway de app são regionais. Só é possível usá-los em um contexto regional. Por exemplo, não é possível atribuir um conector de app da região A a uma conexão ou gateway de app criado na região B.
Antes de começar
Só é possível usar o conector de app BeyondCorp Enterprise com aplicativos HTTPS. Além disso, os balanceadores de carga HTTPS não usam a extensão Server Name Indication (SNI) para conexões com o back-end. Saiba mais em Criptografia do balanceador de carga nos back-ends.
Para usar o conector de app do BeyondCorp Enterprise, é necessário ter o seguinte:
- Uma licença do BeyondCorp Enterprise.
- Google Cloud CLI versão 392 ou mais recente.
Cada agente de conector de app do BeyondCorp Enterprise requer uma VM do Linux que execute o Docker. Recomendamos as seguintes distribuições do Linux:
- Debian 10.7 (buster)
- Red Hat Enterprise Linux Server 7.8 (Maipo) x86_64
- Ubuntu 16.04 ou posterior
Para o hardware de VM do Linux, recomendamos um mínimo de duas CPUs com 2 GB de RAM.
É possível configurar e ativar o conector de apps usando a gcloud e a API ou o console do Google Cloud. Para usar o gcloud e as APIs, conclua as etapas a seguir. Para usar o console do Google Cloud, acesse Configurar o conector de app usando o console do Google Cloud.
Como configurar o projeto do Google Cloud
Para configurar um projeto do Google Cloud para usar com o conector de app do BeyondCorp Enterprise, é necessário ativar a API BeyondCorp Enterprise. Siga estas etapas para ativar a API:
CLI da gcloud
Antes de concluir as etapas a seguir, verifique se o SDK da CLI gcloud está instalado.
Defina a variável de ambiente necessária executando o seguinte comando:
PROJECT_ID=my-project
Substitua my-project pelo ID do projeto do Google Cloud.
Ative a API executando o seguinte comando:
gcloud config set project $PROJECT_ID gcloud services enable beyondcorp.googleapis.com
API
Receba um token de acesso e defina as variáveis de ambiente e os aliases necessários executando os seguintes comandos:
PROJECT_NUMBER=my-project-number ACCESS_TOKEN=my-access-token
Substitua my-project pelo ID do projeto do Google Cloud.
Configure um alias conveniente para usar seu token de acesso:
alias gcurl="curl -H 'Authorization: Bearer ${ACCESS_TOKEN}' -H 'Content-Type: application/json'"
Ative a API executando o seguinte comando:
gcurl https://serviceusage.googleapis.com/v1/projects/${PROJECT_NUMBER}/services/beyondcorp.googleapis.com:enable -d "{}"
Como instalar um agente remoto do conector de app
É necessário implantar uma VM do agente remoto do conector de app em cada ambiente de rede que hospeda um aplicativo que você queira proteger com o BeyondCorp Enterprise. É necessário ter uma VM dedicada ou qualquer servidor Bare Metal com o Docker instalado para cada agente remoto criado.
Para criar um agente remoto, siga estas etapas:
- Crie uma instância de VM no ambiente do aplicativo.
- Verifique se o firewall de rede da VM do agente remoto permite todo o tráfego de saída iniciado na porta 443 para o intervalo de IP IAP-TCP 35.235.240.0/20. Consulte Verificar a configuração do firewall para outros domínios em que o firewall da VM do agente remoto deve permitir o tráfego de saída.
Instale o agente remoto:
- Verifique se o DNS está configurado corretamente e se você pode acessar o aplicativo usando curl.
- Instale o Docker Engine.
- Opcional: se você estiver usando um proxy, verifique se o daemon do Docker está configurado corretamente.
- Opcional: se você estiver usando um proxy, verifique se as variáveis de ambiente do proxy HTTP e HTTPS estão definidas e usando o esquema
http://
. - Execute o seguinte comando na VM do agente remoto para instalá-lo:
curl https://raw.githubusercontent.com/GoogleCloudPlatform/beyondcorp-applink/main/bash-scripts/install-beyondcorp-runtime -o ./install-beyondcorp-runtime && chmod +x ./install-beyondcorp-runtime && ./install-beyondcorp-runtime
- Para adicionar o alias
bce-connctl
ao shell, execute o seguinte comando:source ~/.bce_alias
Execute os comandos a seguir para definir as variáveis de ambiente necessárias:
PROJECT_ID=my-project REGION=us-central1 CONNECTOR_NAME=my-connector
Substitua:- my-project: o ID do projeto do Google Cloud.
- us-central1: a região em que a conexão e os gateways serão implantados.
- my-connector: o nome do conector.
Registre o conector usando um dos seguintes tipos de credenciais:
Conta de serviço
Inscreva o conector executando o seguinte comando na CLI
bce-connctl
:bce-connctl init --project=$PROJECT_ID --region=$REGION --connector=$CONNECTOR_NAME
Siga as instruções na tela para copiar e colar o script de inscrição nos projetos do Google Cloud usando o Cloud Shell ou a CLI gcloud e concluir a inscrição do conector. Para executar o script de inscrição, você precisa ter as permissões
Owner
no projeto.Quando o script de inscrição for concluído, o ambiente de execução sincronizará a configuração do conector automaticamente.
Identidade federada
- Siga o guia de federação de identidade da carga de trabalho para conceder acesso de identidade externa ao Google Cloud usando a representação de conta de serviço.
- Faça o download da configuração da biblioteca de cliente e coloque o arquivo na VM do agente remoto em
/var/beyondcorp/credentials/credentials.json
.- Se estiver usando uma instância do AWS EC2 como a VM do agente remoto, siga um destes procedimentos:
- Torne o IMDSv2 opcional na instância do EC2.
- Adicione a seguinte linha ao objeto
credential_source
no arquivo de configuração da biblioteca de cliente:"imdsv2_session_token_url": "http://169.254.169.254/latest/api/token"
- Se estiver usando uma instância do AWS EC2 como a VM do agente remoto, siga um destes procedimentos:
- Na VM do agente remoto, execute os seguintes comandos na CLI
bce-connctl
:bce-connctl config set project $PROJECT_ID bce-connctl config set region $REGION bce-connctl config set connector $CONNECTOR_NAME
- Execute o comando a seguir para reiniciar o agente e para que ele colete as credenciais:
sudo systemctl restart beyondcorp
- No endpoint do Cloud Shell ou da CLI gcloud, defina a variável de ambiente necessária executando o seguinte comando:
SERVICE_ACCOUNT=my-service-account
Substitua:- my-service-account: a conta de serviço do Google Cloud associada à identidade externa.
Conceda à conta de serviço do Google Cloud o papel
BeyondCorp Connection Agent
executando o seguinte comando:gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:$SERVICE_ACCOUNT" \ --role="roles/beyondcorp.connectionAgent"
Execute o comando a seguir para criar o recurso de conector de app do Google Cloud.
gcloud alpha beyondcorp app connectors create $CONNECTOR_NAME \ --project=$PROJECT_ID \ --location=$REGION \ --member="serviceAccount:$SERVICE_ACCOUNT" \ --display-name=$CONNECTOR_NAME
Depois que o recurso de conector de app for criado, o ambiente de execução do agente remoto vai sincronizar a configuração do conector automaticamente.
Verifique a instalação do agente remoto:
- Execute o seguinte comando para garantir que o serviço esteja sendo executado:
sudo systemctl status beyondcorp
- O agente remoto consiste em três contêineres do Docker:
bce-control-runtime
,bce-logagent
ebce-connector
. Para verificar se os três contêineres estão em execução, execute o seguinte comando:docker ps --filter name=bce
- Opcional: é possível verificar os arquivos de registro dos contêineres do Docker
executando o seguinte comando:
docker logs -f CONTAINER_NAME
Substitua CONTAINER_NAME pelo nome do contêiner do Docker.
- Execute o seguinte comando para garantir que o serviço esteja sendo executado:
Como conectar um aplicativo remoto a uma VPC
CLI da gcloud
Antes de concluir as etapas a seguir, verifique se você tem o SDK da CLI gcloud instalado e se fez login com uma conta que tenha o papel beyondcorp.admin
.
Execute os comandos a seguir para definir as variáveis de ambiente necessárias:
CONNECTOR_NAME=my-connector CONNECTION_NAME=my-connection PROJECT_ID=my-project REGION=us-central1 APP_ENDPOINT=APP_HOST:APP_PORT
Substitua:
- my-connector: o nome do conector, definido em uma etapa anterior.
- my-connection: um nome exclusivo para a conexão.
- my-project: o ID do projeto do Google Cloud.
- us-central1: a região em que a conexão e os gateways serão implantados.
- APP_HOST: o endereço IP local ou um FQDN que hospeda o aplicativo.
- APP_PORT: o número da porta para se conectar ao aplicativo.
Para criar uma conexão entre o aplicativo e a VPC, execute o seguinte comando:
gcloud alpha beyondcorp app connections create $CONNECTION_NAME \ --project=$PROJECT_ID \ --location=$REGION \ --application-endpoint=$APP_ENDPOINT \ --type=tcp \ --connectors=$CONNECTOR_NAME \ --display-name=$CONNECTION_NAME
Essa etapa pode levar alguns minutos para ser concluída.
Depois de criar a conexão, execute os seguintes comandos para recuperar os URIs do gateway:
GATEWAY_URI="$(gcloud alpha beyondcorp app connections describe $CONNECTION_NAME --project=$PROJECT_ID --location=$REGION --format='get(gateway.uri)')" GATEWAY_URI_L7="${GATEWAY_URI/bce-psc/bce-ps7}"
O
GATEWAY_URI_L7
é usado para criar uma regra de encaminhamento. O conector de apps do BeyondCorp Enterprise usa o Private Service Connect para vincular o projeto do consumidor aos recursos gerenciados em projetos gerenciados do Google.
API
Execute os comandos a seguir para definir as variáveis de ambiente necessárias:
CONNECTOR_NAME=my-connector CONNECTION_NAME=my-connection PROJECT_ID=my-project REGION=us-central1 APP_HOST=my-app-host APP_PORT=my-app-port
Substitua:
- my-connector: o nome do conector, definido em uma etapa anterior.
- my-connection: um nome exclusivo para a conexão.
- my-project: o ID do projeto do Google Cloud.
- us-central1: a região em que a conexão e os gateways serão implantados.
- my-app-host: o endereço IP local ou um FQDN que hospeda o aplicativo.
- my-app-port: o número da porta para se conectar ao aplicativo.
Para criar uma conexão entre o aplicativo e a VPC, execute o seguinte comando:
gcurl https://beyondcorp.googleapis.com/v1/projects/${PROJECT_NUMBER}/locations/${REGION}/appConnections?app_connection_id=${CONNECTION_NAME} \ -d "{ \ 'application_endpoint': \ { \ 'host': '${APP_HOST}', \ 'port': '${APP_PORT}' \ }, \ 'type': 'TCP_PROXY', \ 'display_name': '${CONNECTION_NAME}' \ }"
Essa etapa pode levar alguns minutos para ser concluída.
Depois de criar a conexão, execute os seguintes comandos para recuperar os URIs do gateway:
GATEWAY_URI=$(gcurl https://beyondcorp.googleapis.com/v1/projects/${PROJECT_NUMBER}/locations/${REGION}/appConnections/${CONNECTION_NAME} | jq -r '.gateway.uri') GATEWAY_URI_L7="${GATEWAY_URI/bce-psc/'bce-ps7'}"
O
GATEWAY_URI_L7
é usado para criar uma regra de encaminhamento. O conector de apps do BeyondCorp Enterprise usa o Private Service Connect para vincular o projeto do consumidor aos recursos gerenciados em projetos gerenciados do Google.
Como configurar um balanceador de carga de aplicativo externo
Só é possível conectar aplicativos HTTPS a um balanceador de carga de aplicativo externo. Os aplicativos HTTP não são compatíveis.
CLI da gcloud
Antes de concluir as etapas a seguir, verifique se você tem o SDK da CLI gcloud instalado e se fez login com uma conta que tenha o papel beyondcorp.admin
.
Execute os comandos a seguir para definir as variáveis de ambiente necessárias:
LB_PREFIX=web-app PROJECT_ID=my-project REGION=us-central1 DOMAIN_NAME=app.example.com
Substitua:- web-app: o prefixo anexado aos nomes de todos os recursos do balanceador de carga.
- my-project: o ID do projeto do Google Cloud.
- us-central1: a região em que a conexão e os gateways serão implantados.
- app.example.com: o nome de domínio do aplicativo.
Crie um grupo de endpoints de rede (NEG) usando o seguinte comando:
gcloud beta compute network-endpoint-groups create $LB_PREFIX-neg \ --region=$REGION \ --network-endpoint-type=private-service-connect \ --psc-target-service=$GATEWAY_URI_L7
Sinalizações opcionais:
- Defina a flag
--network
para especificar o nome da rede nos endpoints da rede no NEG. Se não for especificada, a rede de projeto padrão será usada. - Defina a sinalização
--subnet
para especificar o nome da sub-rede dos endpoints de rede no NEG. Se não for especificado, o endpoint de rede poderá pertencer a qualquer sub-rede na região em que o grupo de endpoints de rede foi criado.
- Defina a flag
Crie um serviço de back-end baseado em NEG e conecte-o a um anexo de serviço do Private Service Connect executando os seguintes comandos:
gcloud beta compute backend-services create $LB_PREFIX-backend-service \ --global \ --protocol=HTTPS \ --load-balancing-scheme=EXTERNAL_MANAGED gcloud beta compute backend-services add-backend $LB_PREFIX-backend-service \ --global \ --network-endpoint-group=$LB_PREFIX-neg \ --network-endpoint-group-region=$REGION
Crie um certificado gerenciado pelo Google para seu domínio executando os seguintes comandos:
gcloud compute addresses create $LB_PREFIX-static-ip \ --ip-version=IPV4 \ --global gcloud compute ssl-certificates create $LB_PREFIX-ssl-cert \ --domains=$DOMAIN_NAME \ --global LB_IP="$(gcloud compute addresses describe $LB_PREFIX-static-ip --global --format='value(address)')"
Crie um balanceador de carga de aplicativo externo com base no back-end da etapa anterior executando os seguintes comandos:
gcloud compute url-maps create $LB_PREFIX-map-https \ --default-service=$LB_PREFIX-backend-service gcloud compute target-https-proxies create $LB_PREFIX-https-lb-proxy \ --url-map=$LB_PREFIX-map-https \ --ssl-certificates=$LB_PREFIX-ssl-cert gcloud beta compute forwarding-rules create "$LB_PREFIX-https-lb-forwarding-rule" \ --global \ --target-https-proxy=$LB_PREFIX-https-lb-proxy \ --address=$LB_IP \ --ports=443 \ --load-balancing-scheme=EXTERNAL_MANAGED
Após a criação do balanceador de carga de aplicativo externo, o aplicativo pode ser acessado pela Internet por esse endereço IP.
Após a criação do balanceador de carga de aplicativo externo, é preciso associar o endereço IP ao nome de domínio para que o Google Cloud possa provisionar um certificado SSL. Use as instruções do seu provedor de DNS para saber como associar o endereço IP ao nome DNS. Execute o seguinte comando para verificar o status do provisionamento:
- Mostre o endereço IP a ser configurado no provedor de DNS:
echo "Load Balancer ip address - $LB_IP"
- Depois de definir o DNS, verifique se o nome de domínio é resolvido
com o endereço IP executando o seguinte comando:
dig $DOMAIN_NAME
- Receba o status de provisionamento executando o seguinte comando:
gcloud compute ssl-certificates describe $LB_PREFIX-ssl-cert \ --global \ --format="get(name,managed.status, managed.domainStatus)"
Após o certificado SSL ser provisionado, você poderá acessar seu aplicativo usando o nome DNS.
- Mostre o endereço IP a ser configurado no provedor de DNS:
API
Execute os comandos a seguir para definir as variáveis de ambiente necessárias:
LB_PREFIX=web-app PROJECT_ID=my-project REGION=us-central1 DOMAIN_NAME=app.example.com
Substitua:- web-app: o prefixo anexado aos nomes de todos os recursos do balanceador de carga.
- my-project: o ID do projeto do Google Cloud.
- us-central1: a região em que a conexão e os gateways serão implantados.
- app.example.com: o nome de domínio do aplicativo.
Crie um grupo de endpoints de rede (NEG) usando o seguinte comando:
gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/regions/${REGION}/networkEndpointGroups \ -d "{ \ 'name': '${LB_PREFIX}-neg', \ 'network_endpoint_type': 'private-service-connect', \ 'psc_target_service': '${GATEWAY_URI_L7}' \ }"
Campos opcionais:
- Defina o campo
network
para especificar o URL da rede para os endpoints de rede no NEG. Se não for especificada, a rede de projeto padrão será usada. - Defina o campo
subnetwork
para especificar o URL da sub-rede para os endpoints de rede no NEG. Se não for especificado, o endpoint da rede poderá pertencer a qualquer sub-rede na região em que o grupo de endpoints de rede foi criado.
- Defina o campo
Crie um serviço de back-end baseado em NEG e conecte-o a um anexo de serviço do Private Service Connect executando os seguintes comandos:
gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/backendServices \ -d "{ \ 'name': '${LB_PREFIX}-backend-service', \ 'service_protocol': 'HTTPS', \ 'port_name': 'https', \ 'load_balancing_scheme': 'EXTERNAL_MANAGED' \ }" gcurl -X PATCH https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/backendServices/${LB_PREFIX}-backend-service \ -d "{ \ 'backends': \ [{ \ 'group': 'https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/regions/${REGION}/networkEndpointGroups/${LB_PREFIX}-neg' \ }] \ }"
Crie um certificado gerenciado pelo Google para seu domínio executando os seguintes comandos:
gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/addresses \ -d "{ \ 'name': '${LB_PREFIX}-static-ip', \ 'ip_version': 'IPV4' \ }" gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/sslCertificates \ -d "{ \ 'name': '${LB_PREFIX}-ssl-cert', \ 'managed': \ { \ 'domains': '${DOMAIN_NAME}' \ }, \ 'type': 'MANAGED' \ }" LB_IP=$(gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/addresses/${LB_PREFIX}-static-ip | jq -r '.address')
Crie um balanceador de carga de aplicativo externo com base no back-end da etapa anterior executando os seguintes comandos:
gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/urlMaps \ -d "{ \ 'name': '${LB_PREFIX}-map-https', \ 'default_service': 'https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/backendServices/${LB_PREFIX}-backend-service' \ }" gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/targetHttpsProxies \ -d "{ \ 'name': '${LB_PREFIX}-https-lb-proxy', \ 'url_map': 'https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/urlMaps/${LB_PREFIX}-map-https', \ 'ssl_certificate': 'https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/sslCertificates/${LB_PREFIX}-ssl-cert' \ }" gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/forwardingRules \ -d "{ \ 'name': '${LB_PREFIX}-https-lb-forwarding-rule', \ target: 'https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/targetHttpsProxies/${LB_PREFIX}-https-lb-proxy', \ 'ip_address': '${LB_IP}', \ 'port_range': '443-443', \ 'load_balancing_scheme': 'EXTERNAL_MANAGED' \ }"
Após a criação do balanceador de carga de aplicativo externo, o aplicativo pode ser acessado pela Internet por esse endereço IP.
Após a criação do balanceador de carga de aplicativo externo, é preciso associar o endereço IP ao nome de domínio para que o Google Cloud possa provisionar um certificado SSL. Use as instruções do seu provedor de DNS para saber como associar o endereço IP ao nome DNS. Execute o seguinte comando para verificar o status do provisionamento:
- Mostre o endereço IP a ser configurado no provedor de DNS:
echo "Load Balancer ip address - $LB_IP"
- Depois de definir o DNS, verifique se o nome de domínio é resolvido
com o endereço IP executando o seguinte comando:
dig $DOMAIN_NAME
- Receba o status de provisionamento executando o seguinte comando:
echo $(gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/sslCertificates/${LB_PREFIX}-ssl-cert \ | jq -r '.name + " " + .managed.status + " " + (.managed.domainStatus | keys[]) + "=" + .managed.domainStatus[]')
Após o certificado SSL ser provisionado, você poderá acessar seu aplicativo usando o nome DNS.
- Mostre o endereço IP a ser configurado no provedor de DNS:
Como ativar o Identity-Aware Proxy
Siga a documentação do Identity-Aware Proxy (IAP) para configurar o Identity-Aware Proxy. Depois de configurar o IAP, ative o IAP para o serviço de back-end seguindo estas etapas:
Acesse a página do IAP:
IAPEm RECURSOS HTTPS, encontre
$LB_PREFIX-backend-service
. Para ativar o IAP para esse recurso, clique no botão de alternância na coluna IAP. Na janela Ativar IAP, marque a caixa de seleção para confirmar os requisitos de configuração desse recurso e clique em ATIVAR para confirmar que você quer proteger seu recurso com o IAP.Para permitir que os usuários acessem o aplicativo, conceda a eles o papel de usuário do app da Web protegido pelo IAP no projeto. Para isso, siga estas etapas:
- Marque a caixa de seleção
$LB_PREFIX-backend-service
. - No Painel de informações, selecione ADICIONAR PRINCIPAL e insira os endereços de e-mail dos grupos ou indivíduos que terão acesso à sua inscrição.
- Na lista suspensa Selecionar um papel, selecione Cloud IAP > Usuário do app da Web protegido pelo IAP e clique em Salvar.
- Marque a caixa de seleção
Agora seu aplicativo local deve ser publicado na Internet e protegido pelo BeyondCorp Enterprise.
Configurar o conector de app usando o console do Google Cloud
Conclua os procedimentos nesta seção para implantar o conector de app do BeyondCorp Enterprise usando o console do Google Cloud.
Insira os detalhes da sua inscrição
Siga estas etapas para adicionar os detalhes do seu aplicativo:
No console do Google Cloud, acesse a página do IAP.
Acessar o IAPClique no botão CONECTAR NOVO APLICATIVO e selecione Conectar pelo App Connector.
Em Nome do aplicativo, insira o nome do aplicativo que você quer proteger.
Em URL do aplicativo externo, insira um URL acessível publicamente para que os usuários acessem o aplicativo.
Clique em Próxima.
Configurar a conexão com o Google Cloud
Conclua as etapas a seguir para estabelecer a conectividade entre o Google Cloud e seu ambiente que não é do Google Cloud.
Clique no botão CRIAR CONECTOR DO APP e insira as seguintes informações:
- Nome do conector de app: um nome para o conector.
- Região: a região em que os gateways de conexão e o conector serão implantados.
Clique no botão CRIAR.
Siga as instruções no painel Provisionar uma máquina virtual para implantar o agente remoto na sua VM.
Clique no botão TEST CONNECTION STATUS para testar a conexão.
Configure o conector criado na etapa anterior inserindo as seguintes informações em Onde o Google Cloud pode encontrar seu aplicativo?:
- Nome do host interno: o endereço IP local ou o FQDN que hospeda o aplicativo.
- Porta: o número da porta para se conectar ao aplicativo.
Conceder acesso ao aplicativo (opcional)
Em Novos principais, digite um ou mais dos seguintes valores:
- e-mail da conta do Google: user@gmail.com
- grupo do Google: admins@googlegroups.com
- Conta de serviço: server@example.gserviceaccount.com
- Domínio do Google Workspace: example.com
- qualquer pessoa: insira
allUsers
para conceder acesso a todos os usuários. - Todas as Contas do Google:
allAuthenticatedUsers
para conceder acesso a qualquer usuário conectado a uma Conta do Google.
Selecione um ou mais níveis de acesso e clique em PRÓXIMA.
Publicar seu aplicativo
Para publicar o aplicativo, clique no botão PUBLICAR APLICATIVO SEGURO.
Depois de publicar o aplicativo e receber a confirmação de Aplicativo publicado com segurança, crie um registro DNS que aponte o URL do aplicativo externo para o endereço IP do proxy. Conclua as etapas a seguir:
- Na seção STEP 2 - Update DNS, copie o endereço IP do campo IP address. Use o endereço para criar um registro DNS seguindo as instruções do provedor de DNS sobre como associar o endereço IP ao nome DNS.
Depois de criar o registro DNS, clique no botão TEST para testá-lo. Você receberá a confirmação de aprovação no teste de DNS.
Clique em CONCLUÍDO.
Ativar o IAP
Acesse a página do IAP.
Acessar o IAPNa lista de recursos, localize seu aplicativo e selecione o botão na coluna do IAP.
Na caixa de diálogo Ativar IAP, marque a caixa de seleção Li os requisitos de configuração e configurei meu serviço de back-end de acordo com a documentação.Em seguida, clique em ATIVAR.
Agora seu aplicativo local deve ser publicado na Internet e protegido pelo BeyondCorp Enterprise.
Criar um gateway de app (opcional)
Os gateways de apps são criados e gerenciados implicitamente quando você conecta um aplicativo usando o conector de apps. Também é possível criar seus próprios gateways de apps para organizar os recursos de conexões de apps em grupos. O tráfego de conexões de apps hospedadas em diferentes gateways de apps é roteado por uma infraestrutura virtual separada.
Para criar e especificar um gateway de app, conclua as etapas a seguir.
CLI da gcloud
Defina as variáveis de ambiente necessárias executando o seguinte comando:
CONNECTOR_NAME=CONNECTOR_NAME CONNECTION_NAME=CONNECTION_NAME GATEWAY_NAME=GATEWAY_NAME PROJECT_ID=PROJECT_ID REGION=REGION APP_ENDPOINT=APP_HOST:APP_PORT
Substitua:
- CONNECTOR_NAME: o nome do conector, definido em uma etapa anterior.
- CONNECTION_NAME: um nome exclusivo para a conexão.
- GATEWAY_NAME: o nome do gateway do app.
- PROJECT_ID: o ID do projeto do Google Cloud.
- REGION: a região em que o gateway do app será implantado, como
us-central1
. - APP_HOST: o endereço IP local ou um FQDN que hospeda o aplicativo.
- APP_PORT: o número da porta para se conectar ao aplicativo.
Execute o seguinte comando para criar um gateway de app:
gcloud beta beyondcorp app gateways create $GATEWAY_NAME \ --project=$PROJECT_ID --location=$REGION --display-name=$GATEWAY_NAME
Especifique um gateway de app em uma chamada de criação de conexão executando o seguinte comando:
gcloud beta beyondcorp app connections create $CONNECTION_NAME \ --project=$PROJECT_ID \ --location=$REGION \ --application-endpoint=$APP_ENDPOINT \ --type=tcp \ --connectors=$CONNECTOR_NAME \ --display-name=$CONNECTION_NAME \ --app-gateway=$GATEWAY_NAME
API
Defina as variáveis de ambiente necessárias executando o seguinte comando:
CONNECTOR_NAME=CONNECTOR_NAME CONNECTION_NAME=CONNECTION_NAME GATEWAY_NAME=GATEWAY_NAME PROJECT_ID=PROJECT_ID REGION=REGION APP_ENDPOINT=APP_HOST:APP_PORT
Substitua:
- CONNECTOR_NAME: o nome do conector, definido em uma etapa anterior.
- CONNECTION_NAME: um nome exclusivo para a conexão.
- GATEWAY_NAME: o nome do gateway do app.
- PROJECT_ID: o ID do projeto do Google Cloud.
- REGION: a região em que o gateway do app será implantado, como
us-central1
. - APP_HOST: o endereço IP local ou um FQDN que hospeda o aplicativo.
- APP_PORT: o número da porta para se conectar ao aplicativo.
Execute o seguinte comando para criar um gateway de app:
gcurl https://beyondcorp.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/appGateways?app_gateway_id=${GATEWAY_NAME} \ -d "{ \ 'type': 'TCP_PROXY', \ 'display_name': '${CONNECTION_NAME}' \ }"
Especifique um gateway de app em uma chamada de criação de conexão executando o seguinte comando:
gcurl https://beyondcorp.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/appConnections?app_connection_id=${CONNECTION_NAME} \ -d "{ \ 'application_endpoint': \ { \ 'host': '${APP_HOST}', \ 'port': '${APP_PORT}' \ }, \ 'gateway': { 'app_gateway' : 'projects/${PROJECT_ID}/locations/${REGION}/appGateways/${GATEWAY_NAME}'}, \ 'connectors':['projects/${PROJECT_ID}/locations/${REGION}/appConnectors/${CONNECTOR_NAME}'], \ 'type': 'TCP_PROXY', \ 'display_name': '${CONNECTION_NAME}' \
Próximas etapas
- Consulte VPC Service Controls para saber como proteger uma VPC.
- Defina regras de contexto mais avançadas aplicando níveis de acesso.
- Para as solicitações de acesso, ative os registros de auditoria do Cloud.
Solução de problemas
Não é possível encontrar recursos criados anteriormente
Ao usar a CLI gcloud versão 392.0.0 ou mais recente, use os novos recursos padrão AppConnector
e AppConnection
do conector de app. Por exemplo, gcloud alpha beyondcorp app connectors
e gcloud alpha beyondcorp app connections
se referem aos novos recursos.
Para acessar recursos legados criados com uma versão da CLI gcloud anterior à 392.0.0, use a palavra-chave legacy
. Por exemplo, gcloud alpha beyondcorp app legacy connectors
e gcloud alpha beyondcorp app legacy connections
se referem aos recursos legados.
As configurações que usam recursos legados continuam funcionando, mas vão ser descontinuadas no futuro.
Ações recomendadas
- Siga os procedimentos neste guia para configurar novos recursos.
- Se sua configuração usa recursos legados, use a palavra-chave
legacy
para localizar e remover esses recursos. Recrie os recursos seguindo os procedimentos neste documento. - Se você tiver uma configuração incompleta que usa recursos legados, use a palavra-chave
legacy
para localizar e remover esses recursos. Recrie os recursos seguindo os procedimentos neste documento.
Erros de TLS/SSL
ERR_SSL_VERSION_OR_CIPHER_MISMATCH
O navegador mostra o erro ERR_SSL_VERSION_OR_CIPHER_MISMATCH
ou erros TLS/SSL semelhantes e não redireciona para a página de login.
Ações recomendadas
Verifique o status dos certificados na página de detalhes do balanceador de carga do Google Cloud.
OBSERVAÇÃO: o provisionamento de um certificado gerenciado pelo Google pode levar até 60 minutos.
TLS error
O navegador mostra o erro upstream connect error or disconnect/reset before headers. retried and the latest reset reason: connection failure, transport failure reason: TLS error
ou erros TLS/SSL semelhantes depois de redirecionar para a página de login.
Ações recomendadas
- Verifique se o endpoint do aplicativo usado na conexão é HTTPS.
Verifique se o endpoint do app pode ser acessado na VM do agente remoto usando curl:
curl https://$APP_ENDPOINT
Talvez seja necessário usar a sinalização
-k
se o certificado do aplicativo for autoassinado.
Verifique a configuração do firewall
Verifique se os firewalls entre o agente remoto e a Internet permitem conexões de saída para os seguintes domínios:
Tipo de conexão | Domínio | Port |
TCP | raw.githubusercontent.com | 443 |
TCP | gcr.io | 443 |
TCP | *.googleapis.com | 443 |
TCP | tunnel.cloudproxy.app | 443 |
TCP | *.tunnel.cloudproxy.app | 443 |
TCP | accounts.google.com | 443 |
TCP | oauth2.googleapis.com | 443 |
Alterar os conectores associados a uma conexão
gcloud
Defina as variáveis de ambiente necessárias executando o seguinte comando:
CONNECTOR_NAME=my-connector CONNECTION_NAME=my-connection REGION=us-central1 PROJECT_ID=my-project
Substitua:
- my-connector: o nome do conector. Também pode ser uma lista separada por vírgulas, como
connector1,connector2
. - my-connection: o nome da conexão a ser atualizada.
- us-central1: a região em que a conexão é implantada.
- my-project: o ID do projeto do Google Cloud.
- my-connector: o nome do conector. Também pode ser uma lista separada por vírgulas, como
Para alterar os conectores associados a uma conexão, execute o seguinte comando:
gcloud alpha beyondcorp app connections update $CONNECTION_NAME \ --project=$PROJECT_ID \ --location=$REGION \ --connectors=$CONNECTOR_NAME
API
Defina as variáveis de ambiente necessárias executando o seguinte comando:
CONNECTOR_NAME=my-connector CONNECTION_NAME=my-connection REGION=us-central1 PROJECT_ID=my-project
Substitua:
- my-connector: o nome do conector.
- my-connection: o nome da conexão a ser atualizada.
- us-central1: a região em que a conexão é implantada.
- my-project: o ID do projeto do Google Cloud.
Para alterar os conectores associados a uma conexão, execute o seguinte comando:
gcurl -X PATCH \ https://beyondcorp.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/appConnections/${CONNECTION_NAME}?update_mask=connectors \ -d "{ \ 'connectors': ['projects/${PROJECT_ID}/locations/${REGION}/appConnectors/${CONNECTOR_NAME}'], \ }"
Para verificar a atualização, execute o comando a seguir e verifique o campo
connectors
da saída:gcurl https://beyondcorp.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/appConnections/${CONNECTION_NAME}
Proxy
O suporte a proxies foi introduzido no início de 2024 e requer alterações no arquivo systemd do BeyondCorp. Se você instalou o agente remoto antes disso e quer usar um proxy, reinstale-o.
Verificar se o daemon do Docker está configurado corretamente para funcionar com proxies.
Verifique se as variáveis de ambiente do proxy HTTP e HTTPS estão definidas e se ambas estão usando o esquema
http://
. O esquemahttps://
e outros esquemas não são compatíveis.Execute o comando
env
para verificar se as variáveis de ambiente do proxy são exportadas para subprocessos.Somente
HTTP_PROXY
,HTTPS_PROXY
,NO_PROXY
e os equivalentes em letra minúscula são compatíveis.Se você precisar atualizar as configurações de proxy após a instalação, atualize as variáveis de ambiente em
/var/beyondcorp/env/PROXY
se estiver usando o usuário padrãobeyondcorp
. Se estiver usando um usuário personalizado, atualize o/home/$USER/.docker/config.json
de acordo com as instruções para configurar o cliente do Docker. Para aplicar as alterações de proxy, reinicie o agente remoto usando o seguinte comando:sudo systemctl restart beyondcorp
Ferramentas de diagnóstico
run-post-install-checks
run-post-install-checks
é um script instalado em /var/beyondcorp/scripts/
que verifica se o agente remoto está instalado, registrado e íntegro corretamente. Depois de criar um app connection
e atribuí-lo a um agente remoto (conector), acesse a VM do agente remoto e execute run-post-install-checks
com o seguinte comando:
sudo /var/beyondcorp/scripts/run-post-install-checks
O script vai imprimir uma mensagem de sucesso se tudo estiver em ordem.
run-diagnostics
O run-diagnostics
é um script instalado em /var/beyondcorp/scripts/
que diagnostica problemas comuns na VM do agente remoto e gera um relatório que pode ser compartilhado com a equipe de suporte do BeyondCorp Enterprise. Para executar este script de diagnóstico, execute o seguinte comando:
sudo /var/beyondcorp/scripts/run-diagnostics
O relatório de diagnóstico é gravado no console e no ./diagnostics-report.txt
.
CLI do agente remoto
bce-connctl
é a interface de linha de comando (CLI) do administrador do agente remoto para interagir com o agente remoto localmente. Essa CLI é compatível com vários comandos, como registrar o agente remoto, verificar o status e definir valores de configuração.
Comando init
É possível usar o comando Init para inicializar o agente remoto e gerar um script para inscrevê-lo.
Exemplo:
bce-connctl init --project=$PROJECT_ID --region=$REGION --connector=$CONNECTOR_NAME
Comandos de status
É possível usar os comandos "Status" para gerenciar o status do agente remoto.
- List: use este comando para listar o status geral do agente remoto e das conexões compatíveis com ele. Exemplo:
bce-connctl status list
Comandos de configuração
Use os comandos Config para gerenciar os valores de configuração do seu agente remoto.
- List: use este comando para listar os valores de configuração do agente remoto. Exemplo:
bce-connctl config list
- Set: use este comando para definir um valor de configuração do agente remoto. Exemplo:
bce-connctl config set <key> <value>
Comandos de registro
Use os comandos de registro para gerenciar a inscrição do agente remoto.
Descrição: use este comando para saber o status de registro do agente remoto. Exemplo:
bce-connctl enrollment describe
Quando o script de registro de
bce-connctl init
for concluído e os uploads da chave pública forem concluídos, o status seráENROLLED
.
Ajuda
É possível anexar a sinalização -h
ou --help
a qualquer comando bce-connctl
para mostrar informações de uso.
bce-connctl init -h