Acesso seguro a aplicações Web privadas

Este documento descreve como configurar um gateway seguro do Chrome Enterprise Premium para proteger o acesso às suas aplicações Web privadas.

Um gateway seguro do Chrome Enterprise Premium funciona como um proxy de encaminhamento, aplicando uma estrutura de acesso de confiança zero e oferecendo um controlo detalhado e sensível ao contexto sobre quem acede às suas aplicações Web privadas.

Como funciona a proteção do acesso a aplicações Web privadas

Ao estabelecer um túnel seguro e aplicar políticas de acesso sensível ao contexto, o gateway seguro mantém as aplicações privadas e protegidas da exposição à Internet pública. Uma configuração do navegador do lado do cliente direciona o tráfego para estas aplicações através do ponto final do proxy de gateway seguro. Em seguida, o gateway seguro aplica a política de acesso relevante e, se permitido, encaminha o pedido para a aplicação de destino.

O gateway seguro pode proteger aplicações Web privadas alojadas nos seguintes ambientes:

  • Google Cloud project: o gateway seguro pode direcionar o acesso a aplicações que estão a ser executadas na sua Google Cloud rede VPC.

  • NãoGoogle Cloud (centros de dados no local ou outras nuvens): primeiro, tem de estabelecer uma ligação entre a sua rede de VPC privada noGoogle Cloud e a rede nãoGoogle Cloud . Isto é feito normalmente através do Cloud VPN ou do Cloud Interconnect. Em seguida, o gateway seguro usa a ligação para enviar o tráfego para a sua rede da VPC privada, que, por sua vez, o encaminha para o ambiente nãoGoogle Cloud .

Antes de começar

Antes de configurar o gateway seguro, verifique se tem o seguinte:

Configure o ambiente shell

Para simplificar o processo de configuração e interagir com as APIs de gateway seguro, defina as seguintes variáveis de ambiente na sua shell de trabalho.

  • Parâmetros gerais

    API="beyondcorp.googleapis.com"
    API_VERSION=v1
    PROJECT_ID=MY_PROJECT_ID

    Substitua o seguinte:

    • MY_PROJECT_ID: o ID do projeto onde o gateway seguro é criado.
  • Parâmetros do gateway seguro

    SECURITY_GATEWAY_ID=MY_SECURITY_GATEWAY_ID
    SECURITY_GATEWAY_DISPLAY_NAME="MY_SECURITY_GATEWAY_DISPLAY_NAME"

    Substitua o seguinte:

    • MY_SECURITY_GATEWAY_ID: o ID do gateway seguro que quer criar. O ID pode ter até 63 carateres e pode conter letras minúsculas, números e hífenes. O primeiro caráter tem de ser uma letra e o último caráter pode ser uma letra ou um número.
    • MY_SECURITY_GATEWAY_DISPLAY_NAME: O nome legível por humanos do gateway seguro. O nome pode ter até 63 carateres e incluir carateres imprimíveis.

Crie um gateway seguro

Um gateway seguro do Chrome Enterprise Premium é uma base fundamental para estabelecer ligações seguras às suas aplicações.

gcloud

gcloud beta beyondcorp security-gateways create ${SECURITY_GATEWAY_ID} \
  --project=${PROJECT_ID} \
  --location=global \
  --display-name="${SECURITY_GATEWAY_DISPLAY_NAME}"
      

REST

curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-X POST \
-d '{ "display_name": "MY_SECURITY_GATEWAY_DISPLAY_NAME" }' \
"https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways?security_gateway_id=${SECURITY_GATEWAY_ID}"
      

Configure uma aplicação Web privada

Antes de poder definir recursos de aplicações específicos no gateway seguro, tem de configurar as autorizações e as definições de rede necessárias para ativar a conetividade e o encaminhamento adequado.

Conceda autorizações à conta de serviço

