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:
- As configurações do navegador do lado do cliente roteiam o tráfego de aplicativos por um proxy de gateway seguro.
- O gateway seguro verifica as políticas de acesso baseado no contexto para autorizar o acesso do cliente (usuário e dispositivo).
- 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:
- Uma licença do Chrome Enterprise Premium
- Acesso ao Google Admin Console com uma conta de administrador
- Um projeto do Google Cloud com uma conta de faturamento atribuída e a API a seguir ativada: API BeyondCorp
O seguinte papel do Identity and Access Management (IAM) concedido ao administrador que está configurando tudo: nível do projeto: administrador do Cloud BeyondCorp (
beyondcorp.admin).Um aplicativo SaaS que você quer proteger. O aplicativo precisa oferecer suporte a
IP allowlistingpara aplicar verificações de segurança pelo Secure Gateway.
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_IDAPPLICATION_ID=MY_APPLICATION_IDAPPLICATION_DISPLAY_NAME="MY_APPLICATION_DISPLAY_NAME" HOST_NAME=MY_HOST_NAMESubstitua:
MY_PROJECT_ID: o ID do projeto em que o gateway seguro é criado.MY_APPLICATION_ID: o ID do seu aplicativo, comogithub. 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_IDSECURITY_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-south1asia-east1asia-south1asia-south2asia-southeast1europe-central2europe-north1europe-southwest1europe-west1europe-west2europe-west3europe-west4europe-west8europe-west9northamerica-northeast1northamerica-northeast2northamerica-south1southamerica-east1southamerica-west1us-central1us-east1us-east4us-east5us-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.
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
GETde um gateway seguro comhubs. No exemplo,hubssão criados nas regiõesus-central1eus-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", ] } } } } ] }
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.
Crie ou atualize um arquivo PAC.
Se você estiver criando seu primeiro aplicativo, crie um arquivo
pac_config.jsusando o exemplo de arquivo PAC a seguir.Se você estiver criando um segundo aplicativo ou um posterior, atualize o arquivo
pac_config.jsatual 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".
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.
Para verificar se o arquivo enviado é sempre a versão mais recente, ajuste o comportamento de armazenamento em cache definindo o cabeçalho
Cache-Controlcomono-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-Controle como ele afeta o armazenamento em cache do navegador, consulte Cabeçalho Cache-Control.Copie o URL público do arquivo enviado.
Atualizar as configurações do modo de proxy
- Acesse o Google Admin Console.
- Clique em Dispositivos -> Chrome -> Configurações.
- Selecione uma unidade organizacional ou um grupo e clique em Modo de proxy.
- 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.
Leitura: primeiro, receba a política de acesso atual.
Modificar: edite o arquivo de política localmente para adicionar ou mudar permissões.
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.
- Acesse o Google Admin Console.
- Clique em Navegador Chrome -> Apps e extensões.
- Clique na guia Usuários e navegadores.
- Para adicionar uma extensão do Chrome, clique no botão +.
- Pesquise
ekajlcmdfcigmdbphhifahdfjbkciflje force a instalação para todos os usuários na unidade organizacional ou no grupo. 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.