Configurar TLS mútuo para um balanceador de carga de aplicativo clássico

Nesta página, mostramos exemplos de configuração de TLS mútuo (mTLS) para um balanceador de carga de aplicativo clássico.

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 beta compute target-https-proxies export.

    global

      gcloud beta compute target-https-proxies export TARGET_HTTPS_PROXY_NAME \
          --destination=TARGET_PROXY_FILENAME \
          --global
      

    Substitua:

    • TARGET_HTTPS_PROXY_NAME: o nome do proxy de destino.
    • TARGET_PROXY_FILENAME: o nome de um arquivo yaml. Por exemplo, 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"

    2. 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=REGION
    

    Substitua:

    REGION: use 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 TARGET_PROXY_FILENAME, use o comando a seguir. Substitua PROJECT_ID pelo ID do projeto do Google Cloud.

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

    global

       gcloud beta compute target-https-proxies import TARGET_HTTPS_PROXY_NAME \
           --source=TARGET_PROXY_FILENAME \
           --global
       

    Substitua:

    • TARGET_HTTPS_PROXY_NAME: o nome do proxy de destino.
    • TARGET_PROXY_FILENAME: o nome de um arquivo yaml. Por exemplo, mtls_target_proxy.yaml.

Adicionar cabeçalhos personalizados mTLS

Com o mTLS ativado, é possível usar cabeçalhos 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