Para enviar tráfego com êxito para a sua rede VPC, o gateway de segurança precisa de determinadas autorizações da IAM concedidas à respetiva conta de serviço de delegação. Isto permite que o gateway seguro alcance as suas aplicações privadas, quer estejam alojadas numa Google Cloud VPC ou num ambiente nãoGoogle Cloud ligado através do Cloud VPN ou do Cloud Interconnect.

  1. Obtenha os detalhes da sua gateway segura para identificar o email da conta de serviço de delegação. O email está no campo delegatingServiceAccount da resposta.

    gcloud

    gcloud beta beyondcorp security-gateways describe ${SECURITY_GATEWAY_ID} \
       --project=${PROJECT_ID} \
       --location=global
                   

    REST

    curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}"
                   
  2. Defina variáveis de ambiente para a conta de serviço e o projeto de VPC de destino.
    DELEGATING_SERVICE_ACCOUNT="security-gateway@my-gateway-service-account.iam.gserviceaccount.com" # Replace with actual value
          
  3. Conceda a função roles/beyondcorp.upstreamAccess do IAM à conta de serviço de delegação no seu projeto de VPC privada.
    gcloud projects add-iam-policy-binding PRIVATE_VPC_PROJECT_ID \
       --role=roles/beyondcorp.upstreamAccess \
       --member=serviceAccount:${DELEGATING_SERVICE_ACCOUNT}
        
    Substitua PRIVATE_VPC_PROJECT_ID pelo ID do projeto da rede da VPC onde a app Web privada está implementada ou onde o Cloud VPN/Interconnect está configurado.

Aguarde aproximadamente dois minutos para que a política de gestão de identidade e de acesso entre em vigor depois de conceder a função.

Configure o encaminhamento de rede e as regras de firewall

Para permitir que o tráfego do gateway seguro alcance as suas aplicações Web privadas, configure regras de firewall, encaminhamento de rede e definições de DNS.

Regras de firewall para aplicações em Google Cloud

Se a sua aplicação Web privada estiver alojada na sua Google Cloud rede VPC, como numa VM do Compute Engine, num serviço do Google Kubernetes Engine com um IP interno ou atrás de um balanceador de carga TCP/UDP interno, configure as Google Cloud regras de firewall da VPC. Isto permite o tráfego TCP de entrada dos intervalos de IP do gateway seguro: 34.158.8.0/21 e 136.124.16.0/20.

Regras de firewall para aplicações em ambientes nãoGoogle Cloud

Se a sua aplicação Web privada residir num centro de dados nas instalações ou na rede de outro fornecedor de nuvem e estiver ligada à sua VPC através do Cloud VPN ou do Cloud Interconnect, configure regras de firewall na sua firewall nas instalações ou nos controlos de segurança de rede equivalentes, como grupos de segurança e ACLs de rede, no outro ambiente de nuvem. Google CloudIsto permite o tráfego TCP de entrada dos intervalos de IPs do gateway seguro.

Configure o encaminhamento de ambientes nãoGoogle Cloud para um gateway seguro

Para facilitar a comunicação bidirecional para aplicações privadas alojadas em ambientes que não sejam daGoogle Cloud , como no local ou noutras nuvens, a sua rede externa tem de criar um caminho de retorno para os seguintes intervalos de IP seguros: 34.158.8.0/21 e 136.124.16.0/20.

Verifique se a sua rede privada consegue alcançar os intervalos de IPs do gateway seguro através do Cloud VPN ou do Cloud Interconnect:

  • Encaminhamento dinâmico: se estiver a usar o encaminhamento dinâmico, como o protocolo de gateway de fronteira (BGP) com o Cloud Router, verifique se o Cloud Router anuncia Google Cloud explicitamente intervalos de IP de gateway seguro ao seu dispositivo BGP no local. Embora o BGP troque dinamicamente muitas rotas, os intervalos de IP do gateway seguro requerem publicidade explícita.

  • Encaminhamento estático: se estiver a usar rotas estáticas, tem de adicionar manualmente rotas para cada um dos intervalos de IP do gateway seguro no equipamento de rede no local, como o router ou a firewall. Estas rotas estáticas têm de especificar que o tráfego destinado aos intervalos de IP do gateway seguro tem de ser enviado através da ligação do Cloud VPN ou do Cloud Interconnect.

    Quando usar o encaminhamento estático, a Cloud VPN tem de estar numa das seguintes regiões suportadas:

    • africa-south1
    • asia-east1
    • asia-south1
    • asia-south2
    • asia-southeast1
    • europe-central2
    • europe-north1
    • europe-southwest1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
    • europe-west8
    • europe-west9
    • northamerica-northeast1
    • northamerica-northeast2
    • northamerica-south1
    • southamerica-east1
    • southamerica-west1
    • us-central1
    • us-east1
    • us-east4
    • us-east5
    • us-west1

Configuração de DNS para a resolução de nomes de anfitrião privados do gateway seguro

