Proteja as aplicações não pertencentes à Google Cloud através do conetor de apps

Esta página descreve como configurar e usar o conetor de apps do Chrome Enterprise Premium para proteger aplicações que não são doGoogle Cloud .

Vista geral

Pode usar o conetor de apps do Chrome Enterprise Premium para fornecer identidade e acesso sensível ao contexto a aplicações HTTPS executadas em ambientes nãoGoogle Cloud Google Workspace. O conetor de apps do Chrome Enterprise Premium é uma interface autenticada e segura entre o plano de aplicação do Chrome Enterprise Premium e as aplicações em execução noutras nuvens e ambientes no local.

Uma vantagem de usar o conector de apps do Chrome Enterprise Premium é que não precisa de abrir firewalls nem configurar ligações Cloud VPN site a site.

Arquitetura

Segue-se um diagrama de arquitetura de alto nível que representa os principais componentes do conetor de apps do Chrome Enterprise Premium.

Componentes do conetor de apps do Chrome Enterprise Premium

Os componentes do conetor de apps do Chrome Enterprise Premium são regidos por três recursos principais de API: conetores de apps, associações de apps e gateways de apps.

Conetores de apps
Um recurso de conetor define um agente remoto do conetor de apps exclusivo. Os agentes remotos do conetor de apps são implementados em ambientes empresariais remotos, como noutras nuvens e em ambientes nas instalações. Os agentes remotos iniciam e mantêm sessões de túnel para Google Cloud, recebem tráfego deGoogle Cloude retransmitem tráfego para pontos finais de aplicações remotas no mesmo ambiente.
Associações de apps
Um recurso de ligação define uma ligação lógica de Google Cloud a um ponto final de aplicação específico que é identificado através de endereço IP:Porta ou FQDN:Porta. Um recurso de ligação coordena um conjunto de gateways de conetores de apps geridas que são atribuídos a um determinado ponto final da aplicação. Os gateways são geridos em Google Cloud e terminam as sessões de túnel dos agentes remotos quando já não são necessários.
App Gateways

Um gateway de apps é uma oferta de serviços geridos pela Google. Os agentes remotos do conetor de apps estabelecem ligação a uma ou mais gateways que permitem ligações de apps e conetores de apps para retransmitir tráfego de utilizadores finais para agentes remotos. O tráfego para ligações de apps alojadas no mesmo gateway de apps é encaminhado através de uma infraestrutura virtual comum.

Quando associa uma aplicação através do conetor de apps, os gateways de apps são criados e geridos implicitamente por si. Também pode criar gateways de apps adicionais se quiser organizar os recursos de ligações de apps em grupos. Os gateways de apps oferecem a flexibilidade de agrupar ou separar as ligações de apps para permitir o isolamento de apps.

Cada gateway de apps pode suportar um máximo de até 1 Gbps no débito total para até 200 000 ligações simultâneas. Recomendamos que crie gateways dedicados para aplicações críticas que exijam um elevado desempenho. Pode atribuir um máximo de 10 apps por gateway.

Para suportar até 200 000 ligações simultâneas e um débito total de até 1 Gbps, recomendamos que use uma VM dedicada de 8 núcleos e 8 GB de memória para executar o agente remoto do conetor de apps. Por exemplo, pode dedicar 2 agentes remotos do conetor de apps num cluster de HA com 8 núcleos e 8 GB de memória cada para suportar uma aplicação Web de alto desempenho (app1.examplecompany.com) com um gateway de apps dedicado (app_gateway1). Crie outro cluster de 2 VMs, cada uma com 8 núcleos e 8 GB de memória, para suportar uma combinação de 10 apps de utilização reduzida com outro gateway de apps dedicado (app_gateway2).

Os recursos do conetor de apps, da ligação de apps e do gateway de apps são regionais. Só pode usá-los num contexto regional. Por exemplo, não pode atribuir um conetor de apps na região A a uma ligação de apps ou a um gateway de apps criado na região B.

Antes de começar

