En esta página se describe cómo habilitar el acceso basado en certificados (CBA) para tus Google Cloud máquinas virtuales. Puedes usar la autenticación basada en certificados para proteger el acceso desde dispositivos de confianza a las máquinas virtuales de Google Cloud .
Información general
La autenticación basada en certificados para máquinas virtuales usa la función Google Cloud Acceso contextual para proteger el acceso mediante TLS mutuo (mTLS). Estos son los componentes principales con los que trabajas para habilitar y usar la autenticación basada en certificados en las VMs:
- Administrador de contextos de acceso: te permite crear niveles de acceso que requieren certificados al determinar el acceso a aplicaciones web.
- Identity-Aware Proxy (IAP): IAP TCP forwarding te permite establecer un túnel cifrado a través del cual puedes reenviar tráfico SSH, RDP y de otro tipo a instancias de VM. Además, una política de IAP te ofrece un control detallado sobre qué usuarios pueden establecer túneles a instancias de VM específicas y qué condiciones de acceso deben cumplir los usuarios para usar dichos túneles.
- Política de Chrome Enterprise: proporciona autenticación mutua (mTLS) entre usuarios y máquinas virtuales al usar el navegador Chrome.
- CLI de Google Cloud: proporciona autenticación mutua (mTLS) entre los usuarios y las VMs al usar la CLI de gcloud.
Antes de empezar
Asegúrate de haber creado niveles de acceso de autenticación basada en certificados para tu Google Cloud proyecto.
Conceder roles para acceder a las VMs mediante el reenvío de TCP de IAP
Debes conceder los roles de gestión de identidades y accesos (IAM) adecuados en un proyecto para permitir que los usuarios o grupos de usuarios utilicen el reenvío de TCP de IAP para acceder a las VMs.
En la siguiente tabla se muestran los roles predefinidos que debes conceder a los administradores de confianza para el reenvío de TCP y las tareas relacionadas.
Tarea | Roles | Más información |
---|---|---|
Reenvío del protocolo de control de la transmisión (TCP) |
Usuario de túneles protegidos mediante IAP (roles/iap.tunnelResourceAccessor )
|
Dar acceso a todas las instancias de VM de un proyecto o Dar acceso a una VM específica |
Acceso SSH |
Administrador de instancias de Compute (v. 1) (roles/compute.instanceAdmin.v1 )
|
|
OS Login (recomendado) | Varias | Configurar roles de OS Login en cuentas de usuario |
Usar una cuenta de servicio | Usuario de cuenta de servicio (roles/iam.serviceAccountUser ) |
Rol serviceAccountUser |
Para obtener más información sobre cómo conceder roles para el reenvío de TCP de IAP, consulta el artículo Conceder roles para el reenvío de TCP de IAP.
Configurar el acceso basado en certificados a una VM
Aunque IAP-TCP te permite conceder acceso a todas las instancias de VM de un proyecto, debes configurar el acceso basado en certificados para cada instancia de VM.
Para conceder a un usuario o a un grupo de usuarios acceso a una VM mediante certificados, asigna el rol roles/iap.tunnelResourceAccessor
a la instancia de VM. Los otros roles se pueden conceder en el proyecto.
Consola
Abre la página de administración de IAP y selecciona la pestaña Recursos SSH y TCP.
Selecciona las instancias de VM que quieras configurar. Haz clic en Mostrar panel de información si no lo ves.
Haz clic en Añadir principal y configura lo siguiente:
- Nuevos principales: especifica el usuario o el grupo de usuarios al que quieras conceder acceso.
- Selecciona un rol: Cloud IAP > Usuario de túneles protegidos mediante IAP.
Haz clic en Añadir condición de IAM y configura una condición:
- Título: introduce un nombre para la condición.
- Creador de condiciones: selecciona Nivel de acceso en el desplegable Tipo de condición y, a continuación, selecciona el nivel de acceso basado en certificados que hayas creado anteriormente.
Haz clic en Guardar.
API
Para configurar el acceso a una VM basado en certificados, modifica el archivo policy.json
de tu aplicación.
Consulta Gestionar el acceso a recursos protegidos con IAP para obtener más información sobre cómo usar la API IAM para gestionar políticas de acceso.
Exporta las siguientes variables.
export IAP_BASE_URL=https://iap.googleapis.com/v1/projects/PROJECT_NUMBER/iap_tunnel # Replace POLICY_FILE.JSON with the name of JSON file to use for setIamPolicy export JSON_NEW_POLICY=POLICY_FILE.JSON
Obtén la política de gestión de identidades y accesos de la instancia de Compute Engine mediante el método
getIamPolicy
. El bit de datos vacío al final convierte la solicitud curl enPOST
en lugar deGET
.curl -i -H "Authorization: Bearer $(gcloud auth print-access-token)" \ ${IAP_BASE_URL}/zones/ZONE_NAME/instances/INSTANCE_ID or INSTANCE_NAME:getIamPolicy \ -d ''
Concede el rol
iap.tunnelResourceAccessor
y el acceso basado en certificados a tus principales modificando el archivo JSON de la política de gestión de identidades y accesos.A continuación, se muestra un ejemplo de un archivo
policy.json
que asigna el roliap.tunnelResourceAccessor
a un grupo de administradores de instancias de VM, lo que les da acceso basado en certificados a recursos de túnel protegidos mediante IAP.Ten en cuenta que, si una entidad tiene el rol de propietario, tiene permiso para usar IAP para el reenvío de TCP.
{ "policy": { "bindings": [ { "role": "roles/iap.tunnelResourceAccessor", "members": ["group:instance-admins@example.com"], "condition": { "expression": "\"accessPolicies/POLICY_NAME/accessLevels/CERTIFICATE_BASED_ACCESS_LEVEL_NAME\" in request.auth.access_levels, "title": "CERTIFICATE_BASED_CONDITION_NAME" } } ] } }
Para encontrar un nombre de política, llama al método
accessPolicies.list
.GET https://accesscontextmanager.googleapis.com/v1/accessPolicies
Define tu nuevo archivo
policy.json
con el métodosetIamPolicy
.curl -i -H "Content-Type:application/json" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ ${IAP_BASE_URL}/zones/ZONE_NAME/instances/INSTANCE_ID or INSTANCE_NAME:setIamPolicy \ -d @${JSON_NEW_POLICY}
Acceder a las VMs mediante certificados de cliente
Para acceder a las VMs mediante certificados de cliente, utiliza uno de los siguientes métodos.
- Usar certificados de empresa: utiliza este método si tienes una infraestructura de clave pública (PKI).
- Usar certificados aprovisionados de verificación de puntos de conexión: utiliza este método si no tienes una infraestructura de PKI. Endpoint Verification aprovisiona y registra automáticamente certificados autofirmados conGoogle Cloud en todos los dispositivos.
Usar certificados de cliente en el navegador Chrome para acceder a máquinas virtuales
- Configure el navegador Chrome con una de las siguientes opciones.
- En el navegador Chrome, introduce el siguiente dominio para acceder a la consola:Google Cloud
console-secure.cloud.google.com
. - Acceder a las Google Cloud VMs mediante eltúnel de IAP.
Usar certificados de cliente en la CLI de gcloud para acceder a máquinas virtuales
Configura gcloud CLI con uno de los siguientes métodos.
Acceder a las Google Cloud VMs mediante túneles de IAP.