Configurar o TLS mútuo para um balanceador de carga de aplicativo externo global

Nesta página, mostramos exemplos de como configurar o TLS mútuo (mTLS) para um balanceador de carga de aplicativo externo global.

Antes de começar

Configurar o mTLS para o balanceador de carga

Para que a autenticação TLS mútua funcione, depois de configurar um balanceador de carga, você precisa atualizar o proxy HTTPS de destino usando o recurso ServerTLSPolicy.

  1. Verifique se você já criou o recurso ServerTLSPolicy. Para instruções, consulte Criar os recursos de segurança de rede.

  2. Para listar todos os proxies HTTPS de destino no projeto, use o comando gcloud compute target-https-proxies list:

    gcloud compute target-https-proxies list
    

    Anote o nome do proxy HTTPS de destino para anexar o recurso ServerTLSPolicy. Esse nome é chamado de TARGET_HTTPS_PROXY_NAME nas etapas a seguir.

  3. Para exportar a configuração de um proxy HTTPS de destino para um arquivo, use o comando gcloud compute target-https-proxies export:

    gcloud compute target-https-proxies export TARGET_HTTPS_PROXY_NAME \
       --global \
       --destination=xlb-mtls-target-proxy.yaml
    
  4. Liste todos os recursos ServerTlsPolicies no local especificado do projeto atual.

    Console

    1. No console do Google Cloud, acesse a página Autenticação do cliente.

    Acesse a página "Autenticação do cliente"

    1. Todos os recursos ServerTlsPolicies serão exibidos.

    gcloud

    Para listar todos os recursos (ServerTlsPolicies) de autenticação do cliente, use o comando gcloud network-security server-tls-policies list:

    gcloud network-security server-tls-policies list \
     --location=global
    

    Anote o nome do recurso ServerTlsPolicies para configurar o mTLS. Esse nome será chamado de SERVER_TLS_POLICY_NAME na próxima etapa.

  5. Para anexar o arquivo de recurso ServerTlsPolicy xlb-mtls-target-proxy.yaml, use o comando a seguir. Substitua PROJECT_ID pelo ID do projeto do Google Cloud.

    echo "serverTlsPolicy: //networksecurity.googleapis.com/projects/PROJECT_ID/locations/global/serverTlsPolicies/SERVER_TLS_POLICY_NAME" >> xlb-mtls-target-proxy.yaml
    
  6. Para importar a configuração de um proxy HTTPS de destino de um arquivo, use o comando gcloud compute target-https-proxies import:

    gcloud compute target-https-proxies import TARGET_HTTPS_PROXY_NAME \
       --global \
       --source=xlb-mtls-target-proxy.yaml
    

Adicionar cabeçalhos personalizados mTLS

Com o mTLS ativado, é possível usar cabeçalhos de solicitação personalizados para transmitir informações sobre a conexão do mTLS para os serviços de back-end. Você também pode ativar o registro para que as falhas de conexão mTLS sejam capturadas nos registros.

  1. Para listar todos os serviços de back-end no projeto, use o comando gcloud compute backend-services list:

    gcloud compute backend-services list
    

    Anote o nome do serviço de back-end para ativar os cabeçalhos e a geração de registros personalizados. Esse nome é chamado de BACKEND_SERVICE na etapa a seguir.

  2. Para atualizar o serviço de back-end, use o comando gcloud compute backend-services update:

    gcloud compute backend-services update BACKEND_SERVICE \
      --global \
      --enable-logging \
      --logging-sample-rate=1 \
      --custom-request-header='X-Client-Cert-Present:{client_cert_present}' \
      --custom-request-header='X-Client-Cert-Chain-Verified:{client_cert_chain_verified}' \
      --custom-request-header='X-Client-Cert-Error:{client_cert_error}' \
      --custom-request-header='X-Client-Cert-Hash:{client_cert_sha256_fingerprint}' \
      --custom-request-header='X-Client-Cert-Serial-Number:{client_cert_serial_number}' \
      --custom-request-header='X-Client-Cert-SPIFFE:{client_cert_spiffe_id}' \
      --custom-request-header='X-Client-Cert-URI-SANs:{client_cert_uri_sans}' \
      --custom-request-header='X-Client-Cert-DNSName-SANs:{client_cert_dnsname_sans}' \
      --custom-request-header='X-Client-Cert-Valid-Not-Before:{client_cert_valid_not_before}' \
      --custom-request-header='X-Client-Cert-Valid-Not-After:{client_cert_valid_not_after}'
    

A seguir