Acesso seguro a aplicativos da Web particulares

Neste documento, descrevemos como configurar um gateway seguro do Chrome Enterprise Premium para proteger o acesso aos seus aplicativos da web particulares.

Um gateway seguro do Chrome Enterprise Premium funciona como um proxy de encaminhamento, aplicando um framework de acesso de confiança zero e oferecendo controle granular e baseado no contexto sobre quem acessa seus aplicativos da Web particulares.

Como funciona a proteção do acesso a aplicativos da Web particulares

Ao estabelecer um túnel seguro e aplicar políticas de acesso baseado no contexto, o gateway seguro mantém os aplicativos privados protegidos contra a exposição pública à Internet. Uma configuração do navegador do lado do cliente direciona o tráfego desses aplicativos pelo endpoint de proxy do gateway seguro. Em seguida, o gateway seguro aplica a política de acesso relevante e, se permitido, encaminha a solicitação para o aplicativo de destino.

O gateway seguro pode ajudar a proteger aplicativos da Web particulares hospedados nos seguintes ambientes:

  • Google Cloud projeto: o gateway seguro pode direcionar o acesso a aplicativos em execução na sua rede VPC do Google Cloud .

  • NãoGoogle Cloud (data centers locais ou outras nuvens): primeiro, é preciso estabelecer uma conexão entre sua rede VPC privada no Google Cloud e a rede nãoGoogle Cloud . Isso geralmente é feito usando o Cloud VPN ou o Cloud Interconnect. O gateway seguro usa a conexão para enviar o tráfego à rede VPC privada, que o encaminha para o ambiente que não é doGoogle Cloud .

Funções exigidas

Peça ao administrador para conceder os seguintes papéis:

Saiba mais sobre os papéis do Identity and Access Management (IAM).

Políticas obrigatórias do Chrome Enterprise

A autenticação de proxy do gateway seguro requer o esquema de autenticação HTTP Basic. Se você configurar políticas de autenticação do Chrome Enterprise para sua organização, verifique as seguintes configurações de política:

  • AuthSchemes precisa incluir a autenticação basic (ativada por padrão quando a política não está definida). Outros valores nessa política não afetam a autenticação de proxy do gateway seguro.

  • BasicAuthOverHttpEnabled precisa ser definido como 0 (false ou desativado) para impedir que conexões HTTP não seguras usem o esquema de autenticação Basic.

Antes de começar

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

Configurar o ambiente shell

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

  • Parameters gerais
    PROJECT_ID=PROJECT_ID
          

    Substitua:

    • PROJECT_ID: o ID do projeto em que o gateway seguro foi criado.
  • Parâmetros do gateway seguro
    SECURITY_GATEWAY_ID=SECURITY_GATEWAY_ID
    SECURITY_GATEWAY_DISPLAY_NAME="SECURITY_GATEWAY_DISPLAY_NAME"
          

    Substitua:

    • SECURITY_GATEWAY_ID: o ID do gateway seguro que você quer criar. O ID pode ter até 63 caracteres e conter letras minúsculas, números e hifens. O primeiro caractere precisa ser uma letra, e o último pode ser uma letra ou um número.
    • SECURITY_GATEWAY_DISPLAY_NAME: o nome legível por humanos do gateway seguro. O nome pode ter até 63 caracteres e incluir caracteres imprimíveis.

Criar um gateway seguro

Um gateway seguro do Chrome Enterprise Premium é um elemento fundamental para estabelecer conexões seguras com seus aplicativos.

Console

Para criar um gateway seguro, faça o seguinte:

  1. No console do Google Cloud , acesse a página do gateway seguro.
    Acessar o gateway seguro
  2. Selecione o projeto para o qual você quer criar o gateway seguro.
  3. Para criar um gateway seguro, clique em Criar novo gateway e aguarde a conclusão do processo. É possível acompanhar o progresso na seção Notificações do console do Google Cloud .

gcloud

Para criar um gateway seguro usando a gcloud, execute o seguinte comando:

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

REST

Para criar um gateway seguro usando a API REST, execute o seguinte comando:

curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -X POST \
    -d '{ "display_name": "SECURITY_GATEWAY_DISPLAY_NAME", "service_discovery": {} }' \
    "https://beyondcorp.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityGateways?security_gateway_id=SECURITY_GATEWAY_ID"
      

Configurar um aplicativo da Web particular

Antes de definir recursos de aplicativos específicos no gateway seguro, é necessário configurar as permissões e as configurações de rede necessárias para permitir a conectividade e o roteamento adequado.

