Acesso seguro a aplicações SaaS

Esta página explica o processo de proteção das suas aplicações SaaS através do gateway seguro do Chrome Enterprise Premium.

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

Como funciona a proteção do acesso a aplicações de SaaS

Segue-se uma vista geral de nível superior de como um gateway seguro protege as suas aplicações SaaS:

  1. As definições do navegador do lado do cliente encaminham o tráfego da aplicação através de um proxy de gateway seguro.
  2. O gateway seguro verifica as políticas de acesso sensível ao contexto para autorizar o acesso do cliente (utilizador e dispositivo).
  3. Se o acesso do cliente for permitido, a gateway encaminha o tráfego para a aplicação através de endereços IP de origem exclusivos atribuídos a essa gateway e Google Cloud região. Estes endereços IP atribuídos estão reservados exclusivamente para o gateway que criar e não podem ser usados por outros utilizadores ou gateways. Para controlar o acesso, pode adicionar estes endereços IP de origem dedicados a uma lista de autorizações na sua aplicação SaaS.

Antes de começar

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

Limitações

Um gateway seguro do Chrome Enterprise Premium tem a seguinte limitação: um gateway seguro não suporta aplicações SaaS que permitem apenas a conetividade IPv6.

Configure o ambiente shell

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

  • Parâmetros gerais

    API="beyondcorp.googleapis.com"
    API_VERSION=v1
    PROJECT_ID=MY_PROJECT_ID
    APPLICATION_ID=MY_APPLICATION_ID
    APPLICATION_DISPLAY_NAME="MY_APPLICATION_DISPLAY_NAME"
    HOST_NAME=MY_HOST_NAME

    Substitua o seguinte:

    • MY_PROJECT_ID: o ID do projeto onde o gateway seguro é criado.
    • MY_APPLICATION_ID: o ID da sua aplicação, como github. O nome pode ter até 63 carateres e pode conter letras minúsculas, números e hífenes. O primeiro caráter tem de ser uma letra e o último caráter pode ser uma letra ou um número.
    • MY_APPLICATION_DISPLAY_NAME: o nome legível por humanos a apresentar.
    • MY_HOST_NAME: o nome do anfitrião da sua aplicação. Por exemplo, github.com. O nome de anfitrião pode ter até 253 carateres e tem de seguir um dos seguintes formatos:

      • Um endereço IPv4 válido
      • Um endereço IPv6 válido
      • Um nome de DNS válido
      • Um asterisco (*)
      • Um asterisco (*) seguido de um nome DNS válido
  • Parâmetros do gateway seguro

    SECURITY_GATEWAY_ID=MY_SECURITY_GATEWAY_ID
    SECURITY_GATEWAY_DISPLAY_NAME="MY_SECURITY_GATEWAY_DISPLAY_NAME"

    Substitua o seguinte:

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

Crie um gateway seguro

Um gateway seguro do Chrome Enterprise Premium é uma base fundamental para estabelecer ligações seguras às suas aplicações. Atribui 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 seguinte comando. Para a flag --hubs, especifique uma ou mais regiões da seguinte lista.

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 do pedido. Para o objeto hubs, especifique uma ou mais regiões da seguinte lista.

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 conetividade de saída para a aplicação de destino. Pode ter um hub para cada região e cada hub fornece dois endereços IP. Pode 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

Configure uma aplicação SaaS

Depois de criar um gateway seguro, pode configurar as suas aplicações SaaS para usar o gateway seguro para acesso seguro.

  1. Obtenha os endereços IP atribuídos pelo gateway seguro para cada hub. São atribuídos dois endereços IP a 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}"
        

    Segue-se um exemplo de resposta GET de um gateway seguro com hubs. No exemplo, são criados hubs nas regiões us-central1 e us-east1, e todos os endereços IP devolvidos na resposta têm de ser permitidos na aplicação 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 autorizações de IP da sua aplicação SaaS. Por exemplo, para uma aplicação GitHub, pode seguir este guia: Gerir endereços IP permitidos para a sua organização.

Crie um recurso de aplicação

As informações seguintes explicam o processo de configuração e configuração de um recurso de aplicação de gateway seguro.

Crie um recurso de aplicação de gateway seguro em Google Cloud

O recurso de aplicação Google Cloud é um sub-recurso do recurso de gateway seguro. Crie um recurso de aplicação 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}"
      

Configure o modo proxy do Google Chrome

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

  1. Crie ou atualize um ficheiro PAC.

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

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

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

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

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

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

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

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

Atualize as definições do modo de proxy

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

Configure uma política de acesso

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

Atualize uma política de acesso em segurança

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

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

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

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

Obtenha a política atual

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

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

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

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

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

Modifique o ficheiro de política

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

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

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

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

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

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

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

Aplique a política atualizada

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

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

Adicione uma política de acesso condicional

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

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

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

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

Instale a extensão do Chrome Enterprise Premium

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

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

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

Experiência do utilizador final

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

Aceder à aplicação no Chrome

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

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

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

O que se segue?