Esta página descreve como ativar o acesso baseado em certificado (CBA, na sigla em inglês) para seus aplicativos da Web. É possível usar o CBA para proteger o acesso de dispositivos confiáveis a aplicativos da Web empresariais executados no Google Cloud.
Visão geral
O CBA para aplicativos da Web usa os recursos de acesso baseado no contexto do Chrome Enterprise Premium e a rede do Google Cloud para proteger o acesso usando TLS mútuo (mTLS). Confira a seguir os principais componentes com que você trabalha para ativar a CBA em aplicativos da Web:
- Access Context Manager: permite criar níveis de acesso que exigem certificados ao determinar o acesso a aplicativos da Web.
- Identity-Aware Proxy (IAP): autentica o acesso do usuário a aplicativos da Web.
- Balanceador de carga HTTPS do Google Cloud: oferece autenticação mútua (mTLS) entre usuários e aplicativos da Web.
- Política do Chrome Enterprise: oferece autenticação mútua (mTLS) entre e aplicativos da Web ao usar o navegador Chrome.
Antes de começar
Verifique se você tem uma versão atual da Google Cloud CLI. executando o seguinte comando:
gcloud components update
Configurar o mTLS para o balanceador de carga HTTPS externo
Siga as instruções para configurar balanceador de carga HTTPS externo. Anote o nome do proxy HTTPS de destino que é criado, porque você vai precisar dele em uma etapa posterior.
Criar uma configuração de confiança
Crie uma configuração de confiança para representam seu tipo de infraestrutura de chave pública (ICP).
Para concluir essa tarefa, você precisa ter o
certificatemanager.trustconfigs.create
no projeto de destino do Google Cloud.
É possível criar uma configuração de confiança usando um certificado emitido pelo Google (Método 1), seu próprio certificado (Método 2) ou um certificado autoassinado com a Verificação de endpoints (Método 3).
Método 1
Use um certificado emitido pelo Google para criar uma configuração de confiança.
- Conclua as etapas para criar uma AC raiz.
Busque o conteúdo do arquivo PEM:
gcloud privateca roots describe ROOT_CA_ID \ --pool=POOL_ID \ --location=CA_LOCATION \ --format='value(pemCaCertificates)'
Substitua:
- ROOT_CA_ID: o ID do certificado raiz.
- POOL_ID: o ID do pool do certificado raiz.
- CA_LOCATION: o local da AC.
Recupere o certificado raiz, retornado no campo
pemCaCertificates
. O certificado é a string entre os marcadoresBEGIN CERTIFICATE
eEND CERTIFICATE
e inclui ambos.Salve o certificado raiz no formato PEM em um arquivo.
Crie uma configuração de confiança:
Configure as variáveis de ambiente a seguir:
ROOT_PEM_FILE=TRUST_ANCHOR_PATH INT_PEM_FILE1=IM_CERT_PATH INT_PEM_FILE2=SECOND_IM_CERT_PATH
Substitua:
- TRUST_ANCHOR_PATH: o caminho para a âncora de confiança codificada em PEM.
- IM_CERT_PATH: o caminho para o certificado intermediário codificado em PEM.
- SECOND_IM_CERT_PATH: o caminho para o segundo certificado intermediário codificado em PEM.
Prepare o conteúdo do arquivo YAML de configuração de confiança:
ROOT=$(cat ROOT_PEM_FILE | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g') INT_1=$(cat INT_PEM_FILE1 | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g') INT_2=$(cat INT_PEM_FILE2 | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g')
Crie o arquivo YAML de configuração de confiança:
cat << EOF > trust_config.yaml name: "${TRUST_CONFIG_NAME?}" trustStores: - trustAnchors: - pemCertificate: "${ROOT?}" intermediateCas: - pemCertificate: "${INT_1?}" - pemCertificate: "${INT_2?}" EOF
Esse arquivo YAML define uma configuração de confiança chamada
TRUST_CONFIG_NAME
. O configuração de confiança contém um repositório de confiança, que inclui o endereço e dois intermediários.Importe a configuração de confiança para o Gerenciador de certificados do Google Cloud:
gcloud certificate-manager trust-configs import TRUST_CONFIG_NAME \ --project=GCP_PROJECT \ --source=${PWD?}/trust_config.yaml
Substitua:
- TRUST_CONFIG_NAME: o nome da configuração de confiança.
- GCP_PROJECT: o ID do projeto do Google Cloud.
Se você implantar uma estrutura mais complexa com ACs intermediárias assinadas pelo
raiz, adicione os intermediários como intermediateCAs
.
Método 2
Use sua própria implantação de ICP com certificados existentes para criar uma configuração de confiança.
Esse tipo de configuração de confiança pressupõe um repositório de confiança básico com um único âncora que representa um certificado raiz. Nenhum certificado intermediário é especificado.
Crie uma configuração de confiança:
Configure as variáveis de ambiente a seguir:
ROOT_PEM_FILE=TRUST_ANCHOR_PATH INT_PEM_FILE1=IM_CERT_PATH INT_PEM_FILE2=SECOND_IM_CERT_PATH
Substitua:
- TRUST_ANCHOR_PATH: o caminho para a âncora de confiança codificada em PEM.
- IM_CERT_PATH: o caminho para o certificado intermediário codificado em PEM.
- SECOND_IM_CERT_PATH: o caminho para o segundo certificado intermediário codificado em PEM.
Prepare o conteúdo do arquivo YAML de configuração de confiança:
ROOT=$(cat ROOT_PEM_FILE | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g') INT_1=$(cat INT_PEM_FILE1 | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g') INT_2=$(cat INT_PEM_FILE2 | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g')
Crie o arquivo YAML de configuração de confiança:
cat << EOF > trust_config.yaml name: "${TRUST_CONFIG_NAME?}" trustStores: - trustAnchors: - pemCertificate: "${ROOT?}" intermediateCas: - pemCertificate: "${INT_1?}" - pemCertificate: "${INT_2?}" EOF
Esse arquivo YAML define uma configuração de confiança chamada
TRUST_CONFIG_NAME
. O configuração de confiança contém um repositório de confiança, que inclui o endereço e dois intermediários.Importe a configuração de confiança para o Gerenciador de certificados do Google Cloud:
gcloud certificate-manager trust-configs import TRUST_CONFIG_NAME \ --project=GCP_PROJECT \ --source=${PWD?}/trust_config.yaml
Substitua:
- TRUST_CONFIG_NAME: o nome da configuração de confiança.
- GCP_PROJECT: o ID do projeto do Google Cloud.
Método 3
Se você estiver usando um navegador Chrome e quiser usar um certificado autoassinado com a Verificação de endpoints, siga as instruções desta seção.
Siga as instruções para implantar a Verificação de endpoints na sua organização. A Endpoint Verification implanta automaticamente uma conta de serviço do Google aos seus dispositivos, sem precisar criar uma configuração de confiança.
Criar uma política de TLS para ativar o mTLS no balanceador de carga externo
Se você usou o Método 3, pule esta etapa.
Para concluir esta tarefa, é necessário ter as seguintes permissões:
certificatemanager.trustconfigs.use
na configuração de confiança que você criou para esteServerTlsPolicy
networksecurity.serverTlsPolicies.create
no projeto de destino do Google Cloud
Crie o arquivo YAML da política de TLS do servidor:
cat << EOF > server_tls_policy.yaml name: "SERVER_TLS_POLICY_NAME" mtlsPolicy: clientValidationMode: ALLOW_INVALID_OR_MISSING_CLIENT_CERT clientValidationTrustConfig: projects/GCP_PROJECT/locations/global/trustConfigs/TRUST_CONFIG_NAME EOF
Substitua:
- SERVER_TLS_POLICY_NAME: o nome da política de TLS do servidor.
- GCP_PROJECT: o ID do projeto do Google Cloud.
- TRUST_CONFIG_NAME: a configuração de confiança que você criado em uma etapa anterior.
Para informações sobre as opções de validação do cliente para
clientValidationMode
, consulte Modos de validação do cliente MTLS.Importe o YAML da política de TLS do servidor para o projeto do Google Cloud:
gcloud network-security server-tls-policies import ${SERVER_TLS_POLICY_NAME?} \ --project=GCP_PROJECT \ --source=${PWD?}/server_tls_policy.yaml \ --location=global
Substitua GCP_PROJECT pelo ID do projeto do Google Cloud.
Depois de criar uma política TLS, ela não poderá ser modificada. Se você quiser fazer alterações em um a política de TLS, exclua a política atual e crie uma nova.
Anexar uma política de TLS a uma política HTTPS de destino
Para concluir esta tarefa, você precisa ter a permissão compute.targetHttpsProxies.get
no projeto do Google Cloud de destino.
Exporte o proxy HTTPS de destino atual para um arquivo local:
gcloud compute target-https-proxies export TARGET_HTTPS_PROXY_NAME \ --project=GCP_PROJECT \ --global \ --destination=${PWD?}/xlb-mtls-target-proxy.yaml
Substitua:
- TARGET_HTTPS_PROXY_NAME: o proxy HTTPS de destino.
- GCP_PROJECT: o ID do projeto do Google Cloud.
Anexe o
ServerTlsPolicy
à configuração do proxy HTTPS de destino:Para concluir esta tarefa, é necessário ter as seguintes permissões:
networksecurity.serverTlsPolicies.use
noServerTlsPolicy
que você criou para o proxy HTTPS de destinocompute.targetHttpsProxies.update
no projeto de destino do Google Cloud
echo "serverTlsPolicy: //networksecurity.googleapis.com/projects/GCP_PROJECT/locations/global/serverTlsPolicies/SERVER_TLS_POLICY_NAME" >> xlb-mtls-target-proxy.yaml
Substitua:
- GCP_PROJECT: o ID do projeto do Google Cloud.
- SERVER_TLS_POLICY_NAME: a política de TLS do servidor.
Atualize o proxy HTTPS de destino importando a nova configuração do arquivo local:
gcloud compute target-https-proxies import TARGET_HTTPS_PROXY_NAME \ --project=GCP_PROJECT \ --global \ --source=${PWD?}/xlb-mtls-target-proxy.yaml
Substitua:
- TARGET_HTTPS_PROXY_NAME: o proxy HTTPS de destino.
- GCP_PROJECT: o ID do projeto do Google Cloud.
Criar um nível de acesso que exige certificados
Console
- Siga as instruções para criar um nível de acesso personalizado.
Adicione a seguinte expressão ao seu nível de acesso personalizado:
Se você criou uma configuração de confiança (método 1 ou método 2), adicione o seguinte: expressão no campo Condições do seu nível de acesso personalizado para usar Vinculação de atestado de ICP ao autenticar:
certIsPkiAttested(origin, ["TLS_POLICY_FULL_RESOURCE_PATH1", "TLS_POLICY_FULL_RESOURCE_PATH2", …]) == true
Em que TLS_POLICY_FULL_RESOURCE_PATH1 e TLS_POLICY_FULL_RESOURCE_PATH2 são os caminhos que representam várias configurações de confiança:
certificatemanager.googleapis.com/projects/GCP_PROJECT/locations/global/trustConfigs/TRUST_CONFIG_NAME
.É necessário fornecer pelo menos um caminho de configuração de confiança.
Substitua:
- GCP_PROJECT: o ID do projeto do Google Cloud.
- TRUST_CONFIG_NAME: o nome da configuração de confiança.
Se você usou uma conta de serviço certificado (Método 3), adicione a seguinte expressão no Condições do seu nível de acesso personalizado para usar o certificado vinculação ao autenticar:
certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE
gcloud
Se você criou uma configuração de confiança (método 1 ou 2), execute o comando a seguir para criar um nível de acesso personalizado que use a vinculação de atestado de PKI na autenticação:
gcloud access-context-manager levels create ACCESS_LEVEL_NAME \
--title=TITLE \
--custom-level-spec=FILE \
--description=DESCRIPTION \
--policy=POLICY_NAME
Substitua:
- ACCESS_LEVEL_NAME: um nome exclusivo para o nível de acesso.
- TITLE: um título legível.
FILE: um arquivo YAML que contém a seguinte expressão:
certIsPkiAttested(origin, ["TLS_POLICY_FULL_RESOURCE_PATH1", "TLS_POLICY_FULL_RESOURCE_PATH2", …]) == true
Em que TLS_POLICY_FULL_RESOURCE_PATH1 e TLS_POLICY_FULL_RESOURCE_PATH2 são os caminhos que representam várias configurações de confiança:
certificatemanager.googleapis.com/projects/GCP_PROJECT/locations/global/trustConfigs/TRUST_CONFIG_NAME
.É necessário fornecer pelo menos um caminho de configuração de confiança.
Substitua:
- GCP_PROJECT: o ID do projeto do Google Cloud.
- TRUST_CONFIG_NAME: o nome da configuração de confiança.
DESCRIPTION: uma descrição longa do nível de acesso.
POLICY_NAME: a política de acesso da sua organização.
Se você não tiver uma configuração de confiança porque está usando uma conta de serviço certificado com Verificação de endpoints (Método 3), adicione a seguinte expressão ao seu nível de acesso personalizado:
certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE
Aplicar acesso baseado em certificado usando o Identity-Aware Proxy (IAP)
Na arquitetura de aplicativos da Web (CBA), o IAP oferece aplicação de políticas baseadas em principal para proteger aplicativos da Web contra dispositivos não confiáveis.
Siga estas etapas para ativar o IAP e configurar a política de CBA:
- Se você não tiver configurado o IAP, siga as instruções para configurar o IAP.
- Acesse o IAP para anexar o nível de acesso que você criou anteriormente:
Acesse o IAP - Selecione o recurso que você quer proteger com a CBA e clique em Configurações.
- No campo Níveis de acesso, insira o nome do nível de acesso que você criou.
Para usar a Google Cloud CLI para configurar uma política de CBA no IAP, consulte a documentação da Google Cloud CLI.
Configurar o navegador para selecionar o certificado automaticamente
Para que o navegador selecione automaticamente o certificado ao determinar o acesso, siga as etapas para o navegador.
Chrome
Configure a política AutoSelectCertificateForURLs
do Chrome para que ele use
o certificado correto durante o handshake de mTLS.
Verifique se o navegador Chrome é gerenciado pelo Gerenciamento de nuvem do navegador Chrome ou pela Política de grupo do Windows:
- Windows, macOS e Linux: conclua as etapas para configurar um perfil gerenciado do Chrome.
- Chrome: Registre o dispositivo na empresa.
Adicione a política
AutoSelectCertificateForUrls
:- No Admin Console, acesse Dispositivos > Chrome > Configurações > Usuário e Configurações do navegador > Certificados do cliente.
- Selecione uma organização.
- Adicione uma política
AutoSelectCertificateForUrls
para o URL do seu aplicativo da Web e as informações do certificado raiz.
Para mais informações, consulte a documentação do esquema da política. Veja a seguir um exemplo de configuração de política que usa o certificado da Verificação de endpoints:
{
"pattern":"https://[*.].mysite.com",
"Filter":{
"ISSUER":{
"CN":"Google Endpoint Verification"
}
}
}
Safari
Configure a preferência de identidade:
- Abra o app Acesso às Chaves e selecione Todos os itens.
- Selecione o certificado que você quer configurar.
- Clique em Arquivo > Nova preferência de identidade.
- Digite o URL e clique em Adicionar.
Isso cria uma nova entrada de preferência de identidade no Keychain que pode ser atualizada.
Edge
Defina a política AutoSelectCertificateForUrls
Edge seguindo as instruções
na documentação do Edge.