Conceder permissões à conta de serviço

Para enviar tráfego para sua rede VPC, o gateway seguro precisa de determinadas permissões do IAM concedidas à conta de serviço delegada. Isso permite que o gateway seguro alcance seus aplicativos particulares, estejam eles hospedados em uma VPC do Google Cloud ou em um ambiente que não seja doGoogle Cloud conectado pelo Cloud VPN ou pelo Cloud Interconnect.

Para conceder permissões à conta de serviço, faça o seguinte:

  1. Confira os detalhes do gateway seguro para identificar o e-mail da conta de serviço delegada. O e-mail está no campo delegatingServiceAccount da resposta.

    gcloud

    gcloud 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://beyondcorp.googleapis.com/v1/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. Para encontrar o e-mail da conta de serviço, use o seguinte comando:
    DELEGATING_SERVICE_ACCOUNT=`gcloud beyondcorp security-gateways describe SECURITY_GATEWAY_ID --project=PROJECT_ID --location=global --format="value(delegatingServiceAccount)"`
          
  3. Conceda o papel do IAM roles/beyondcorp.upstreamAccess à conta de serviço de delegação no projeto de VPC particular.
    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 VPC em que o app da Web particular está implantado ou em que o Cloud VPN/Interconnect está configurado.

Aguarde cerca de dois minutos para que a política do Identity and Access Management entre em vigor depois que você conceder o papel.

Configurar regras de roteamento de rede e firewall

Para permitir que o tráfego do gateway seguro chegue aos seus aplicativos da web privados, configure regras de firewall, roteamento de rede e configurações de DNS.

Regras de firewall para aplicativos no Google Cloud

Se o aplicativo da Web particular estiver hospedado na rede VPC do Google Cloud , como em uma VM do Compute Engine, em um serviço do Google Kubernetes Engine com um IP interno ou atrás de um balanceador de carga TCP/UDP interno, configure as regras de firewall da VPC doGoogle Cloud . Isso permite o tráfego TCP de entrada do intervalo de IP do gateway seguro: 136.124.16.0/20.

gcloud

Para criar uma regra de firewall usando a gcloud, execute o seguinte comando:

gcloud compute firewall-rules create FIREWALL_RULE_NAME \
   --project=PRIVATE_VPC_PROJECT_ID \
   --network=NETWORK_NAME \
   --allow=tcp \
   --source-ranges=136.124.16.0/20
      

Substitua:

  • FIREWALL_RULE_NAME: um nome para a regra de firewall.
  • PRIVATE_VPC_PROJECT_ID: o ID do projeto em que a rede VPC está hospedada.
  • NETWORK_NAME: o nome da rede VPC em que o aplicativo está hospedado.

Regras de firewall para aplicativos em ambientes que não são doGoogle Cloud

Se o aplicativo da web particular estiver em um data center local ou na rede de outro provedor de nuvem e estiver conectado à VPC do Google Cloudusando o Cloud VPN ou o Cloud Interconnect, configure regras de firewall no firewall local ou os controles de segurança de rede equivalentes, como grupos de segurança e ACLs de rede, no outro ambiente de nuvem. Isso permite o tráfego TCP de entrada do intervalo de IP do gateway seguro: 136.124.16.0/20.

Configurar o roteamento de ambientes que não são doGoogle Cloud para um gateway seguro

Para facilitar a comunicação bidirecional de aplicativos particulares hospedados em ambientes que não são doGoogle Cloud , como locais ou outras nuvens, sua rede externa precisa criar um caminho de retorno para o seguinte intervalo de IP do gateway seguro: 136.124.16.0/20.