Para que o gateway seguro resolva os nomes de anfitrião da sua aplicação privada, a sua rede VPC tem de conseguir resolver os nomes de anfitrião através do Cloud DNS.Google Cloud A configuração específica do Cloud DNS depende de onde os seus registos de DNS privados estão alojados de forma autorizada:

  • Aplicações em Google Cloud que usam zonas privadas do Cloud DNS: Se as suas aplicações privadas estiverem alojadas no Google Cloud e os respetivos registos de DNS forem geridos em zonas privadas do Cloud DNS associadas à sua rede VPC, verifique se as zonas estão corretamente configuradas e acessíveis. O gateway seguro usa as capacidades de resolução do Cloud DNS existentes da sua VPC.

  • Aplicações em ambientes nãoGoogle Cloud ou que usam servidores DNS externos: se as suas aplicações privadas estiverem em ambientes nãoGoogle Cloud(no local ou noutras nuvens) ou se os respetivos registos DNS forem geridos por servidores DNS externos às zonas privadas do Cloud DNS da sua VPC, tem de configurar o Cloud DNS para encaminhar consultas para estes domínios privados. Normalmente, isto envolve a criação de zonas de encaminhamento do Cloud DNS na sua VPC. Estas zonas direcionam as consultas DNS para os seus domínios privados especificados para os seus servidores DNS privados autoritários, como no local ou noutras nuvens.

Para instruções detalhadas sobre a configuração de DNS, consulte o artigo Crie uma zona de encaminhamento.

Crie um recurso de aplicação

Para fornecer acesso a uma aplicação Web privada, tem de estabelecer a aplicação na estrutura de gateway seguro criando um recurso de aplicação. Este recurso define como o gateway seguro identifica o tráfego da sua aplicação (com base no nome de anfitrião) e para onde encaminhar esse tráfego.

  1. Defina as variáveis de ambiente necessárias executando o seguinte comando:
       APPLICATION_ID=MY_APPLICATION_ID
       APP_DISPLAY_NAME="MY_APP_DISPLAY_NAME"
       HOST_NAME=MY_HOST_NAME
       PRIVATE_NETWORK_RESOURCE_NAME=MY_PRIVATE_NETWORK_RESOURCE_NAME
       
    Substitua o seguinte:
    • MY_APPLICATION_ID: um ID exclusivo para o recurso de aplicação.
    • MY_APP_DISPLAY_NAME: o nome legível para apresentação.
    • MY_HOST_NAME: o nome do anfitrião principal ao qual os utilizadores acedem (por exemplo, private.local).
    • MY_PRIVATE_NETWORK_RESOURCE_NAME: O nome completo do recurso da rede VPC (por exemplo, projects/my-project/global/networks/my-network).
  2. Crie o recurso da aplicação.

    gcloud

    Execute o seguinte comando para criar o recurso da aplicação.

    gcloud beta beyondcorp security-gateways applications create ${APPLICATION_ID} \
      --project=${PROJECT_ID} \
      --security-gateway=${SECURITY_GATEWAY_ID} \
      --location=global \
      --display-name="${APP_DISPLAY_NAME}" \
      --endpoint-matchers="hostname=${HOST_NAME},ports=[443]" \
      --upstreams=network=name="${PRIVATE_NETWORK_RESOURCE_NAME}"
            

    Para especificar uma região de saída (por exemplo, quando usar rotas estáticas), adicione a flag --egress-regions:

    gcloud beta beyondcorp security-gateways applications create ${APPLICATION_ID} \
      --project=${PROJECT_ID} \
      --security-gateway=${SECURITY_GATEWAY_ID} \
      --location=global \
      --display-name="${APP_DISPLAY_NAME}" \
      --endpoint-matchers="hostname=${HOST_NAME},ports=[443]" \
      --upstreams=network=name="${PRIVATE_NETWORK_RESOURCE_NAME}",egressPolicy=regions=us-central1
            

    Substitua us-central1 pela Google Cloud região (como europe-west1 ou asia-northeast1) que se alinha com a sua configuração de encaminhamento estático regional. Se não tiver requisitos de encaminhamento estático regionais específicos, pode omitir a política de saída da sua configuração.

    REST

    Para criar um recurso de aplicação com a API, conclua os seguintes passos:

    1. Cria um ficheiro com o nome application.json.

      {
      "display_name": "MY_APP_DISPLAY_NAME",
      "endpoint_matchers": [
         {"hostname": "MY_HOST_NAME", "ports": [443]}
      ],
      "upstreams": [{
         "network": {
            "name": "MY_PRIVATE_NETWORK_RESOURCE_NAME"
         }
      }]
      }
               

      Para especificar uma região de saída (por exemplo, quando usar rotas estáticas), adicione um egress_policy à configuração a montante:

      {
      "display_name": "MY_APP_DISPLAY_NAME",
      "endpoint_matchers": [
         {"hostname": "MY_HOST_NAME", "ports": [443]}
      ],
      "upstreams": [{
         "network": {
            "name": "MY_PRIVATE_NETWORK_RESOURCE_NAME"
         },
         "egress_policy": {
            "regions": [
            "us-central1"
            ]
         }
      }]
      }
                

      Substitua us-central1 pela Google Cloud região (como europe-west1 ou asia-northeast1) que se alinha com a sua configuração de encaminhamento estático regional. Se não tiver requisitos de encaminhamento estático regionais específicos, pode omitir a política de saída da sua configuração.

    2. Chame o método da API Create.

      curl \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -X POST \
      -d @application.json \
      "https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}/applications?application_id=${APPLICATION_ID}"
                