Só pode usar o conetor de apps do Chrome Enterprise Premium com aplicações HTTPS. Além disso, os balanceadores de carga HTTPS não usam a extensão Server Name Indication (SNI) para ligações ao back-end. Para mais detalhes, consulte o artigo Encriptação do equilibrador de carga para os back-ends.

Para usar o conetor de apps do Chrome Enterprise Premium, tem de ter o seguinte:

Cada agente do conetor de apps do Chrome Enterprise Premium requer uma VM Linux que esteja a executar o Docker. Recomendamos as seguintes distribuições Linux:

  • Debian 10.7 (buster)
  • Red Hat Enterprise Linux Server 7.8 (Maipo) x86_64
  • Ubuntu 16.04 ou posterior

Para o hardware da VM Linux, recomendamos um mínimo de 2 CPUs com 2 GB de RAM.

Pode configurar e ativar o conetor de apps através do gcloud e da API, ou através da Google Cloud consola. Para usar o gcloud e as APIs, conclua os seguintes passos. Para usar a Google Cloud consola, aceda a Configure o conetor de apps através da Google Cloud consola.

Configurar o Google Cloud projeto

Para configurar um Google Cloud projeto para usar com o conetor da app Chrome Enterprise Premium, tem de ativar a API Chrome Enterprise Premium. Ative a API concluindo os seguintes passos:

CLI gcloud

Antes de concluir os seguintes passos, certifique-se de que tem o SDK da CLI gcloud instalado.

  1. Defina a variável de ambiente necessária executando o seguinte comando:

    PROJECT_ID=my-project
    

    Substitua my-project pelo Google Cloud ID do projeto.

  2. Execute o seguinte comando para ativar a API:

    gcloud config set project $PROJECT_ID
    gcloud services enable beyondcorp.googleapis.com
    

API

  1. Obtenha um token de acesso e defina as variáveis de ambiente e os alias necessários executando os seguintes comandos:

    PROJECT_NUMBER=my-project-number
    ACCESS_TOKEN=my-access-token
    

    Substitua my-project pelo Google Cloud ID do projeto.

  2. Configure um alias conveniente para usar o seu token de acesso:

    alias gcurl="curl -H 'Authorization: Bearer ${ACCESS_TOKEN}' -H 'Content-Type: application/json'"
    

  3. Execute o seguinte comando para ativar a API:

    gcurl https://serviceusage.googleapis.com/v1/projects/${PROJECT_NUMBER}/services/beyondcorp.googleapis.com:enable -d "{}"
    

Instalar um agente remoto do conetor de apps

Tem de implementar uma VM do agente remoto do conetor de apps para cada ambiente de rede que albergue uma aplicação que quer proteger com o Chrome Enterprise Premium. Tem de ter uma VM dedicada ou qualquer servidor Bare Metal com o Docker instalado para cada agente remoto que criar.

