Acesso seguro a aplicativos SaaS

Esta página mostra como proteger seus aplicativos SaaS usando o 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 de aplicativos 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=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 por humanos 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 seguro

    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 por humanos 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 elemento básico 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.

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

gcloud

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

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

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.

gcloud

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

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"

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": "'accessPolicies/1234567890/accessLevels/in_us' in request.auth.access_levels",
          "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 direto 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