Configure o modo proxy do Google Chrome

Para encaminhar o tráfego do recurso da aplicação através do gateway seguro, configure o Chrome aplicando um ficheiro PAC nas definições do Chrome na consola do administrador Google.

  1. Crie ou atualize um ficheiro PAC.

    • Se estiver a criar a sua primeira aplicação, crie um ficheiro pac_config.js usando o seguinte exemplo de ficheiro PAC.

    • Se estiver a criar uma segunda ou uma aplicação subsequente, atualize o ficheiro pac_config.js existente e adicione os domínios da nova aplicação à matriz de sites, conforme mostrado no exemplo de ficheiro PAC seguinte.

    function FindProxyForURL(url, host) {
     const PROXY = "HTTPS ingress.cloudproxy.app:443";
     const sites = ["MY_HOST_NAME"];
    
     for (const site of sites) {
       if (shExpMatch(url, 'https://' + site + '/*') || shExpMatch(url, '*.' + site + '/*')) {
         return PROXY;
       }
     }
    return 'DIRECT';
    }

    Se estiver a usar um ficheiro PAC existente que não seja específico de um gateway seguro, junte os ficheiros PAC adicionando os domínios da sua aplicação à matriz de sites.

  2. Carregue o ficheiro para que seja transferível publicamente. Por exemplo, pode carregar o ficheiro para o Cloud Storage e tornar o ficheiro publicamente transferível concedendo a todos os utilizadores a função Storage Object User no contentor.

  3. Para verificar se o ficheiro carregado é sempre a versão mais recente, pode ajustar o comportamento de colocação em cache definindo o cabeçalho Cache-Control como no-cache. Esta definição impede que os navegadores e os servidores intermédios armazenem uma cópia do ficheiro, para que o Chrome transfira sempre a versão mais recente.

    Para mais informações sobre Cache-Control e como afeta o armazenamento em cache do navegador, consulte o artigo Cabeçalho Cache-Control.

  4. Copie o URL público do ficheiro carregado.

Atualize as definições do modo de proxy

  1. Aceda à consola do administrador Google.
  2. Clique em Dispositivos -> Chrome -> Definições.
  3. Selecione uma unidade organizacional ou um grupo e, de seguida, clique em Modo de proxy.
  4. Na página Modo de proxy, selecione Usar sempre a configuração automática do proxy indicada abaixo e introduza o URL do ficheiro PAC do Cloud Storage.

Configure uma política de acesso

Pode aplicar uma política de acesso para controlar o acesso ao nível do gateway seguro, o que afeta todas as aplicações associadas, ou ao nível da aplicação individual para um controlo mais detalhado.

Atualize uma política de acesso em segurança

O comando setIamPolicy substitui toda a política existente pela que for fornecida. Para evitar a remoção acidental de autorizações existentes, recomendamos que siga um padrão "ler-modificar-escrever". Isto garante que está apenas a adicionar à política existente e não a substituir.

  1. Leitura: primeiro, obtenha a política de acesso atual.

  2. Modificar: edite o ficheiro de política localmente para adicionar ou alterar autorizações.

  3. Escrita: aplique o ficheiro de política atualizado.

Obtenha a política atual

Obtenha a política atual antes de fazer alterações.

O campo etag na política funciona como um identificador de versão. Impede atualizações em conflito se vários administradores fizerem alterações em simultâneo.

O comando seguinte obtém a política e guarda-a num ficheiro com o nome policy.json.

curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}/applications/${APPLICATION_ID}:getIamPolicy" > policy.json

Depois de executar o comando, é criado um ficheiro policy.json que contém a política atual.

Modifique o ficheiro de política

Abra o ficheiro policy.json num editor de texto. Para conceder a um grupo acesso à utilização do gateway seguro, adicione o grupo à lista members para a função roles/beyondcorp.securityGatewayUser.

O seu policy.json deve ser semelhante ao seguinte exemplo:

{
  "policy": {
    "version": 3,
    "bindings": [
      {
        "role": "roles/beyondcorp.securityGatewayUser",
        "members": [
          "group:existing-group@example.com"
        ]
      }
    ],
    "etag": "BwXN8_d-bOM="
  }
}

Para adicionar um novo grupo, adicione uma nova entrada à matriz members. Inclua uma vírgula após a entrada anterior.

O exemplo seguinte adiciona new-group@example.com:

{
  "policy": {
    "version": 3,
    "bindings": [
      {
        "role": "roles/beyondcorp.securityGatewayUser",
        "members": [
          "group:existing-group@example.com",
          "group:new-group@example.com"
        ]
      }
    ],
    "etag": "BwXN8_d-bOM="
  }
}

Também pode adicionar outros tipos de membros, como serviceAccount, user, group, principal e principalSet, em associações de políticas. Consulte o artigo Principais do IAM para mais informações.

Aplique a política atualizada

Depois de editar e guardar o ficheiro policy.json, aplique-o ao recurso através do comando setIamPolicy. Este comando usa o etag do seu ficheiro para garantir que atualiza a versão correta.

jq '{policy: .}' policy.json | curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -d @- \
    "https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}/applications/${APPLICATION_ID}:setIamPolicy"

Adicione uma política de acesso condicional

Também pode definir políticas de acesso com condições. As condições especificam os requisitos, como o endereço IP de um utilizador que tem origem numa localização específica.

O exemplo seguinte mostra uma política que concede acesso apenas se o endereço IP de origem estiver num nível de acesso especificado:

{
  "policy": {
    "version": 3,
    "bindings": [
      {
        "role": "roles/beyondcorp.securityGatewayUser",
        "members": [
          "group:group@example.com"
        ],
        "condition": {
          "expression": "request.auth.access_levels.contains('accessPolicies/1234567890/accessLevels/in_us')",
          "title": "Source IP must be in US"
        }
      }
    ],
    "etag": "BwXN8_d-bOM="
  }
}

Para aplicar esta política, siga os passos descritos anteriormente.

Instale a extensão do Chrome Enterprise Premium

A extensão Chrome Enterprise Premium é parte integrante de um gateway seguro e ajuda na autenticação. Instale a extensão para todos os utilizadores do gateway seguro. Para informações sobre a implementação da extensão, consulte o artigo Veja e configure apps e extensões.

  1. Aceda à consola do administrador Google.
  2. Clique em Navegador Chrome -> Apps e extensões.
  3. Clique no separador Utilizadores e navegadores.
  4. Para adicionar uma extensão do Chrome, clique no botão +.
  5. Pesquise ekajlcmdfcigmdbphhifahdfjbkciflj e, em seguida, force a instalação para todos os utilizadores na unidade organizacional ou no grupo.
  6. Clique na extensão instalada e, de seguida, aceda ao campo Política para extensões e indique o seguinte valor JSON:

    {
     "securityGateway": {
       "Value": {
         "authentication": {},
         "context": { "resource": "projects/MY_PROJECT_ID/locations/global/securityGateways/MY_SECURITY_GATEWAY_ID" }
       }
     }
    }

Experiência do utilizador final

Quando a configuração estiver concluída, os utilizadores finais que acedem à aplicação SaaS protegida têm o acesso concedido ou negado com base na política de acesso aplicada à aplicação.

Aceder à aplicação no Chrome

A extensão do Chrome Enterprise Premium é necessária para direcionar o tráfego através do gateway seguro. A extensão processa a autenticação entre o utilizador e o gateway seguro. A extensão é instalada automaticamente através da política de domínio.

Quando os utilizadores acedem à aplicação SaaS que configurou, o respetivo tráfego passa pelo gateway seguro, que verifica se cumprem a política de acesso. Se os utilizadores passarem nas verificações da política de acesso, é-lhes concedido acesso à aplicação.

Quando o acesso do navegador à aplicação é rejeitado pela política de autorização, os utilizadores recebem uma mensagem Access denied.

O que se segue?