Para criar um agente remoto, conclua os seguintes passos:

  1. Crie uma instância de VM no ambiente da sua aplicação.
    1. Certifique-se de que a 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 do IAP-TCP 35.235.240.0/20. Consulte o artigo Validar a configuração da firewall para outros domínios para os quais a firewall da VM do agente remoto deve permitir tráfego de saída.
  2. Instale o agente remoto:

    1. Verifique se o DNS está configurado corretamente e se consegue aceder à aplicação através do comando curl.
    2. Instale o Docker Engine.
      1. Opcional: se estiver a usar um proxy, verifique se o daemon do Docker está configurado corretamente.
    3. Opcional: se estiver a usar um proxy, verifique se as variáveis de ambiente do proxy HTTP e HTTPS estão definidas e a usar o esquema http://.
    4. Execute o seguinte comando na VM do agente remoto para instalar o agente remoto:
      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
      
    5. Para adicionar o alias bce-connctl à sua shell, execute o seguinte comando:
       source ~/.bce_alias
       
    6. Defina as variáveis de ambiente necessárias executando os seguintes comandos:

      PROJECT_ID=my-project
      REGION=us-central1
      CONNECTOR_NAME=my-connector
      
      Substitua o seguinte:

      • my-project: o Google Cloud ID do projeto.
      • us-central1: a região na qual implementar a ligação e os gateways.
      • my-connector: o nome do conetor.
    7. Inscreva o conetor com um dos seguintes tipos de credenciais:

    Conta de serviço

    1. Inscreva o conetor executando o seguinte comando na CLI bce-connctl:

      bce-connctl init --project=$PROJECT_ID --region=$REGION --connector=$CONNECTOR_NAME
      

    2. Siga as instruções no ecrã para copiar e colar o script de inscrição nos seus Google Cloud projetos através do Cloud Shell ou da CLI gcloud e conclua a inscrição do conetor. Para executar o script de inscrição, tem de ter autorizações de Owner no projeto.

      Quando o script de inscrição estiver concluído, o tempo de execução sincroniza automaticamente a configuração do conector.

    Identidade federada

    1. Siga o guia de federação de identidades da carga de trabalho para conceder à sua identidade externa acesso a Google Cloud através da simulação da conta de serviço.
    2. Transfira a configuração da biblioteca de cliente e coloque o ficheiro na VM do agente remoto em /var/beyondcorp/credentials/credentials.json.
      1. Se estiver a usar uma instância do AWS EC2 como VM do agente remoto, faça uma das seguintes ações:
        1. Torne o IMDSv2 opcional na instância EC2.
        2. Adicione a seguinte linha ao objeto credential_source no ficheiro de configuração da biblioteca de cliente:
          "imdsv2_session_token_url": "http://169.254.169.254/latest/api/token"
          
    3. 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
      
    4. Execute o seguinte comando para reiniciar o agente e fazer com que este recolha as credenciais:
      sudo systemctl restart beyondcorp
      
    5. No seu ponto final 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 o seguinte:
      • my-service-account: a Google Cloud conta de serviço associada à identidade externa.
    6. Conceda à conta de serviço a função BeyondCorp Connection Agent executando o seguinte comando: Google Cloud

      gcloud projects add-iam-policy-binding $PROJECT_ID \
          --member="serviceAccount:$SERVICE_ACCOUNT" \
          --role="roles/beyondcorp.connectionAgent"
      
    7. Execute o seguinte comando para criar o recurso do conetor de apps Google Cloud .

      gcloud alpha beyondcorp app connectors create $CONNECTOR_NAME \
          --project=$PROJECT_ID \
          --location=$REGION \
          --member="serviceAccount:$SERVICE_ACCOUNT" \
          --display-name=$CONNECTOR_NAME
      

      Depois de criar o recurso do conetor de apps, o tempo de execução do agente remoto sincroniza automaticamente a configuração do conetor.

  3. Valide a instalação do agente remoto:

    1. Execute o seguinte comando para garantir que o serviço está em execução:
      sudo systemctl status beyondcorp
      
    2. O agente remoto consiste em três contentores Docker: bce-control-runtime, bce-logagent e bce-connector. Verifique se todos os três contentores estão em execução através do seguinte comando:
      docker ps --filter name=bce
      
    3. Opcional: pode verificar os ficheiros de registo dos contentores do Docker executando o seguinte comando:
      docker logs -f CONTAINER_NAME
      
      Substitua CONTAINER_NAME pelo nome do contentor Docker.

Ligar uma aplicação remota a uma VPC

CLI gcloud

Antes de concluir os passos seguintes, certifique-se de que tem o SDK da CLI gcloud instalado e que tem sessão iniciada com uma conta que tenha a função beyondcorp.admin.

  1. Defina as variáveis de ambiente necessárias executando os seguintes comandos:

    CONNECTOR_NAME=my-connector
    CONNECTION_NAME=my-connection
    PROJECT_ID=my-project
    REGION=us-central1
    APP_ENDPOINT=APP_HOST:APP_PORT
    

    Substitua o seguinte:

    • my-connector: o nome do conetor, definido num passo anterior.
    • my-connection: um nome exclusivo para a associação.
    • my-project: o Google Cloud ID do projeto.
    • us-central1: a região na qual implementar a ligação e os gateways.
    • APP_HOST: o endereço IP no local ou um FQDN que aloja a sua aplicação.
    • APP_PORT: o número da porta para estabelecer ligação à sua aplicação.
  2. Para criar uma ligação entre a sua aplicação e a sua 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
    

    Tenha em atenção que este passo pode demorar vários minutos a ser concluído.

  3. Depois de criar a associação, execute os seguintes comandos para obter 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 conetor de apps do Chrome Enterprise Premium usa o Private Service Connect para associar o projeto do consumidor aos recursos geridos em projetos geridos pela Google.

