Acesso seguro a aplicativos SaaS

Esta página mostra como proteger seus aplicativos SaaS pelo gateway seguro do Chrome Enterprise Premium.

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 SaaS.

Como funciona a proteção do acesso a aplicativos SaaS

Confira a seguir uma visão geral de como um gateway seguro protege seus aplicativos SaaS:

  1. As configurações do navegador do lado do cliente roteiam o tráfego do aplicativo por um proxy de gateway seguro.
  2. O gateway seguro verifica as políticas de acesso baseado no contexto para autorizar o acesso do cliente (usuário e dispositivo).
  3. Se o acesso do cliente for permitido, o gateway encaminhará o tráfego para o aplicativo usando endereços IP de origem exclusivos atribuídos a esse gateway e à região Google Cloud . Esses endereços IP atribuídos são reservados exclusivamente para o gateway que você cria e não podem ser usados por outros usuários ou gateways. Para controlar o acesso, adicione esses endereços IP de origem dedicados a uma lista de permissões no seu aplicativo SaaS.

Antes de começar

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

Limitações

Um gateway seguro do Chrome Enterprise Premium tem as seguintes limitações:

  • Conectividade IPv6: o gateway seguro do Chrome Enterprise Premium não é compatível com aplicativos SaaS que usam conectividade IPv6.
  • Provedor de identidade como um aplicativo SaaS: um provedor de identidade não pode ser configurado como um aplicativo SaaS para ser protegido pelo gateway seguro se a autenticação do usuário final com o gateway seguro depender do mesmo IdP.

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

    API="beyondcorp.googleapis.com"
    API_VERSION=v1
    PROJECT_ID=PROJECT_ID
    APPLICATION_ID=APPLICATION_ID
    APPLICATION_DISPLAY_NAME="APPLICATION_DISPLAY_NAME"
    HOST_NAME=HOST_NAME

    Substitua:

    • PROJECT_ID: o ID do projeto em que o gateway seguro é criado.
    • APPLICATION_ID: o ID do seu aplicativo, como github. O nome pode ter até 63 caracteres e conter letras minúsculas, números e hífens. O primeiro caractere precisa ser uma letra, e o último pode ser uma letra ou um número.
    • APPLICATION_DISPLAY_NAME: o nome legível a ser mostrado.
    • HOST_NAME: o nome do host do seu aplicativo. Por exemplo, github.com. O nome do host pode ter até 253 caracteres e precisa seguir um dos seguintes formatos:

      • Um endereço IPv4 válido
      • Um endereço IPv6 válido
      • Um nome DNS válido
      • Um asterisco (*)
      • Um asterisco (*) seguido por um nome DNS válido
  • Parâmetros de 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. O ID pode ter até 63 caracteres e conter letras minúsculas, números e hífens. 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 do gateway seguro. O nome pode ter até 63 caracteres e só pode conter caracteres imprimíveis.

Criar um gateway seguro

Um gateway seguro do Chrome Enterprise Premium é um bloco de construção fundamental para estabelecer conexões seguras com seus aplicativos. Ele aloca um projeto e uma rede dedicados, oferecendo isolamento e segurança.

Para criar um recurso de gateway seguro, use um dos seguintes métodos.

gcloud

Execute o comando a seguir. Para a flag --hubs, especifique uma ou mais regiões da lista a seguir.

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

REST

Chame o método da API Create com os detalhes do gateway no corpo da solicitação. Para o objeto hubs, especifique uma ou mais regiões da lista a seguir.

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

O hubs representa os recursos regionais necessários para ativar a conectividade de saída com o aplicativo de destino. É possível ter um hub para cada região, e cada hub fornece dois endereços IP. É possível especificar as seguintes regiões:

  • 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

Configurar um aplicativo SaaS

Depois de criar um gateway seguro, é possível configurar os aplicativos SaaS para usar o gateway seguro para acesso seguro.

  1. Receba os endereços IP alocados pelo gateway seguro para cada hub. Dois endereços IP são alocados para uma região.

    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://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}"
        

    Confira a seguir um exemplo de resposta GET de um gateway seguro com hubs. No exemplo, hubs são criados nas regiões us-central1 e us-east1, e todos os endereços IP retornados na resposta precisam ser permitidos no aplicativo SaaS.

    gcloud

    createTime: 'CREATE_TIME'
    displayName: My security gateway
    hubs:
      us-central1:
        internetGateway:
          assignedIps:
          - IP_ADDRESS_1
          - IP_ADDRESS_2
      us-east1:
        internetGateway:
          assignedIps:
          - IP_ADDRESS_1
          - IP_ADDRESS_2
    name: projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}
    state: RUNNING
    updateTime: 'UPDATE_TIME'
        

    REST

    {
      "securityGateways": [
        {
          "name": "projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}",
          "createTime": "CREATE_TIME",
          "updateTime": "UPDATE_TIME",
          "displayName": "My security gateway",
          "state": "RUNNING",
          "hubs": {
            "us-central1": {
              "internetGateway": {
                "assignedIps": [
                  "IP_ADDRESS_1",
                  "IP_ADDRESS_2",
                ]
              }
            },
            "us-east1": {
              "internetGateway": {
                "assignedIps": [
                  "IP_ADDRESS_1",
                  "IP_ADDRESS_2",
                ]
              }
            }
          }
        }
      ]
    }
        
  2. Adicione os endereços IP à lista de permissões de IP do seu aplicativo SaaS. Por exemplo, para um aplicativo do GitHub, siga este guia: Gerenciar endereços IP permitidos para sua organização.

Criar um recurso de aplicativo

