En esta página, se describe cómo habilitar el acceso basado en certificados (CBA) para tus aplicaciones web. Puedes usar la CBA para proteger el acceso desde dispositivos confiables a las aplicaciones web empresariales que se ejecutan en Google Cloud.
Descripción general
El CBA para aplicaciones web usa las funciones de acceso adaptado al contexto y las redesGoogle Cloud de Chrome Enterprise Premium para proteger el acceso con TLS mutua (mTLS). A continuación, se muestran los componentes principales con los que trabajas para habilitar la CBA para aplicaciones web:
- Access Context Manager: Te permite crear niveles de acceso que requieran certificados cuando se determine el acceso a las aplicaciones web.
- Identity-Aware Proxy (IAP): autentica el acceso de los usuarios a las aplicaciones web.
- Google Cloud Balanceador de cargas HTTPS: Proporciona autenticación mutua (mTLS) entre los usuarios y las aplicaciones web.
- Política de Chrome Enterprise: Proporciona autenticación mutua (mTLS) entre los usuarios y las aplicaciones web cuando se usa el navegador Chrome.
Antes de comenzar
Ejecuta el siguiente comando para verificar que tienes una versión actual de Google Cloud CLI:
gcloud components update
Configura la mTLS para el balanceador de cargas HTTPS externo
Sigue las instrucciones para configurar el balanceador de cargas HTTPS externo. Toma nota del nombre del proxy HTTPS de destino que se creó, ya que lo necesitarás en un paso posterior.
Crea una configuración de confianza
Crea una configuración de confianza para representar tu tipo de infraestructura de clave pública (PKI).
Para completar esta tarea, debes tener el permiso certificatemanager.trustconfigs.create
en el proyecto Google Cloud de destino.
Puedes crear una configuración de confianza con un certificado emitido por Google (método 1), con tu propio certificado (método 2) o con un certificado autofirmado con la Verificación de extremos (método 3).
Método 1
Usa un certificado emitido por Google para crear una configuración de confianza.
- Completa los pasos para crear una AC raíz.
Recupera el contenido del archivo PEM:
gcloud privateca roots describe ROOT_CA_ID \ --pool=POOL_ID \ --location=CA_LOCATION \ --format='value(pemCaCertificates)'
Reemplaza lo siguiente:
- ROOT_CA_ID: Es el ID del certificado raíz.
- POOL_ID: Es el ID del grupo de certificados raíz.
- CA_LOCATION: La ubicación de la AC.
Recupera el certificado raíz, que se muestra en el campo
pemCaCertificates
. El certificado es la cadena entre los marcadoresBEGIN CERTIFICATE
yEND CERTIFICATE
, y los incluye a ambos.Guarda el certificado raíz en formato PEM en un archivo.
Crea una configuración de confianza:
Configura las siguientes variables de entorno:
ROOT_PEM_FILE=TRUST_ANCHOR_PATH INT_PEM_FILE1=IM_CERT_PATH INT_PEM_FILE2=SECOND_IM_CERT_PATH
Reemplaza lo siguiente:
- TRUST_ANCHOR_PATH: Es la ruta de acceso a tu ancla de confianza codificada en PEM.
- IM_CERT_PATH: Es la ruta de acceso a tu certificado intermedio con codificación PEM.
- SECOND_IM_CERT_PATH: Es la ruta de acceso a tu segundo certificado intermedio codificado en PEM.
Prepara el contenido del archivo YAML de configuración de confianza:
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')
Crea el archivo YAML de configuración de confianza:
cat << EOF > trust_config.yaml name: "${TRUST_CONFIG_NAME?}" trustStores: - trustAnchors: - pemCertificate: "${ROOT?}" intermediateCas: - pemCertificate: "${INT_1?}" - pemCertificate: "${INT_2?}" EOF
Este archivo YAML define una configuración de confianza llamada
TRUST_CONFIG_NAME
. La configuración de confianza contiene un almacén de confianza, que incluye el certificado raíz y dos certificados intermedios.Importa la configuración de confianza en el Google Cloud Administrador de certificados:
gcloud certificate-manager trust-configs import TRUST_CONFIG_NAME \ --project=GCP_PROJECT \ --source=${PWD?}/trust_config.yaml
Reemplaza lo siguiente:
- TRUST_CONFIG_NAME: Es el nombre de tu configuración de confianza.
- GCP_PROJECT: El Google Cloud ID del proyecto.
Si implementas una estructura más compleja con AC intermedias firmadas por la raíz, asegúrate de agregar tus AC intermedias como intermediateCAs
.
Método 2
Usa tu propia implementación de PKI con certificados existentes para crear una configuración de confianza.
Este tipo de configuración de confianza supone un almacén de confianza básico con un único ancla de confianza que representa un certificado raíz. No se especifican certificados intermedios.
Crea una configuración de confianza:
Configura las siguientes variables de entorno:
ROOT_PEM_FILE=TRUST_ANCHOR_PATH INT_PEM_FILE1=IM_CERT_PATH INT_PEM_FILE2=SECOND_IM_CERT_PATH
Reemplaza lo siguiente:
- TRUST_ANCHOR_PATH: Es la ruta de acceso a tu ancla de confianza codificada en PEM.
- IM_CERT_PATH: Es la ruta de acceso a tu certificado intermedio con codificación PEM.
- SECOND_IM_CERT_PATH: Es la ruta de acceso a tu segundo certificado intermedio codificado en PEM.
Prepara el contenido del archivo YAML de configuración de confianza:
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')
Crea el archivo YAML de configuración de confianza:
cat << EOF > trust_config.yaml name: "${TRUST_CONFIG_NAME?}" trustStores: - trustAnchors: - pemCertificate: "${ROOT?}" intermediateCas: - pemCertificate: "${INT_1?}" - pemCertificate: "${INT_2?}" EOF
Este archivo YAML define una configuración de confianza llamada
TRUST_CONFIG_NAME
. La configuración de confianza contiene un almacén de confianza, que incluye el certificado raíz y dos certificados intermedios.Importa la configuración de confianza en el Google Cloud Administrador de certificados:
gcloud certificate-manager trust-configs import TRUST_CONFIG_NAME \ --project=GCP_PROJECT \ --source=${PWD?}/trust_config.yaml
Reemplaza lo siguiente:
- TRUST_CONFIG_NAME: Es el nombre de tu configuración de confianza.
- GCP_PROJECT: El Google Cloud ID del proyecto.
Método 3
Si usas un navegador Chrome y deseas usar un certificado autofirmado con la Verificación de extremos, sigue las instrucciones de esta sección.
Sigue las instrucciones para implementar Endpoint Verification en tu organización. Endpoint Verification implementa automáticamente un certificado firmado por Google en tus dispositivos, y no tienes que crear una configuración de confianza.
Crea una política de TLS para habilitar la mTLS en tu balanceador de cargas externo
Si usaste el método 3, puedes omitir este paso.
Para completar esta tarea, debes tener los siguientes permisos:
certificatemanager.trustconfigs.use
en la configuración de confianza que creaste para esteServerTlsPolicy
networksecurity.serverTlsPolicies.create
en el proyecto Google Cloud de destino
Crea el archivo YAML de la política de TLS del 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
Reemplaza lo siguiente:
- SERVER_TLS_POLICY_NAME: Es el nombre de la política de TLS del servidor.
- GCP_PROJECT: El Google Cloud ID del proyecto.
- TRUST_CONFIG_NAME: Es la configuración de confianza que creaste en un paso anterior.
Para obtener información sobre las opciones de validación de clientes para
clientValidationMode
, consulta Modos de validación de cliente de MTLS.Importa el archivo YAML de la política de TLS del servidor al Google Cloud proyecto:
gcloud network-security server-tls-policies import ${SERVER_TLS_POLICY_NAME?} \ --project=GCP_PROJECT \ --source=${PWD?}/server_tls_policy.yaml \ --location=global
Reemplaza GCP_PROJECT por el Google Cloud ID del proyecto.
Después de crear una política de TLS, no puedes modificarla. Si deseas realizar cambios en una política de TLS existente, bórrala y crea una nueva.
Adjunta una política de TLS a una política de HTTPS de destino
Para completar esta tarea, debes tener el permiso compute.targetHttpsProxies.get
en el proyecto Google Cloud de destino.
Exporta tu proxy HTTPS de destino existente a un archivo local:
gcloud compute target-https-proxies export TARGET_HTTPS_PROXY_NAME \ --project=GCP_PROJECT \ --global \ --destination=${PWD?}/xlb-mtls-target-proxy.yaml
Reemplaza lo siguiente:
- TARGET_HTTPS_PROXY_NAME: Es el proxy HTTPS de destino.
- GCP_PROJECT: El Google Cloud ID del proyecto.
Agrega
ServerTlsPolicy
a la configuración del proxy HTTPS de destino:Para completar esta tarea, debes tener los siguientes permisos:
networksecurity.serverTlsPolicies.use
en elServerTlsPolicy
que creaste para el proxy HTTPS de destinocompute.targetHttpsProxies.update
en el proyecto Google Cloud de destino
echo "serverTlsPolicy: //networksecurity.googleapis.com/projects/GCP_PROJECT/locations/global/serverTlsPolicies/SERVER_TLS_POLICY_NAME" >> xlb-mtls-target-proxy.yaml
Reemplaza lo siguiente:
- GCP_PROJECT: El Google Cloud ID del proyecto.
- SERVER_TLS_POLICY_NAME: Es la política de TLS del servidor.
Para actualizar el proxy HTTPS de destino, importa la configuración nueva desde el archivo local:
gcloud compute target-https-proxies import TARGET_HTTPS_PROXY_NAME \ --project=GCP_PROJECT \ --global \ --source=${PWD?}/xlb-mtls-target-proxy.yaml
Reemplaza lo siguiente:
- TARGET_HTTPS_PROXY_NAME: Es el proxy HTTPS de destino.
- GCP_PROJECT: El Google Cloud ID del proyecto.
Crea un nivel de acceso que requiera certificados
Console
- Sigue las instrucciones para crear un nivel de acceso personalizado.
Agrega la siguiente expresión a tu nivel de acceso personalizado:
Si creaste una configuración de confianza (método 1 o método 2), agrega la siguiente expresión en el campo Condiciones de tu nivel de acceso personalizado para usar la vinculación de certificación de PKI cuando realices la autenticación:
certIsPkiAttested(origin, ["TLS_POLICY_FULL_RESOURCE_PATH1", "TLS_POLICY_FULL_RESOURCE_PATH2", …]) == true
En el que TLS_POLICY_FULL_RESOURCE_PATH1 y TLS_POLICY_FULL_RESOURCE_PATH2 son las rutas de acceso que representan varias configuraciones de confianza:
certificatemanager.googleapis.com/projects/GCP_PROJECT/locations/global/trustConfigs/TRUST_CONFIG_NAME
.Debes proporcionar al menos una ruta de configuración de confianza.
Reemplaza lo siguiente:
- GCP_PROJECT: El Google Cloud ID del proyecto.
- TRUST_CONFIG_NAME: Es el nombre de tu configuración de confianza.
Si usaste un certificado firmado por el usuario emitido por Google (Método 3), agrega la siguiente expresión en el campo Condiciones de tu nivel de acceso personalizado para usar la vinculación de certificados cuando realices la autenticación:
certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE
gcloud
Si creaste una configuración de confianza (método 1 o método 2), ejecuta el siguiente comando para crear un nivel de acceso personalizado que use vinculación de certificación de PKI durante la autenticación:
gcloud access-context-manager levels create ACCESS_LEVEL_NAME \
--title=TITLE \
--custom-level-spec=FILE \
--description=DESCRIPTION \
--policy=POLICY_NAME
Reemplaza lo siguiente:
- ACCESS_LEVEL_NAME: Es un nombre único para el nivel de acceso.
- TITLE: Es un título legible por humanos.
FILE: Es un archivo YAML que contiene la siguiente expresión:
certIsPkiAttested(origin, ["TLS_POLICY_FULL_RESOURCE_PATH1", "TLS_POLICY_FULL_RESOURCE_PATH2", …]) == true
En el que TLS_POLICY_FULL_RESOURCE_PATH1 y TLS_POLICY_FULL_RESOURCE_PATH2 son las rutas de acceso que representan varias configuraciones de confianza:
certificatemanager.googleapis.com/projects/GCP_PROJECT/locations/global/trustConfigs/TRUST_CONFIG_NAME
.Debes proporcionar al menos una ruta de configuración de confianza.
Reemplaza lo siguiente:
- GCP_PROJECT: El Google Cloud ID del proyecto.
- TRUST_CONFIG_NAME: Es el nombre de tu configuración de confianza.
DESCRIPTION: Es una descripción con formato largo del nivel de acceso.
POLICY_NAME: La política de acceso de tu organización.
Si no tienes una configuración de confianza porque usas un certificado autofirmado con Endpoint Verification (método 3), agrega la siguiente expresión a tu nivel de acceso personalizado:
certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE
Aplica el acceso basado en certificados con Identity-Aware Proxy (IAP)
En la arquitectura de CBA para aplicaciones web, la IAP proporciona la aplicación forzosa de políticas basadas en el principal para proteger tus aplicaciones web de dispositivos no confiables.
Completa los siguientes pasos para habilitar la IAP y configurar la política de CBA:
- Si no tienes configurados los IAP, sigue las instrucciones para configurarlos.
- Ve a IAP para adjuntar el nivel de acceso que creaste antes:
Ve a IAP - Selecciona el recurso que deseas proteger con CBA y, luego, haz clic en Configuración.
- En el campo Niveles de acceso, ingresa el nombre del nivel de acceso que creaste.
Para usar Google Cloud CLI y configurar una política de CBA en el IAP, consulta la documentación de Google Cloud CLI.
Configura el navegador para que seleccione automáticamente el certificado
Para que el navegador seleccione automáticamente el certificado cuando determine el acceso, completa los pasos correspondientes.
Chrome
Configura la política de Chrome AutoSelectCertificateForURLs
para que Chrome use el certificado correcto durante el protocolo de enlace mTLS.
Asegúrate de que la Administración en la nube para el navegador Chrome o la directiva de grupo de Windows administren el navegador Chrome:
- Windows, macOS y Linux: Completa los pasos para configurar un perfil de Chrome administrado.
- Chrome: Inscribe el dispositivo en la empresa.
Agrega la política
AutoSelectCertificateForUrls
:- En la Consola del administrador, ve a Dispositivos > Chrome > Configuración > Configuración del usuario y del navegador > Certificados de cliente.
- Selecciona una organización.
- Agrega una política
AutoSelectCertificateForUrls
para la URL de tu aplicación web y la información del certificado raíz.
Para obtener más información, consulta la documentación sobre el esquema de políticas. A continuación, se muestra un ejemplo de configuración de política que usa el certificado de Endpoint Verification:
{
"pattern":"https://[*.].mysite.com",
"Filter":{
"ISSUER":{
"CN":"Google Endpoint Verification"
}
}
}
Safari
Configura la preferencia de identidad:
- Abre la app Acceso a llaveros y, luego, selecciona Todos los elementos.
- Selecciona el certificado que deseas configurar.
- Haz clic en File > New Identity Preference.
- Ingresa la URL y haz clic en Agregar.
Esto creará una nueva entrada de preferencia de identidad en tu llavero que puedes actualizar.
Edge
Para configurar la política de Edge de AutoSelectCertificateForUrls
, sigue las instrucciones de la documentación de Edge.