Puedes configurar la autenticación mutua de TLS (mTLS) de frontend en Secure Web Proxy para mejorar la seguridad de tus cargas de trabajo, como los agentes de IA. Secure Web Proxy usa mTLS de frontend para verificar las identidades de los clientes a través de certificados.
Esta integración te permite usar identidades de cliente validadas en las políticas de autorización de Secure Web Proxy para aplicar un control de acceso detallado al tráfico saliente.
Cómo funciona
En los siguientes pasos, se explica cómo Secure Web Proxy usa mTLS de frontend para proteger el tráfico saliente:
Conexión de proxy explícita: Puedes configurar el cliente para que use Secure Web Proxy como su proxy explícito. El cliente inicia una solicitud HTTPS CONNECT al frontend del Secure Web Proxy, en lugar de conectarse directamente a Internet.
Protocolo de enlace TLS mutuo: Durante la configuración de la conexión, Secure Web Proxy y el cliente realizan un protocolo de enlace mTLS en el frontend del proxy. El proxy usa un recurso
TrustConfigconfigurado para validar el certificado del cliente, mientras que el cliente valida el certificado del servidor del proxy.Extracción de identidad: Después de un protocolo de enlace exitoso, Secure Web Proxy extrae atributos de identidad únicos, como
URI_SAN, directamente del certificado de cliente validado.Autorización basada en la identidad: Secure Web Proxy evalúa la solicitud saliente según las políticas de autorización configuradas. Para determinar si la solicitud está autorizada, el proxy usa la identidad del cliente, que se verificó de forma criptográfica durante el protocolo de enlace mTLS.
Tráfico saliente seguro: Una vez autorizado y si hay una regla coincidente para un destino externo, Secure Web Proxy cumple con la solicitud al destino.
Ventajas clave
Configurar mTLS de frontend en Secure Web Proxy proporciona los siguientes beneficios operativos y de seguridad:
Seguridad mejorada: Logra un acceso de confianza cero, ya que se requiere la autenticación mTLS de frontend para todo el tráfico saliente. Esto garantiza que solo las cargas de trabajo con una identidad verificada puedan establecer una conexión con el proxy para acceder a servicios externos.
Configuración simplificada de la carga de trabajo: Usa el modo de enrutamiento de proxy explícito para Secure Web Proxy y aprovecha la capacidad del proxy de interceptar y autenticar solicitudes.
Control detallado: Aplica políticas detalladas y basadas en la identidad para determinar a qué servicios externos puede acceder cada carga de trabajo específica.
Ejemplo de caso de uso: Valida la identidad de tus cargas de trabajo
En las industrias reguladas y con un alto nivel de cumplimiento, como el sector bancario, verificar la ubicación de red de una solicitud no es suficiente para evitar el acceso no autorizado a los datos. Si configuran mTLS de frontend en Secure Web Proxy, las organizaciones pueden adoptar un modelo de identidad verificado de forma criptográfica. Esto garantiza que cada carga de trabajo, ya sea una instancia de máquina virtual (VM) o un agente de IA, debe demostrar su identidad específica con un certificado de confianza.
Este enfoque permite que los administradores apliquen medidas de protección basadas en la identidad que protegen las rutas sensibles salientes. Por ejemplo, un banco puede garantizar que solo una carga de trabajo específica de procesamiento de pagos autenticada pueda acceder a una puerta de enlace financiera externa.
Configura la autenticación de mTLS del frontend para Secure Web Proxy
En esta sección, se describen los pasos para configurar la autenticación de mTLS del frontend para tu instancia de Secure Web Proxy.
Antes de comenzar
Revisa la página Administra las configuraciones de confianza.
Solicita a tu administrador de Identity and Access Management que te otorgue los siguientes roles:
- Rol de propietario del administrador de certificados
(
roles/certificatemanager.owner) - Rol de administrador de red de Compute
(
roles/compute.networkAdmin) - Rol de administrador de seguridad de Compute
(
roles/compute.securityAdmin) - Rol de administrador de seguridad de red
(
roles/networksecurity.admin)
- Rol de propietario del administrador de certificados
(
Debes tener una instancia de Secure Web Proxy que hayas implementado en el modo de enrutamiento de proxy explícito.
Crea los certificados raíz e intermedio
En esta sección, se muestra cómo usar OpenSSL para generar un certificado de autoridad de certificación raíz (el ancla de confianza) y un certificado de la AC intermedio opcional. Secure Web Proxy usa estos certificados para verificar los certificados de cliente que presentan las cargas de trabajo durante el proceso de protocolo de enlace mTLS de frontend. Este proceso manual está diseñado para entornos de prueba y desarrollo, y proporciona el ancla de confianza que Secure Web Proxy necesita para verificar los certificados de cliente.
Un certificado raíz se encuentra en la parte superior de la cadena de certificados, mientras que un certificado intermedio actúa como un puente en la cadena de confianza hacia la raíz. El certificado intermedio tiene una firma criptográfica del certificado raíz. Cuando Secure Web Proxy recibe un certificado de cliente, valida la identidad estableciendo una cadena de confianza desde el certificado de cliente hasta el ancla de confianza configurada.
Usa los siguientes comandos para crear los certificados raíz e intermedio. Si bien el certificado intermedio es opcional, esta configuración lo usa para firmar el certificado del cliente y mostrar una jerarquía de certificados de varios niveles.
Crea un archivo de configuración de OpenSSL.
cat > example.cnf << EOF [req] distinguished_name = empty_distinguished_name [empty_distinguished_name] # Kept empty to allow setting via -subj command-line argument. [ca_exts] basicConstraints=critical,CA:TRUE keyUsage=keyCertSign extendedKeyUsage=clientAuth EOFCrea un certificado raíz X.509 autofirmado (
root.cert) y una clave privada (root.key).openssl req -x509 \ -new -sha256 -newkey rsa:2048 -nodes \ -days 3650 -subj '/CN=root' \ -config example.cnf \ -extensions ca_exts \ -keyout root.key -out root.certCrea la solicitud de firma de certificado (
int.req) para el certificado intermedio.openssl req -new \ -sha256 -newkey rsa:2048 -nodes \ -subj '/CN=int' \ -config example.cnf \ -extensions ca_exts \ -keyout int.key -out int.reqFirma la solicitud de firma de certificado (CSR) para crear el certificado intermedio X.509 (
int.cert).openssl x509 -req \ -CAkey root.key -CA root.cert \ -set_serial 1 \ -days 3650 \ -extfile example.cnf \ -extensions ca_exts \ -in int.req -out int.cert
Crea un certificado de cliente para realizar pruebas
Crea un certificado de hoja y una clave privada para la carga de trabajo del cliente de prueba. Durante el proceso de protocolo de enlace mTLS con tu instancia de Secure Web Proxy, el cliente proporciona este certificado de hoja para demostrar su identidad.
En el siguiente ejemplo, se usa OpenSSL para generar una clave de cliente y una CSR, y, luego, se firma la CSR con la clave de la CA intermedia que creaste en la sección Crea los certificados raíz e intermedio.
Ejecuta el siguiente comando de OpenSSL para generar una clave privada RSA llamada
client.key:openssl genpkey -algorithm RSA -out client.keyCrea un archivo de configuración llamado
client.cnfque especifique un nombre de DNS para el nombre alternativo del sujeto (SAN). Esto ayuda a garantizar que el certificado sea compatible con los requisitos de seguridad modernos.cat > client.cnf << EOF [req] distinguished_name = req_distinguished_name req_extensions = v3_req prompt = no [req_distinguished_name] CN = my-client.example.com [v3_req] keyUsage = critical, digitalSignature, keyEncipherment extendedKeyUsage = clientAuth subjectAltName = @alt_names [alt_names] DNS.1 = my-client.example.com EOFPuedes modificar los valores de
CNyDNS.1según sea necesario para las pruebas.Ejecuta el comando de solicitud de OpenSSL con la clave privada y el archivo de configuración que creaste para generar un archivo
client.req.openssl req -new -key client.key -out client.req -config client.cnfUsa el comando
x509de OpenSSL para firmar la solicitud con tu certificado (int.cert) y clave (int.key) intermedios. Establece un período de validez, como 365 días, y asegúrate de que las extensiones de tu archivo de configuración se apliquen al archivoclient.certgenerado.openssl x509 -req -in client.req -CA int.cert -CAkey int.key \ -set_serial 02 -days 365 -out client.cert \ -extfile client.cnf -extensions v3_reqEste proceso crea el archivo
client.cert. Registra el valor que se usa en el SAN de DNS (por ejemplo,my-client.example.com) como la identidad del cliente. Puedes usar este valor para identificar la carga de trabajo cuando crees tus políticas de autorización de Secure Web Proxy.
Da formato a los certificados
Da formato a los certificados raíz e intermedios en variables de entorno para usarlos en el archivo trust_config.yaml.
export ROOT_CERT=$(cat root.cert | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g')
export INTERMEDIATE_CERT=$(cat int.cert | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g')
Crea un recurso de configuración de confianza
Una configuración de confianza representa tu infraestructura de clave pública (PKI) en el Administrador de certificados. La configuración de confianza indica a tu instancia de Secure Web Proxy en qué certificados de la autoridad certificadora (AC) confiar cuando se verifican los certificados del cliente que se presentan durante un handshake de mTLS de frontend.
Este recurso de configuración de confianza de ejemplo contiene un almacén de confianza con un solo almacén de confianza con un ancla de confianza (CA raíz) y una CA intermedia. Usa el contenido del certificado de las variables de entorno que creaste en la sección anterior Da formato a los certificados.
Crea un archivo
trust_config.yaml.cat << EOF > trust_config.yaml trustStores: TRUST_CONFIG_NAME: trustAnchors: - pemCertificate: | -----BEGIN CERTIFICATE----- <certificate content> -----END CERTIFICATE----- intermediateCAs: - pemCertificate: | -----BEGIN CERTIFICATE----- <certificate content> -----END CERTIFICATE----- EOFReemplaza
TRUST_CONFIG_NAMEpor el nombre de tu recurso de configuración de confianza.Importa el archivo
trust config.yamlcon el comandogcloud certificate-manager trust-configs import.gcloud certificate-manager trust-configs import TRUST_CONFIG_NAME\ --source=trust_config.yaml \ --location=LOCATION
Reemplaza lo siguiente:
TRUST_CONFIG_NAME: Es el nombre de tu recurso de configuración de confianza.LOCATION: Es la región en la que se almacena tu recurso de configuración de confianza.
Crea un recurso ServerTlsPolicy
Un recurso ServerTlsPolicy, también conocido como recurso de autenticación de cliente, define cómo Secure Web Proxy valida los certificados de cliente. Te permite especificar el modo de TLS del servidor y el recurso de configuración de confianza para la verificación de certificados.
El atributo clientValidationMode determina cómo se maneja la conexión cuando un cliente proporciona un certificado no válido o ningún certificado.
Para obtener más información, consulta los modos de validación del cliente de mTLS de frontend.
Los valores del atributo clientValidationMode son los siguientes:
REJECT_INVALID: Secure Web Proxy solo permite las conexiones de los clientes que presentan un certificado válido firmado por una CA en tu configuración de confianza. Se rechazan las conexiones con certificados faltantes o no válidos.ALLOW_INVALID_OR_MISSING_CLIENT_CERT: Secure Web Proxy permite la solicitud de conexión incluso si el certificado de cliente no es válido, no se puede validar con tu configuración de confianza o falta por completo.
Para crear un recurso ServerTlsPolicy, sigue estos pasos:
Crea un archivo
server_tls_policy.yaml. Elige una de las siguientes opciones paraclientValidationMode:- Opción 1: ALLOW_INVALID_OR_MISSING_CLIENT_CERT
name: SERVER_TLS_POLICY_NAME mtlsPolicy: clientValidationMode: ALLOW_INVALID_OR_MISSING_CLIENT_CERT clientValidationTrustConfig: projects/PROJECT_ID/locations/LOCATION/trustConfigs/TRUST_CONFIG_NAME- Opción 2: REJECT_INVALID
name: SERVER_TLS_POLICY_NAME mtlsPolicy: clientValidationMode: REJECT_INVALID clientValidationTrustConfig: projects/PROJECT_ID/locations/LOCATION/trustConfigs/TRUST_CONFIG_NAMEReemplaza lo siguiente:
SERVER_TLS_POLICY_NAME: Nombre de tu recursoServerTlsPolicyPROJECT_ID: ID de tu proyecto de Google CloudTRUST_CONFIG_NAME: Es el nombre de tu recurso de configuración de confianza.LOCATION: Es la región en la que se configuró tu instancia de Secure Web Proxy.
Importa el recurso
ServerTlsPolicycon el comandogcloud network-security server-tls-policies import.gcloud network-security server-tls-policies import SERVER_TLS_POLICY_NAME\ --source=server_tls_policy.yaml \ --location=LOCATION
Reemplaza lo siguiente:
SERVER_TLS_POLICY_NAME: Nombre de tu recursoServerTlsPolicyLOCATION: Es la región en la que se configuró tu instancia de Secure Web Proxy.
Opcional: Para enumerar todos tus recursos de
ServerTlsPolicies, usa el comandogcloud network-security server-tls-policies list.gcloud network-security server-tls-policies list \ --location=LOCATION
Reemplaza
LOCATIONpor la región en la que está configurada tu instancia de Proxy web seguro.
Asocia el recurso ServerTlsPolicy con tu instancia de Secure Web Proxy
Agrega el recurso
ServerTlsPolicyal archivogateway.yamlde tu instancia de Secure Web Proxy.echo "serverTlsPolicy: //networksecurity.googleapis.com/projects/PROJECT_ID/locations/ LOCATION/serverTlsPolicies/SERVER_TLS_POLICY_NAME" >> gateway.yamlReemplaza lo siguiente:
PROJECT_ID: ID de tu proyecto de Google CloudLOCATION: Es la región en la que se configuró tu instancia de Secure Web Proxy.
Importa la configuración de tu instancia de Secure Web Proxy desde el archivo
gateway.yamlcon el comandogcloud network-services gateways import.gcloud network-services gateways import GATEWAY_NAME\ --source=gateway.yaml \ --location=LOCATIONReemplaza lo siguiente:
GATEWAY_NAME: Es el nombre de tu instancia de Secure Web Proxy.LOCATION: Es la región en la que se configuró tu instancia de Secure Web Proxy.
Configura políticas de autorización
Para obtener más información, consulta Cómo configurar políticas de autorización para el Proxy web seguro.
Logging
Para obtener más información, consulta Manejo de errores y registro de mTLS en el frontend.
Limitaciones
Secure Web Proxy admite la configuración de mTLS de frontend solo en el modo de enrutamiento de proxy explícito.
Para crear una regla de seguridad basada en mTLS de frontend, usa políticas de autorización para Secure Web Proxy. No se admiten las reglas de la política de seguridad de la puerta de enlace.
Para obtener más información, consulta las limitaciones de mTLS de frontend.