As informações a seguir orientam o processo de configuração de um recurso de aplicativo de gateway seguro.

Crie um recurso de aplicativo de gateway seguro em Google Cloud

O recurso de aplicativo Google Cloud é um sub-recurso do recurso de gateway seguro. Crie um recurso de aplicativo chamando a API Create.

gcloud

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

REST

curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-X POST \
-d "{ \"display_name\": \"${APPLICATION_DISPLAY_NAME}\", \"endpoint_matchers\": [{hostname: \"${HOST_NAME}\", ports: [443]}] }" \
"https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}/applications?application_id=${APPLICATION_ID}"
      

Configurar o modo de proxy do Google Chrome

É possível rotear o tráfego de aplicativos pelo gateway seguro aplicando um arquivo PAC nas configurações do Chrome no Google Admin Console. Para aplicar o arquivo PAC, faça o seguinte:

  1. Crie ou atualize um arquivo PAC.

    • Crie seu primeiro aplicativo criando um arquivo pac_config.js usando o exemplo de arquivo PAC a seguir.

    • Atualize o arquivo pac_config.js atual e adicione os domínios do novo aplicativo à matriz de sites, conforme mostrado no exemplo de arquivo PAC a seguir.

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

    Substitua HOST_NAME pelo nome do host do seu aplicativo, por exemplo, myapp.example.com.

    Se você estiver usando um arquivo PAC que não é específico para um gateway seguro, mescle os arquivos PAC adicionando os domínios do seu aplicativo à matriz de sites.

  2. Faça upload do arquivo para que ele possa ser baixado publicamente. Por exemplo, é possível fazer upload do arquivo para o Cloud Storage e permitir que ele seja baixado publicamente concedendo a todos os usuários a função Usuário de objetos do Storage no bucket.

  3. Para verificar se o arquivo enviado é a versão mais recente, ajuste o comportamento de armazenamento em cache definindo o cabeçalho Cache-Control como no-cache. Essa configuração impede que navegadores e servidores intermediários armazenem uma cópia do arquivo para que o Chrome baixe a versão mais recente.

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

  4. Copie o URL público do arquivo enviado.

Atualizar as configurações do modo de proxy

  1. Acesse o Google Admin Console.
  2. Clique em Dispositivos > Chrome > Configurações.
  3. Selecione a unidade organizacional ou o grupo e clique em Modo de proxy.
  4. Em Modo de proxy, selecione Sempre usar a configuração automática de proxy especificada abaixo e insira o URL do arquivo PAC do Cloud Storage.
  5. Para salvar as configurações do modo de proxy, clique em Salvar.

Configurar uma política de acesso

É possível aplicar uma política de acesso para controlar o acesso no nível do gateway seguro, o que afeta todos os aplicativos associados, ou no nível do aplicativo individual para um controle mais granular.

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 atuais, recomendamos usar o seguinte padrão "ler-modificar-gravar". Esse padrão ajuda a evitar a remoção acidental de permissões atuais.

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

  2. Modificar: edite o arquivo de política localmente para adicionar ou mudar permissões.

  3. Grave: aplique o arquivo de política atualizado.

Ver a política atual

Recupere a política atual antes de fazer qualquer mudança.

O campo etag na política funciona como um identificador de versão. Isso evita atualizações conflitantes se vários administradores fizerem mudanças simultaneamente.

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

gcloud

gcloud beta beyondcorp security-gateways applications get-iam-policy APPLICATION_ID \
  --security-gateway=SECURITY_GATEWAY_ID \
  --project=PROJECT_ID \
  --location=global > policy.json

Substitua:

  • APPLICATION_ID: o ID do recurso do aplicativo
  • SECURITY_GATEWAY_ID: o ID do gateway de segurança
  • PROJECT_ID: o ID do projeto em que o gateway de segurança está configurado

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/applications/APPLICATION_ID:getIamPolicy" > policy.json

Substitua:

  • PROJECT_ID: o ID do projeto em que o gateway de segurança está configurado
  • SECURITY_GATEWAY_ID: o ID do gateway de segurança
  • 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

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

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

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

Para adicionar outro grupo, inclua uma nova entrada na 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.securityGatewayUser",
      "members": [
        "group:existing-group@example.com",
        "group:new-group@example.com"
      ]
    }
  ],
  "etag": "BwXN8_d-bOM="
}

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

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 seu arquivo para garantir que você atualize a versão correta.

gcloud

gcloud beta beyondcorp security-gateways applications set-iam-policy APPLICATION_ID policy.json \
  --security-gateway=SECURITY_GATEWAY_ID \
  --project=PROJECT_ID \
  --location=global

Substitua:

  • APPLICATION_ID: o ID do recurso do aplicativo
  • SECURITY_GATEWAY_ID: o ID do gateway de segurança
  • PROJECT_ID: o ID do projeto em que o gateway de segurança está configurado

REST

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"

Substitua:

  • PROJECT_ID: o ID do projeto em que o gateway de segurança está configurado
  • SECURITY_GATEWAY_ID: o ID do gateway de segurança
  • 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.

A política de exemplo 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.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 essa política, siga as etapas descritas anteriormente.

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 informações sobre 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 +.
  5. Pesquise a seguinte extensão e exija que ela seja instalada 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" }
        }
      }
    }

    Substitua:

    • PROJECT_ID: o ID do projeto em que o gateway de segurança está configurado
    • SECURITY_GATEWAY_ID: o ID do gateway de segurança

  7. Para salvar a configuração, 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 têm o acesso negado 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 do domínio.

Quando os usuários acessam o aplicativo SaaS configurado, 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 vão receber 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