Verifique se a rede privada pode acessar os intervalos de IP do gateway seguro pelo Cloud VPN ou Cloud Interconnect:

  • Roteamento dinâmico: se você estiver usando o roteamento dinâmico, como o protocolo de gateway de borda (BGP) com o Cloud Router, defina o modo de roteamento dinâmico da rede VPC como Global para que as rotas aprendidas pelo BGP sejam anunciadas para todas as regiões na rede VPC. Como um gateway seguro é um serviço global, o roteamento dinâmico global garante que o tráfego que chega de qualquer região possa acessar seu aplicativo particular.

    Verifique também se o Cloud Router em Google Cloud divulga explicitamente os intervalos de IP do gateway seguro para o dispositivo BGP local. Embora o BGP troque dinamicamente muitas rotas, os intervalos de IP do gateway seguro exigem divulgação explícita.

    gcloud

    Para verificar se o intervalo de origem é divulgado, execute o seguinte comando:

    gcloud compute routers list-bgp-routes ROUTER_NAME \
    --peer=PEER_NAME \
    --region=REGION \
    --project=PROJECT_ID \
    --route-direction=OUTBOUND \
    --address-family=IPV4 \
    --destination-range=136.124.16.0/20
          

    Substitua:

    • ROUTER_NAME: o nome do seu Cloud Router
    • PEER_NAME: o nome do peer do BGP
    • REGION: a região onde o roteador está localizado
    • PROJECT_ID: o ID do projeto que contém o roteador
  • Roteamento estático: se você estiver usando rotas estáticas, adicione manualmente rotas para cada um dos intervalos de IP do gateway seguro no equipamento de rede local, como o roteador ou o firewall. Essas rotas estáticas precisam especificar que o tráfego destinado aos intervalos de IP do gateway seguro precisa ser enviado pela conexão do Cloud VPN ou do Cloud Interconnect.

    Se você configurar o Cloud VPN com rotas estáticas em vez de roteamento dinâmico (BGP), essas rotas só estarão disponíveis na região específica em que o túnel de VPN está estabelecido. Como um gateway seguro é um serviço global, o tráfego de entrada que chega de uma região diferente não consegue acessar seu aplicativo particular porque as rotas estáticas não são divulgadas globalmente entre as regiões. Para evitar falhas de roteamento entre regiões ao usar rotas estáticas, siga um destes procedimentos:

    • Mude para o roteamento dinâmico (BGP): defina o modo de roteamento dinâmico da rede VPC como Global para que as rotas aprendidas pelo BGP estejam disponíveis em todas as regiões da rede VPC.

    • Configurar uma política de saída: ao criar o recurso do aplicativo, configure uma política de saída na rede upstream para forçar o tráfego do gateway seguro a sair na região específica em que a conexão do Cloud VPN ou do Cloud Interconnect está estabelecida.

    Ao usar o roteamento estático, o Cloud VPN precisa estar em uma das seguintes regiões com disponibilidade:

    • africa-south1
    • asia-east1
    • asia-east2
    • asia-northeast1
    • asia-northeast2
    • asia-northeast3
    • asia-south1
    • asia-south2
    • asia-southeast1
    • asia-southeast2
    • asia-southeast3
    • australia-southeast2
    • europe-central2
    • europe-north1
    • europe-north2
    • europe-southwest1
    • europe-west1
    • europe-west10
    • europe-west12
    • europe-west2
    • europe-west3
    • europe-west4
    • europe-west6
    • europe-west8
    • europe-west9
    • me-central1
    • me-central2
    • me-west1
    • northamerica-northeast1
    • northamerica-northeast2
    • northamerica-south1
    • southamerica-east1
    • southamerica-west1
    • us-central1
    • us-central2
    • us-east1
    • us-east4
    • us-east5
    • us-east7
    • us-south1
    • us-west1
    • us-west2
    • us-west3
    • us-west4
    • us-west8

Configuração de DNS para resolução de nome do host particular do gateway seguro

Para que o gateway seguro resolva os nomes de host do aplicativo particular, a rede VPC doGoogle Cloud precisa ser capaz de resolver os nomes de host usando o Cloud DNS. A configuração específica do Cloud DNS depende de onde seus registros DNS particulares estão hospedados de forma autoritativa:

  • Aplicativos no Google Cloud que usam zonas particulares do Cloud DNS: se os aplicativos particulares estiverem hospedados no Google Cloud e os registros DNS deles forem gerenciados em zonas particulares do Cloud DNS associadas à rede VPC, verifique se as zonas estão configuradas corretamente e acessíveis. O gateway seguro usa os recursos de resolução de DNS do Cloud DNS da sua VPC.

  • Aplicativos em ambientes que não são doGoogle Cloud ou que usam servidores DNS externos: se os aplicativos particulares estiverem em ambientes que não são doGoogle Cloud(no local ou em outras nuvens) ou se os registros DNS deles forem gerenciados por servidores DNS externos às zonas particulares do Cloud DNS da VPC, configure o Cloud DNS para encaminhar consultas para esses domínios particulares. Isso geralmente envolve a criação de zonas de encaminhamento do Cloud DNS na VPC. Essas zonas vão direcionar as consultas DNS dos domínios particulares especificados para os servidores DNS particulares autoritativos, como locais ou outras nuvens.

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

Criar um recurso de aplicativo