API

  1. Defina as variáveis de ambiente necessárias executando os seguintes comandos:

    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 o seguinte:

    • my-connector: o nome do conetor, definido num passo anterior.
    • my-connection: um nome exclusivo para a associação.
    • my-project: o Google Cloud ID do projeto.
    • us-central1: a região na qual implementar a ligação e os gateways.
    • my-app-host: o endereço IP no local ou um FQDN que aloja a sua aplicação.
    • my-app-port: o número da porta para estabelecer ligação à sua aplicação.
  2. Para criar uma ligação entre a sua aplicação e a sua 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}' \
    }"
    

    Tenha em atenção que este passo pode demorar vários minutos a ser concluído.

  3. Depois de criar a associação, execute os seguintes comandos para obter 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 conetor de apps do Chrome Enterprise Premium usa o Private Service Connect para associar o projeto do consumidor aos recursos geridos em projetos geridos pela Google.

Configurar um balanceador de carga de aplicações externo

Só pode associar aplicações HTTPS a um Application Load Balancer externo. As aplicações HTTP não são suportadas.

CLI gcloud

Antes de concluir os passos seguintes, certifique-se de que tem o SDK da CLI gcloud instalado e que tem sessão iniciada com uma conta que tenha a função beyondcorp.admin.

  1. Defina as variáveis de ambiente necessárias executando os seguintes comandos:

    LB_PREFIX=web-app
    PROJECT_ID=my-project
    REGION=us-central1
    DOMAIN_NAME=app.example.com
    
    Substitua o seguinte:

    • web-app: o prefixo anexado aos nomes de todos os recursos do balanceador de carga.
    • my-project: o Google Cloud ID do projeto.
    • us-central1: a região na qual a ligação e os gateways vão ser implementados.
    • app.example.com: o nome de domínio da sua aplicação.
  2. Crie um grupo de pontos finais de rede (NEG) com 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
    

    Sinalizadores opcionais:

    • Defina a flag --network para especificar o nome da rede para os pontos finais de rede no NEG. Se não for especificado, é usada a rede do projeto predefinido.
    • Defina a flag --subnet para especificar o nome da sub-rede para os pontos finais de rede no NEG. Se não for especificado, o ponto final de rede pode pertencer a qualquer sub-rede na região onde o grupo de pontos finais de rede é criado.
  3. Crie um serviço de back-end baseado num NEG e associe-o a uma associação 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
    
  4. Crie um certificado gerido pela Google para o 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)')"
    
  5. Crie um Application Load Balancer externo com base no back-end do passo 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
    

    Depois de criar o Application Load Balancer externo, a sua aplicação fica acessível através da Internet através desse endereço IP.

  6. Depois de criar o Application Load Balancer externo, tem de associar o respetivo endereço IP ao nome do domínio para que o Google Cloud possa aprovisionar um certificado SSL. Use as instruções do seu fornecedor de DNS para saber como associar o endereço IP ao nome DNS. Execute o seguinte comando para verificar o estado do aprovisionamento:

    1. Mostrar o endereço IP a configurar no fornecedor de DNS:
      echo "Load Balancer ip address - $LB_IP"
      
    2. Depois de definir o DNS, verifique se o nome do domínio é resolvido para o endereço IP executando o seguinte comando:
      dig $DOMAIN_NAME
      
    3. Execute o seguinte comando para obter o estado de aprovisionamento:
    gcloud compute ssl-certificates describe $LB_PREFIX-ssl-cert \
        --global \
        --format="get(name,managed.status, managed.domainStatus)"
    

    Depois de o certificado SSL ser aprovisionado, deve conseguir aceder à sua aplicação através do nome DNS.

