Habilitar el acceso basado en certificados para máquinas virtuales

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

  1. Abre la página de administración de IAP y selecciona la pestaña Recursos SSH y TCP.

    Ir a la página IAP

  2. Selecciona las instancias de VM que quieras configurar. Haz clic en Mostrar panel de información si no lo ves.

  3. 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.
  4. 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.
  5. 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.

  1. 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
    
  2. 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 en POST en lugar de GET.

    curl -i -H "Authorization: Bearer $(gcloud auth print-access-token)" \
         ${IAP_BASE_URL}/zones/ZONE_NAME/instances/INSTANCE_ID or INSTANCE_NAME:getIamPolicy \
         -d ''
    
  3. 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 rol iap.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
    
  4. Define tu nuevo archivo policy.json con el método setIamPolicy.

    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 cliente en el navegador Chrome para acceder a máquinas virtuales

  1. Configure el navegador Chrome con una de las siguientes opciones.
  2. En el navegador Chrome, introduce el siguiente dominio para acceder a la consola:Google Cloud console-secure.cloud.google.com.
  3. 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

  1. Configura gcloud CLI con uno de los siguientes métodos.

  2. Acceder a las Google Cloud VMs mediante túneles de IAP.