Para fornecer acesso a um aplicativo da Web particular, é necessário estabelecer o aplicativo dentro do framework do gateway seguro criando um recurso de aplicativo. Esse recurso define como o gateway seguro identifica o tráfego do seu aplicativo (com base no nome do host) e para onde rotear esse tráfego.

  1. Defina as variáveis de ambiente necessárias executando o seguinte comando:
       APPLICATION_ID=APPLICATION_ID
       APP_DISPLAY_NAME="APP_DISPLAY_NAME"
       HOST_NAME=HOST_NAME
       PRIVATE_NETWORK_RESOURCE_NAME=PRIVATE_NETWORK_RESOURCE_NAME
       
    Substitua:
    • APPLICATION_ID: um ID exclusivo para o recurso do aplicativo.
    • APP_DISPLAY_NAME: o nome legível por humanos a ser exibido.
    • HOST_NAME: o nome do host principal que os usuários acessam (por exemplo, private.local).
    • 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 do aplicativo.

    Console

    Para criar o recurso do aplicativo usando o console do Google Cloud , faça o seguinte:

    1. No console do Google Cloud , acesse a página do gateway seguro.
      Acessar o gateway seguro
    2. Para adicionar um aplicativo, clique em Adicionar aplicativo.
    3. Selecione o tipo de aplicativo: Aplicativo particular.
    4. Insira os detalhes do aplicativo:
      • Nome do aplicativo: insira um nome, por exemplo, GitHub.
      • Correspondências de domínio: insira uma lista separada por vírgulas de padrões de domínio para rotear pelo gateway seguro. Inclua a porta no formato domain:port. Caracteres curinga (*) são permitidos. Por exemplo: github.com:443.
    5. Configurar a rede VPC:
      • No projeto atual: se a rede VPC estiver no projeto atual, escolha a rede VPC na lista suspensa.
      • Em outro projeto: se a rede VPC estiver em um projeto do Google Cloud diferente, especifique o nome completo do recurso da rede VPC, por exemplo, projects/my-project/global/networks/my-network.
    6. Opcional: Definir política de saída: selecione uma ou mais regiões do Google Cloud no menu suspenso. Se você usa rotas estáticas regionais, selecione a região em que a conexão do Cloud VPN ou do Cloud Interconnect está estabelecida.
    7. Opcional: Defina uma política de acesso: selecione uma política de acesso do Access Context Manager. Você pode pular esta etapa neste guia.
    8. Para criar o recurso do aplicativo, clique em Criar.

    gcloud

    Para criar o recurso do aplicativo usando a gcloud, execute o seguinte comando:

    gcloud 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, ao usar rotas estáticas), inclua egressPolicy na flag --upstreams:

    gcloud 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 região do Google Cloud (como europe-west1 ou asia-northeast1) que se alinha à configuração de roteamento estático regional. Se você não tiver requisitos específicos de roteamento estático regional, poderá omitir a política de saída da sua configuração.

    REST

    Para criar um recurso de aplicativo com a API, siga estas etapas:

    1. Crie um arquivo chamado application.json.

      {
      "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, ao usar rotas estáticas), adicione um egress_policy à configuração upstream:

      {
      "display_name": "APP_DISPLAY_NAME",
      "endpoint_matchers": [
         {"hostname": "HOST_NAME", "ports": [443]}
      ],
      "upstreams": [{
         "network": {
            "name": "PRIVATE_NETWORK_RESOURCE_NAME"
         },
         "egress_policy": {
            "regions": [
            "us-central1"
            ]
         }
      }]
      }
                

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

    2. Chame o método de API Create.

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

Configurar uma política de acesso

É possível aplicar uma política de acesso para controlar o acesso no nível do aplicativo. Se nenhuma política de acesso estiver configurada, o acesso ao aplicativo será negado por padrão.

Console

Criar uma política para vários aplicativos

Para configurar uma política de acesso, faça o seguinte:

  1. Para criar uma política que se aplique a vários aplicativos vinculados ao gateway seguro, acesse a página Políticas.
    Acessar Políticas
  2. Para adicionar políticas de acesso aos aplicativos, clique em Criar política.
  3. Na lista suspensa, selecione os aplicativos em que você quer aplicar as políticas.
  4. Adicione principais à política:

    Os principais podem ser usuários, grupos, domínios ou contas de serviço. Esses participantes recebem ou têm o acesso negado com base nos níveis de acesso que você atribui.

    1. Para adicionar um principal, clique em Adicionar principal.
    2. No campo Principal, insira o endereço de e-mail do usuário, grupo, conta de serviço ou nome de domínio.
    3. No menu suspenso Níveis de acesso, selecione um ou mais níveis predefinidos de Acesso Baseado no Contexto. O acesso só será concedido se o principal atender às condições dos níveis de acesso selecionados.

    Para adicionar mais principais, clique em Adicionar principal novamente e repita as subetapas.

    É possível criar e gerenciar níveis de acesso no Access Context Manager.

  5. Para aplicar a política ao aplicativo, clique em Criar política.

Modificar uma política de acesso no nível do aplicativo

  1. Para modificar uma política de um único aplicativo, acesse a página Aplicativos.
    Acesse Aplicativos
  2. Para encontrar o aplicativo que você quer editar, faça o seguinte:
    1. Na lista Aplicativos, procure o aplicativo que você quer modificar.
    2. Para ver os detalhes do aplicativo, clique no menu Mais ações () e selecione Ver detalhes.
  3. Para editar o aplicativo, clique em Editar.
  4. Adicione principais à política:

    Os principais podem ser usuários, grupos, domínios ou contas de serviço. Esses participantes recebem ou têm o acesso negado com base nos níveis de acesso que você atribui.

    1. Para adicionar um principal, clique em Adicionar principal.
    2. No campo Principal, insira o endereço de e-mail do usuário, grupo, conta de serviço ou nome de domínio.
    3. Na lista suspensa Níveis de acesso, selecione um ou mais níveis de acesso baseado no contexto predefinidos. O acesso só será concedido se o principal atender às condições dos níveis de acesso selecionados.

    Para adicionar mais principais, clique em Adicionar principal novamente e repita as subetapas.

    É possível criar e gerenciar níveis de acesso no Access Context Manager.

  5. Para aplicar a política ao aplicativo, clique em Salvar.

gcloud

Adicionar uma vinculação no nível do gateway da Descoberta de Serviços

Antes de conceder acesso a um aplicativo, verifique se o usuário tem permissões de descoberta de serviços no nível do gateway seguro.

gcloud beyondcorp security-gateways add-iam-policy-binding SECURITY_GATEWAY_ID \
    --project=PROJECT_ID \
    --location=global \
    --role="roles/beyondcorp.serviceDiscoveryUser" \
    --member=MEMBER
  

Substitua:

  • SECURITY_GATEWAY_ID: o ID do gateway seguro.
  • PROJECT_ID: o ID do projeto em que o gateway seguro está configurado.
  • MEMBER: o usuário, grupo ou conta de serviço a que você quer atribuir o papel de descoberta de serviços. Para mais informações, consulte Principais do IAM.

Adicionar uma vinculação no nível do aplicativo

gcloud beyondcorp security-gateways applications add-iam-policy-binding APPLICATION_ID \
    --security-gateway=SECURITY_GATEWAY_ID \
    --project=PROJECT_ID \
    --location=global \
    --role="roles/beyondcorp.sgApplicationUser" \
    --member=MEMBER
  

Substitua:

  • APPLICATION_ID: o ID do recurso do aplicativo.
  • SECURITY_GATEWAY_ID: o ID do gateway seguro.
  • PROJECT_ID: o ID do projeto em que o gateway seguro está configurado.
  • MEMBER: o usuário, grupo ou conta de serviço a que você quer atribuir o papel de descoberta de serviços. Para mais informações, consulte Principais do IAM.

Adicionar uma vinculação condicional

Também é possível adicionar uma vinculação com condições. As condições especificam requisitos, como o endereço IP de um usuário originado de um local específico. O nível de acesso pode ser definido em uma política de acesso no nível da organização ou em uma política de acesso com escopo.

O exemplo de comando a seguir concede acesso somente se o endereço IP de origem estiver em um nível de acesso especificado:

gcloud beyondcorp security-gateways applications add-iam-policy-binding APPLICATION_ID \
    --security-gateway=SECURITY_GATEWAY_ID \
    --project=PROJECT_ID \
    --location=global \
    --role="roles/beyondcorp.sgApplicationUser" \
    --member=MEMBER \
    --condition="expression='accessPolicies/1234567890/accessLevels/in_us' in request.auth.access_levels,title=Source IP must be in US"
  

Remover uma vinculação no nível do gateway da Descoberta de Serviços

Revogar as permissões de descoberta de serviços de um usuário no nível do gateway seguro.

gcloud beyondcorp security-gateways remove-iam-policy-binding SECURITY_GATEWAY_ID \
    --project=PROJECT_ID \
    --location=global \
    --role="roles/beyondcorp.serviceDiscoveryUser" \
    --member=MEMBER
  

Substitua:

  • SECURITY_GATEWAY_ID: o ID do gateway seguro.
  • PROJECT_ID: o ID do projeto em que o gateway seguro está configurado.
  • MEMBER: o usuário, grupo ou conta de serviço de que você quer remover o papel de Descoberta de Serviços. Para mais informações, consulte Principais do IAM.

Remover uma vinculação no nível do aplicativo

gcloud beyondcorp security-gateways applications remove-iam-policy-binding APPLICATION_ID \
    --security-gateway=SECURITY_GATEWAY_ID \
    --project=PROJECT_ID \
    --location=global \
    --role="roles/beyondcorp.sgApplicationUser" \
    --member=MEMBER
  

Substitua:

  • APPLICATION_ID: o ID do recurso do aplicativo.
  • SECURITY_GATEWAY_ID: o ID do gateway seguro.
  • PROJECT_ID: o ID do projeto em que o gateway seguro está configurado.
  • MEMBER: o usuário, grupo ou conta de serviço de que você quer remover o papel de Descoberta de Serviços. Para mais informações, consulte Principais do IAM.

Remover uma vinculação condicional

Também é possível remover uma vinculação com condições. As condições especificam requisitos, como o endereço IP de um usuário originado de um local específico. O nível de acesso pode ser definido em uma política de acesso no nível da organização ou em uma política de acesso com escopo.

O exemplo de comando a seguir remove uma vinculação condicional com um nível de acesso especificado:

gcloud beyondcorp security-gateways applications remove-iam-policy-binding APPLICATION_ID \
    --security-gateway=SECURITY_GATEWAY_ID \
    --project=PROJECT_ID \
    --location=global \
    --role="roles/beyondcorp.sgApplicationUser" \
    --member=MEMBER \
    --condition="expression='accessPolicies/1234567890/accessLevels/in_us' in request.auth.access_levels,title=Source IP must be in US"
  

REST

Atualizar uma política de acesso com segurança

O comando setIamPolicy substitui toda a política atual pela que você fornecer. Para evitar a remoção acidental de permissões, recomendamos que você use o seguinte padrão de "leitura-modificação-gravação". Esse padrão ajuda a evitar a remoção acidental de permissões atuais.

  1. Leitura: salve a política de acesso atual em um arquivo.
  2. Modificar: edite o arquivo de política localmente para adicionar ou alterar permissões.
  3. Gravar: aplique o arquivo de política atualizado.

Definir uma política no nível do gateway de descoberta de serviços

Para conceder permissões de descoberta de serviços, defina uma política de acesso no gateway seguro, em vez de um aplicativo individual. Isso segue o mesmo padrão de "leitura-modificação-gravação".

Recupere a política atual e salve-a em um arquivo chamado gateway_policy.json.

curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://beyondcorp.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID:getIamPolicy" > gateway_policy.json
  

Em seguida, abra o arquivo gateway_policy.json em um editor de texto e adicione os principais necessários à lista members para o papel roles/beyondcorp.serviceDiscoveryUser, de forma semelhante às modificações no nível do aplicativo.

O arquivo gateway_policy.json é semelhante ao exemplo a seguir:

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

Também é possível adicionar outros tipos de participantes, como serviceAccount, user, group, principal e principalSet, em vinculações de política. Para mais informações, consulte Principais do IAM.

Aplique a política atualizada:

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

Definir uma política de acesso no nível do aplicativo

Ver a política atual

Recuperar a política atual. O campo etag evita atualizações conflitantes se vários administradores fizerem mudanças ao mesmo tempo.

O comando a seguir recupera a política e a salva em um arquivo chamado policy.json.

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

Substitua:

  • PROJECT_ID: o ID do projeto em que o gateway seguro está configurado.
  • SECURITY_GATEWAY_ID: o ID do gateway seguro.
  • APPLICATION_ID: o ID do recurso do aplicativo.

O comando cria um arquivo policy.json que contém a política atual.

Modificar o arquivo de política

Para conceder a um grupo acesso ao gateway seguro, faça o seguinte:

  1. Abra o arquivo policy.json em um editor de texto.
  2. Adicione o grupo à lista members do papel roles/beyondcorp.securityGatewayUser.

O arquivo policy.json é semelhante ao exemplo a seguir:

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

Para adicionar outro grupo, adicione uma nova entrada à matriz members. Inclua uma vírgula após a entrada anterior. O exemplo a seguir adiciona new-group@example.com:

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

Também é possível adicionar outros tipos de participantes, como serviceAccount, user, group, principal e principalSet, em vinculações de política. Para mais informações, consulte Principais do IAM.

Aplicar a política atualizada

Depois de editar e salvar o arquivo policy.json, aplique-o ao recurso usando o comando setIamPolicy. Esse comando usa o etag do arquivo para garantir que você atualize 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://beyondcorp.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID/applications/APPLICATION_ID:setIamPolicy"
  

Substitua:

  • PROJECT_ID: o ID do projeto em que o gateway seguro está configurado.
  • SECURITY_GATEWAY_ID: o ID do gateway seguro.
  • APPLICATION_ID: o ID do recurso do aplicativo.

Adicionar uma política de acesso condicional

Também é possível definir políticas de acesso com condições. As condições especificam requisitos, como o endereço IP de um usuário originado de um local específico. O nível de acesso pode ser definido em uma política de acesso no nível da organização ou em uma política de acesso com escopo.

O exemplo de política a seguir concede acesso somente se o endereço IP de origem estiver em um nível de acesso especificado:

{
  "version": 3,
  "bindings": [
    {
      "role": "roles/beyondcorp.sgApplicationUser",
      "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 essa política, siga as etapas descritas anteriormente.

Melhorar a segurança com o acesso baseado no contexto

Para aumentar ainda mais a segurança e garantir que apenas instâncias gerenciadas do Google Chrome possam acessar seus aplicativos da Web pelo gateway seguro, recomendamos adicionar uma regra de acesso baseado no contexto (CAA). Essa regra verifica se o perfil do Chrome do usuário está sob gerenciamento, evitando possíveis usos indevidos de navegadores não gerenciados ou maliciosos.

Observação: esse recurso exige a instalação e a configuração da extensão Verificação de endpoints.

Para implementar isso, adicione uma condição aos níveis de acesso personalizados do Access Context Manager. Veja um exemplo de condição que você pode adaptar:

  device.chrome.management_state == ChromeManagementState.CHROME_MANAGEMENT_STATE_PROFILE_MANAGED
  

Para mais informações sobre como configurar, verificar e gerenciar esse estado, consulte Atributos do navegador Chrome.

Instalar a extensão do Chrome Enterprise Premium

A extensão do Chrome Enterprise Premium é parte integrante de um gateway seguro e ajuda na autenticação. Instale a extensão para todos os usuários do gateway seguro. Para saber como implantar a extensão, consulte Ver e configurar apps e extensões. Para instalar a extensão do Chrome Enterprise Premium, faça o seguinte:

  1. Acesse o Google Admin Console.
  2. Clique em Navegador Chrome > Apps e extensões.
  3. Clique na guia Usuários e navegadores.
  4. Para adicionar a extensão do Chrome, clique no botão + e selecione Adicionar o app ou a extensão do Chrome pelo ID.
  5. Pesquise a extensão Secure Enterprise Browser usando o ID a seguir e defina a política de instalação como Forçar instalação para todos os usuários na unidade organizacional ou no grupo:

    ekajlcmdfcigmdbphhifahdfjbkciflj
  6. Clique na extensão instalada e, no campo Política para extensões, insira o seguinte valor JSON:

    {
      "securityGateway": {
        "Value": {
          "authentication": {},
          "context": { "resource": "projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID" },
          "serviceDiscovery": { "routes": {} }
        }
      }
    }

    Substitua:

    • PROJECT_ID: o ID do projeto em que o gateway seguro está configurado.
    • SECURITY_GATEWAY_ID: o ID do gateway seguro.

  7. Para salvar a configuração, clique em Salvar.

Configuração legada do arquivo PAC

Quando ativada, a descoberta de serviços permite que o cliente do navegador Chrome detecte e encaminhe automaticamente o tráfego para os aplicativos configurados pelo gateway seguro, eliminando a necessidade de configurações manuais de roteamento usando um arquivo PAC.

Se a descoberta de serviços não estiver ativada no gateway seguro, você tem uma configuração legada. Você precisará configurar um arquivo PAC para controlar o roteamento no cliente do navegador Chrome.

Para verificar se você tem a configuração legada, use os seguintes comandos para conferir se a descoberta de serviços está ativada:

gcloud

gcloud beyondcorp security-gateways describe SECURITY_GATEWAY_ID \
    --project=PROJECT_ID \
    --location=global | grep -i "serviceDiscovery"
      

REST

curl --silent \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://beyondcorp.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID" | grep -i "serviceDiscovery"
      

Se o comando não retornar nenhuma saída, o gateway usará a configuração legada. Para gateways que usam a configuração legada, o roteamento é feito com um arquivo PAC hospedado.

Etapa 1: criar e hospedar o arquivo PAC

  1. Crie um arquivo chamado pac_config.js com o JavaScript a seguir, substituindo HOST_NAME pelo domínio do seu aplicativo (por exemplo, myapp.example.com):

    function FindProxyForURL(url, host) {
      const PROXY = "HTTPS via.prod.securegateway.goog:443";
      const sites = ["HOST_NAME"];
    
      for (const site of sites) {
        if (shExpMatch(url, 'https://' + site + '/*') || shExpMatch(url, '*.' + site + '/*')) {
          return PROXY;
        }
      }
      return 'DIRECT';
    }
  2. Faça upload do arquivo PAC para um serviço de hospedagem, como um bucket do Cloud Storage.

    • Verifique se o arquivo pode ser baixado publicamente.
    • Defina o cabeçalho HTTP Cache-Control como no-cache para que os navegadores sempre busquem as regras de rota mais recentes.
  3. Copie o URL público do arquivo PAC enviado.

Etapa 2: aplicar o arquivo PAC no Google Admin Console

  1. Acesse o Google Admin Console.
  2. Acesse Dispositivos > Chrome > Configurações.
  3. Selecione sua unidade organizacional ou grupo e clique em Modo proxy.
  4. Em Modo de proxy, selecione Sempre usar a configuração automática de proxy especificada abaixo.
  5. Insira o URL público do arquivo PAC hospedado no campo fornecido.
  6. Clique em Salvar.

Etapa 3: configurar a extensão do Chrome Enterprise Premium

A extensão é necessária para processar a autenticação. Essa política de extensão é diferente da configuração padrão porque exclui o bloco serviceDiscovery.

  1. No Google Admin Console, acesse Navegador Chrome > Apps e extensões.
  2. Acesse a guia Usuários e navegadores e verifique se a extensão do Secure Enterprise Browser (ekajlcmdfcigmdbphhifahdfjbkciflj) foi adicionada e aplicada.
  3. Clique na extensão e, no campo Política para extensões, insira o seguinte valor JSON:

    {
      "securityGateway": {
        "Value": {
          "authentication": {},
          "context": {
            "resource": "projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID"
          }
        }
      }
    }
  4. Clique em Salvar.

Transição para a configuração da descoberta de serviços

Para fazer a transição do gateway seguro legado de uma configuração de arquivo PAC para a nova configuração de descoberta de serviços, ative o recurso manualmente e atualize as configurações.

  1. Ativar a descoberta de serviços no gateway seguro: atualize o gateway para ativar a descoberta de serviços.

    gcloud

    gcloud beyondcorp security-gateways update SECURITY_GATEWAY_ID \
    --project=PROJECT_ID \
    --location=global \
    --service-discovery={}
          

    REST

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -d '{ "service_discovery": {} }' \
    "https://beyondcorp.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID?updateMask=service_discovery"
          
  2. Defina a política de acesso no nível do gateway: conceda aos usuários o papel roles/beyondcorp.serviceDiscoveryUser no nível do gateway para que eles possam usar a descoberta de serviços. Siga as instruções na seção Adicionar uma vinculação no nível do gateway de descoberta de serviços.

  3. Atualize a configuração da extensão do Chrome Enterprise Premium: siga as instruções na seção Instalar a extensão do Chrome Enterprise Premium para atualizar a política da extensão. A nova configuração JSON precisa incluir o bloco "serviceDiscovery": { "routes": {} }.

  4. Remova o arquivo PAC legado: depois que a descoberta de serviços estiver ativa, o arquivo PAC legado não será mais necessário.

    1. No Google Admin Console, acesse Dispositivos > Chrome > Configurações > Configurações de usuários e navegadores > Rede.
    2. Encontre a configuração Modo de proxy.
    3. Remova o URL de configuração automática de proxy (PAC) ou mude a configuração de Sempre usar a configuração automática de proxy especificada abaixo para um modo adequado à sua rede, como Permitir que o usuário configure.
    4. Clique em Salvar.

Experiência do usuário final

Quando a configuração é concluída, os usuários finais que acessam o aplicativo SaaS protegido recebem ou não acesso com base na política de acesso aplicada ao aplicativo.

Como acessar o aplicativo no Chrome

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

Quando os usuários acessam o aplicativo SaaS que você configurou, o tráfego deles passa pelo gateway seguro, que verifica se eles atendem à política de acesso. Se os usuários passarem nas verificações da política de acesso, eles terão acesso ao aplicativo.

Quando o acesso do navegador ao aplicativo é rejeitado pela política de autorização, os usuários recebem uma mensagem Access denied.

A seguir