API

  1. Defina as variáveis de ambiente necessárias executando os seguintes comandos:

    LB_PREFIX=web-app
    PROJECT_ID=my-project
    REGION=us-central1
    DOMAIN_NAME=app.example.com
    
    Substitua o seguinte:

    • web-app: o prefixo anexado aos nomes de todos os recursos do balanceador de carga.
    • my-project: o Google Cloud ID do projeto.
    • us-central1: a região na qual a ligação e os gateways vão ser implementados.
    • app.example.com: o nome de domínio da sua aplicação.
  2. Crie um grupo de pontos finais de rede (NEG) com 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 pontos finais da rede no NEG. Se não for especificado, é usada a rede do projeto predefinido.
    • Defina o campo subnetwork para especificar o URL da sub-rede para os pontos finais de rede no NEG. Se não for especificado, o ponto final de rede pode pertencer a qualquer sub-rede na região onde o grupo de pontos finais de rede é criado.
  3. Crie um serviço de back-end baseado num NEG e associe-o a uma associação 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' \
        }] \
    }"
    
  4. Crie um certificado gerido pela Google para o 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')
    
  5. Crie um Application Load Balancer externo com base no back-end do passo 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' \
    }"
    

    Depois de criar o Application Load Balancer externo, a sua aplicação fica acessível através da Internet através desse endereço IP.

  6. Depois de criar o Application Load Balancer externo, tem de associar o respetivo endereço IP ao nome do domínio para que o Google Cloud possa aprovisionar um certificado SSL. Use as instruções do seu fornecedor de DNS para saber como associar o endereço IP ao nome DNS. Execute o seguinte comando para verificar o estado do aprovisionamento:

    1. Mostrar o endereço IP a configurar no fornecedor de DNS:
      echo "Load Balancer ip address - $LB_IP"
      
    2. Depois de definir o DNS, verifique se o nome do domínio é resolvido para o endereço IP executando o seguinte comando:
      dig $DOMAIN_NAME
      
    3. Execute o seguinte comando para obter o estado de aprovisionamento:
    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[]')
    

    Depois de o certificado SSL ser aprovisionado, deve conseguir aceder à sua aplicação através do nome DNS.

Ativar o Identity-Aware Proxy

Siga a documentação do Identity-Aware Proxy (IAP) para configurar o Identity-Aware Proxy. Depois de configurar a IAP, ative-a para o serviço de back-end concluindo os seguintes passos:

  1. Aceda à página de CNA:
    CNA

  2. Em RECURSOS HTTPS, encontre $LB_PREFIX-backend-service. Para ativar a IAP para este recurso, clique no botão na coluna IAP. Na janela Ativar IAP apresentada, selecione a caixa de verificação para confirmar os requisitos de configuração deste recurso e clique em ATIVAR para confirmar que quer que o IAP proteja o seu recurso.

  3. Para permitir que os utilizadores acedam à sua aplicação, tem de lhes conceder a função Utilizador da app Web protegida pelo IAP para o projeto, concluindo os seguintes passos:

    1. Selecione a caixa de verificação $LB_PREFIX-backend-service.
    2. No painel de informações, selecione ADICIONAR PRINCIPAL e, de seguida, introduza os endereços de email dos grupos ou indivíduos que devem ter acesso à sua aplicação.
    3. Na lista pendente Selecionar uma função, selecione Cloud IAP > Utilizador da app Web protegida pelo IAP e, de seguida, clique em Guardar.

A sua aplicação no local deve estar agora publicada na Internet e protegida pelo Chrome Enterprise Premium.

Configure o conetor de apps através da Google Cloud consola

Conclua os procedimentos nesta secção para implementar o conetor de apps do Chrome Enterprise Premium através da Google Cloud consola.

