Acesso seguro a aplicativos SaaS

Esta página orienta você no processo de proteção dos 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 a seguinte limitação: um gateway seguro não é compatível com aplicativos SaaS que permitem apenas conectividade IPv6.

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=MY_PROJECT_ID
    APPLICATION_ID=MY_APPLICATION_ID
    APPLICATION_DISPLAY_NAME="MY_APPLICATION_DISPLAY_NAME"
    HOST_NAME=MY_HOST_NAME

    Substitua:

    • MY_PROJECT_ID: o ID do projeto em que o gateway seguro é criado.
    • MY_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.
    • MY_APPLICATION_DISPLAY_NAME: o nome legível a ser mostrado.
    • MY_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 seguros

    SECURITY_GATEWAY_ID=MY_SECURITY_GATEWAY_ID
    SECURITY_GATEWAY_DISPLAY_NAME="MY_SECURITY_GATEWAY_DISPLAY_NAME"

    Substitua:

    • MY_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.
    • MY_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 beta beyondcorp security-gateways create ${SECURITY_GATEWAY_ID} \
  --project=${PROJECT_ID} \
  --location=global \
  --display-name="MY_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": "MY_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 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}"
        

    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.

Criar 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 beta 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

Para rotear o tráfego do recurso de aplicativo pelo gateway seguro, configure o Chrome aplicando um arquivo PAC nas configurações do navegador no Google Admin Console.

  1. Crie ou atualize um arquivo PAC.

    • Se você estiver criando seu primeiro aplicativo, crie um arquivo pac_config.js usando o exemplo de arquivo PAC a seguir.

    • Se você estiver criando um segundo aplicativo ou um posterior, 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 = ["MY_HOST_NAME"];
    
     for (const site of sites) {
       if (shExpMatch(url, 'https://' + site + '/*') || shExpMatch(url, '*.' + site + '/*')) {
         return PROXY;
       }
     }
    return 'DIRECT';
    }

    Se você estiver usando um arquivo PAC que não é específico de um gateway seguro, mescle os arquivos PAC adicionando os domínios do aplicativo à matriz "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 o papel Usuário de objetos do Storage no bucket.

  3. Para verificar se o arquivo enviado é sempre a versão mais recente, ajuste o comportamento de 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 sempre faça o download da 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 uma unidade organizacional ou um grupo e clique em Modo de proxy.
  4. Na página "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.

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 que você siga um padrão "ler-modificar-gravar". Isso garante que você está apenas adicionando à política atual, não substituindo-a.

  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.

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, um arquivo policy.json que contém a política atual será criado.

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 da função roles/beyondcorp.securityGatewayUser.

Seu policy.json precisa ser semelhante ao exemplo a seguir:

{
  "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 a seguir 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 é 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.

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"

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 exemplo a seguir mostra uma política que concede acesso somente se o endereço IP de origem estiver em um 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 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.

  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 uma extensão do Chrome, clique no botão +.
  5. Pesquise ekajlcmdfcigmdbphhifahdfjbkciflj e force a instalação para todos os usuários na unidade organizacional ou no grupo.
  6. Clique na extensão instalada e acesse o campo Política para extensões e forneça o seguinte valor JSON:

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

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