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 corporativos em execução 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 Google Cloud redes 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.
- Google Cloud Balanceador de carga HTTPS: 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 usuários 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 o balanceador de carga externo HTTPS. 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 representar seu tipo de infraestrutura de chave pública (ICP).
Para concluir essa tarefa, você precisa ter a permissão
certificatemanager.trustconfigs.create
no projeto Google Cloud de destino.
É 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 verificação de endpoint (método 3).
Método 1
Use um certificado emitido pelo Google para criar uma configuração de confiança.
- Siga as etapas para criar uma AC raiz.
Extraia 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.
Extraia o certificado raiz, retornado no campo
pemCaCertificates
. O certificado é a string entre os marcadoresBEGIN CERTIFICATE
eEND CERTIFICATE
e inclui os dois marcadores.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
. A configuração de confiança contém um repositório de confiança, que inclui o certificado raiz e dois certificados intermediários.Importe a configuração de confiança para o Google Cloud Gerenciador de certificados:
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 Google Cloud projeto.
Se você implantar uma estrutura mais complexa com ACs intermediárias assinadas pela
raiz, adicione as intermediárias 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 armazenamento de confiança básico com uma única âncora de confiança 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
. A configuração de confiança contém um repositório de confiança, que inclui o certificado raiz e dois certificados intermediários.Importe a configuração de confiança para o Google Cloud Gerenciador de certificados:
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 Google Cloud projeto.
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 Verificação de endpoints implanta automaticamente um certificado autoassinado emitido pelo Google nos seus dispositivos, e você não precisa 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 criada para esteServerTlsPolicy
networksecurity.serverTlsPolicies.create
no projeto Google Cloud alvo
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 Google Cloud projeto.
- TRUST_CONFIG_NAME: a configuração de confiança que você criou 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 do mTLS.Importe o YAML da política de TLS do servidor para o projeto 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 Google Cloud .
Depois de criar uma política TLS, não é possível modificá-la. Se você quiser fazer alterações em uma política 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 essa tarefa, você precisa ter a permissão compute.targetHttpsProxies.get
no projeto 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 Google Cloud projeto.
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 Google Cloud alvo
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 Google Cloud projeto.
- 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 Google Cloud projeto.
Criar um nível de acesso que exija 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 2), adicione a seguinte expressão no campo Conditions do seu nível de acesso personalizado para usar vinculação de atestado de certificado de assinatura digital (PKI, na sigla em inglês) 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 Google Cloud projeto.
- TRUST_CONFIG_NAME: o nome da configuração de confiança.
Se você usou um certificado autoassinado emitido pelo Google (método 3), adicione a seguinte expressão no campo Condições do seu nível de acesso personalizado para usar a vinculação de certificado na autenticação:
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 para humanos.
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 Google Cloud projeto.
- TRUST_CONFIG_NAME: o nome da configuração de confiança.
DESCRIPTION: uma descrição detalhada 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 um certificado autoassinado com a 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 o acesso baseado em certificado usando o Identity-Aware Proxy (IAP)
Na arquitetura de CBA para aplicativos da Web, o IAP oferece a aplicação de políticas baseadas em principal para proteger seus 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 CLI do Google Cloud para configurar uma política de CBA no IAP, consulte a documentação da CLI do Google Cloud.
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 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: siga 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 > Google Chrome > Configurações > Configurações do usuário e 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 sobre o esquema de políticas. Confira abaixo um exemplo de configuração de política que usa o certificado da verificação de endpoint:
{
"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.