Introduza os detalhes da sua candidatura

Adicione os detalhes da sua aplicação concluindo os seguintes passos:

  1. Na Google Cloud consola, aceda à página de CNAs.
    Aceder a CNA

  2. Clique no botão ASSOCIAR NOVA APLICAÇÃO e, de seguida, selecione Associar através do conector de apps.

  3. Em Nome da aplicação, introduza o nome da aplicação que quer proteger.

  4. Para o URL da aplicação externa, introduza um URL acessível publicamente para os seus utilizadores acederem à sua aplicação.

  5. Clicar em Seguinte.

Configure a ligação a Google Cloud

Conclua os passos seguintes para estabelecer a conetividade entre o Google Cloud e o seu ambiente nãoGoogle Cloud .

  1. Clique no botão CRIAR CONECTOR DE APPS e introduza as seguintes informações:

    • Nome do conetor de apps: um nome para o conetor.
    • Região: a região na qual implementar os gateways de ligação e o conetor.
  2. Clique no botão CRIAR.

  3. Siga as instruções no painel Aprovisione uma máquina virtual para implementar o agente remoto na sua VM.

  4. Clique no botão TESTAR ESTADO DA LIGAÇÃO para testar a ligação.

  5. Configure o conetor que criou no passo anterior introduzindo as seguintes informações em Onde é que o Google Cloud pode encontrar a sua aplicação?:

    • Nome de anfitrião interno: o endereço IP no local ou o FQDN que aloja a sua aplicação.
    • Porta: o número da porta para estabelecer ligação à sua aplicação.

Conceda acesso à sua aplicação (opcional)

  1. Para Novos membros, introduza um ou mais dos seguintes elementos:

    • Email da Conta Google: user@gmail.com
    • Grupo Google: admins@googlegroups.com
    • Conta de serviço: server@example.gserviceaccount.com
    • Domínio do Google Workspace: example.com
    • qualquer pessoa: introduza allUsers para conceder acesso a todos os utilizadores
    • Todas as Contas Google: allAuthenticatedUsers para conceder acesso a qualquer utilizador com sessão iniciada numa Conta Google
  2. Selecione um ou mais níveis de acesso e, de seguida, clique em SEGUINTE.

Publique a sua aplicação

  1. Para publicar a sua aplicação, clique no botão PUBLICAR A APLICAÇÃO DE FORMA SEGURA.

  2. Depois de publicar a aplicação e receber a confirmação Aplicação publicada em segurança, tem de criar um registo DNS para direcionar o URL da aplicação externa para o endereço IP do proxy. Conclua os seguintes passos:

    • Na secção PASSO 2 – Atualize o DNS, copie o endereço IP do campo Endereço IP. Use o endereço para criar um registo DNS seguindo as instruções do seu fornecedor DNS sobre como associar o endereço IP ao nome DNS.
  3. Depois de criar o registo DNS, teste-o clicando no botão TESTAR. Deve receber uma confirmação de que o teste de DNS foi aprovado.

  4. Clique em CONCLUIR.

Ative a IAP

  1. Aceda à página de CAsI.
    Aceder a CNA

  2. Na lista de recursos, localize a sua aplicação e, em seguida, selecione o botão na coluna IAP.

  3. Na caixa de diálogo Ativar IAP apresentada, selecione a caixa de verificação Li os requisitos de configuração e configurei o meu serviço de back-end de acordo com a documentação. e, de seguida, clique em ATIVAR.

A sua aplicação no local deve estar agora publicada na Internet e protegida pelo Chrome Enterprise Premium.

Crie um gateway de apps (opcional)

Os gateways de apps são criados e geridos implicitamente quando associa uma aplicação através do conetor de apps. Também pode criar as suas próprias gateways de apps para organizar recursos de ligações de apps em grupos. O tráfego das associações de apps alojadas em gateways de apps diferentes é encaminhado através de uma infraestrutura virtual separada.

Para criar e especificar um gateway de apps, conclua os seguintes passos.

CLI gcloud

  1. 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 o seguinte:

    • CONNECTOR_NAME: o nome do conetor, definido num passo anterior.
    • CONNECTION_NAME: um nome exclusivo para a associação.
    • GATEWAY_NAME: o nome do gateway da app.
    • PROJECT_ID: o Google Cloud ID do projeto.
    • REGION: a região na qual implementar o gateway de apps, como us-central1.
    • APP_HOST: o endereço IP no local ou um FQDN que aloja a sua aplicação.
    • APP_PORT: o número da porta para estabelecer ligação à sua aplicação.
  2. Execute o seguinte comando para criar um gateway de apps:

    gcloud beta beyondcorp app gateways create $GATEWAY_NAME \
    --project=$PROJECT_ID --location=$REGION --display-name=$GATEWAY_NAME
    
  3. Especifique um gateway de apps numa chamada de criação de associaçã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

  1. 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 o seguinte:

    • CONNECTOR_NAME: o nome do conetor, definido num passo anterior.
    • CONNECTION_NAME: um nome exclusivo para a associação.
    • GATEWAY_NAME: o nome do gateway da app.
    • PROJECT_ID: o Google Cloud ID do projeto.
    • REGION: a região na qual implementar o gateway de apps, como us-central1.
    • APP_HOST: o endereço IP no local ou um FQDN que aloja a sua aplicação.
    • APP_PORT: o número da porta para estabelecer ligação à sua aplicação.
  2. Execute o seguinte comando para criar um gateway de apps:

    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}' \
    }"
    
  3. Especifique um gateway de apps numa chamada de criação de associaçã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}' \
    

Passos seguintes

Resolução de problemas

Não é possível encontrar recursos criados anteriormente

Quando usar a versão 392.0.0 ou posterior da CLI gcloud, use os novos recursos predefinidos do conetor de apps AppConnector e AppConnection. Por exemplo, gcloud alpha beyondcorp app connectors e gcloud alpha beyondcorp app connections referem-se aos novos recursos.

Para aceder a recursos antigos criados com uma versão da CLI gcloud anterior à versão 392.0.0, use a palavra-chave legacy. Por exemplo, gcloud alpha beyondcorp app legacy connectors e gcloud alpha beyondcorp app legacy connections referem-se aos recursos antigos.

As configurações que usam recursos antigos continuam a funcionar por agora, mas vão ser descontinuadas no futuro.

  • Siga os procedimentos neste guia para configurar novos recursos.
  • Se a sua configuração usar recursos antigos, use a palavra-chave legacy para localizar esses recursos e removê-los. Recrie os recursos seguindo os procedimentos neste documento.
  • Se tiver uma configuração incompleta que use recursos antigos, use a palavra-chave legacy para localizar esses recursos e removê-los. 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 de TLS/SSL semelhantes e não redireciona para a página de início de sessão.

  • Valide o estado dos certificados na Google Cloud página de detalhes do equilibrador de carga.

    NOTA: o aprovisionamento de um certificado gerido pela Google pode demorar até 60 minutos.

TLS error

O navegador apresenta 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 após o redirecionamento para a página de início de sessão.

  • Verifique se o ponto final da aplicação usado na ligação é HTTPS.
  • Verifique se o ponto final da app está acessível a partir da VM do agente remoto através do curl:

    curl https://$APP_ENDPOINT
    

    Pode ter de usar a flag -k se o certificado da aplicação for autoassinado.

Valide a configuração da firewall

Certifique-se de que as firewalls entre o agente remoto e a Internet permitem ligações de saída aos seguintes domínios:

Tipo de ligação Domínio Porta
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

Altere os conetores associados a uma ligação

gcloud

  1. 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 o seguinte:

    • my-connector: o nome do conetor. Também pode ser uma lista separada por vírgulas, como connector1,connector2.
    • my-connection: o nome da associação a atualizar.
    • us-central1: a região na qual a associação está implementada.
    • my-project: o Google Cloud ID do projeto.
  2. Para alterar os conetores associados a uma ligação, execute o seguinte comando:

    gcloud alpha beyondcorp app connections update $CONNECTION_NAME \
        --project=$PROJECT_ID \
        --location=$REGION \
        --connectors=$CONNECTOR_NAME
    

API

  1. 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 o seguinte:

    • my-connector: o nome do conetor.
    • my-connection: o nome da associação a ser atualizada.
    • us-central1: a região na qual a associação está implementada.
    • my-project: o Google Cloud ID do projeto.
  2. Para alterar os conetores associados a uma ligaçã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}'], \
    }"
    

    Pode validar a atualização executando o seguinte comando e verificando o campo connectors da saída:

    gcurl https://beyondcorp.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/appConnections/${CONNECTION_NAME}
    

Proxy

O suporte de proxies foi introduzido no início de 2024 e requer alterações ao ficheiro systemd do BeyondCorp. Se instalou o agente remoto antes desta hora e quiser usar um proxy, reinstale o agente remoto.

  • Verifique 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 a usar o esquema http://. O esquema https:// e outros esquemas não são suportados.

  • Verifique se as variáveis de ambiente do proxy são exportadas para subprocessos executando o comando env.

  • Apenas são suportados os caracteres HTTP_PROXY, HTTPS_PROXY, NO_PROXY e os respetivos equivalentes em letras minúsculas.

  • Se precisar de atualizar as definições de proxy após a instalação, atualize as variáveis de ambiente no /var/beyondcorp/env/PROXY se estiver a usar o utilizador beyondcorp predefinido. Se estiver a usar um utilizador personalizado, atualize /home/$USER/.docker/config.json de acordo com as instruções para configurar o cliente Docker. Para aplicar as alterações de proxy, reinicie o agente remoto com o seguinte comando:

    sudo systemctl restart beyondcorp
    

Ferramentas de diagnóstico

run-post-install-checks

run-post-install-checks é um script instalado no /var/beyondcorp/scripts/ que verifica se o agente remoto está corretamente instalado, inscrito e em bom estado. Depois de criar com êxito um app connection e atribuí-lo a um agente remoto (conetor), aceda à VM do agente remoto e execute run-post-install-checks com o seguinte comando:

sudo /var/beyondcorp/scripts/run-post-install-checks

O script imprime uma mensagem de êxito se tudo estiver em ordem.

run-diagnostics

run-diagnostics é um script instalado em /var/beyondcorp/scripts/ que diagnostica problemas comuns na VM do agente remoto e imprime um relatório que pode partilhar com a equipa de apoio técnico do Chrome Enterprise Premium. Para executar este script de diagnóstico, execute o seguinte comando:

sudo /var/beyondcorp/scripts/run-diagnostics

O relatório de diagnósticos é escrito na consola e em ./diagnostics-report.txt

CLI do agente remoto

bce-connctl é a interface de linhas de comando (CLI) do administrador do agente remoto para interagir com o agente remoto localmente. Esta CLI suporta vários comandos, como para inscrever o agente remoto, verificar o estado e definir valores de configuração.

Comando Init

Pode usar o comando Init para inicializar o agente remoto e gerar um script para inscrever o agente.

Exemplo:

bce-connctl init --project=$PROJECT_ID --region=$REGION --connector=$CONNECTOR_NAME

Comandos de estado

Pode usar os comandos de estado para gerir o estado do agente remoto.

  • List: use este comando para apresentar o estado geral do agente remoto, bem como o estado de quaisquer ligações suportadas por este agente. Exemplo: bce-connctl status list

Comandos de configuração

Pode usar os comandos de configuração para gerir 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 inscrição

Pode usar os comandos de inscrição para gerir a inscrição do agente remoto.

  • Describe: use este comando para obter o estado de inscrição do agente remoto. Exemplo: bce-connctl enrollment describe

    Quando o script de inscrição de bce-connctl init é concluído com êxito e a chave pública é carregada com êxito, o estado é ENROLLED.

Ajuda

Pode anexar a flag -h ou --help a qualquer comando bce-connctl para imprimir informações de utilização.

bce-connctl init -h