Configura OS Login con autenticación de dos factores

Si usas OS Login para administrar el acceso a tus instancias, puedes agregar un nivel adicional de seguridad mediante la autenticación de dos factores, también conocida como 2FA.

Para usar OS Login con autenticación 2FA en tus instancias, completa los siguientes pasos:

  1. Habilita 2FA en tu dominio o Cuenta de Google.
  2. Habilita 2FA en tu proyecto o instancia.
  3. Otorga las funciones de IAM necesarias a los miembros de tu proyecto, a los miembros de tu organización o a ti mismo.
  4. (Opcional) Si tu proyecto es parte de una organización, consulta la página sobre cómo administrar OS Login en una organización.
  5. Conéctate a las instancias.
  6. Revisa los comportamientos de acceso esperados.

Después de configurar OS Login con 2FA, puedes usar los registros de auditoría para supervisar tus sesiones de autenticación.

Antes de comenzar

Limitaciones

  • OS Login no es compatible con Google Kubernetes Engine (GKE). Los nodos del clúster de GKE usan Llaves SSH de metadatos incluso cuando OS Login está habilitado.

  • Las imágenes de Windows Server y SQL Server no son compatibles con OS Login.

Sistemas operativos compatibles

Para la autenticación de dos factores de OS Login, se requieren imágenes de sistema operativo creadas después de las siguientes fechas:

Sistema operativo Fechas
CentOS 6 y 7 26 de marzo de 2019
Debian 9 26 de marzo de 2019
RHEL 6 y 7 26 de marzo de 2019
SUSE 12 y 15 17 de junio de 2019
Ubuntu 16.04 LTS, 18.04 LTS, 18.10 y 19.04 28 de junio de 2019

Métodos compatibles o tipos de verificación

OS Login admite los siguientes métodos de 2FA o tipos de verificación:

Habilita 2FA en tu dominio o Cuenta de Google

Antes de poder habilitar la autenticación de dos factores para tu proyecto o instancia, primero debes habilitar 2FA en tu dominio o Cuenta de Google. Asegúrate de habilitar 2FA en el dominio que contiene el proyecto o las instancias, o de hacerlo para el usuario que posee el proyecto o las instancias.

Un administrador de G Suite puede habilitar la autenticación de dos factores para un dominio, o un usuario individual de Google puede habilitar la autenticación de dos factores en el nivel de la Cuenta de usuario.

Dominio

Un administrador de G Suite debe habilitar la autenticación de dos factores para un dominio.

Si quieres habilitar 2FA para un dominio, consulta la página sobre cómo proteger tu empresa con la verificación en dos pasos en la guía de administrador de G Suite.

Cuenta de usuario

Si un administrador de G Suite no administra tus Cuentas de usuario, puedes configurar 2FA para Cuentas de Google individuales.

Si quieres configurar 2FA para una Cuenta de Google individual, consulta Verificación en dos pasos de Google.

Habilita 2FA en tu proyecto o instancia

Después de habilitar la autenticación de dos factores en el nivel de dominio o Cuenta de usuario, puedes habilitar instancias individuales o un proyecto para que usen 2FA de OS Login.

Una instancia o proyecto debe tener OS Login habilitado para usar 2FA de OS Login.

Puedes configurar OS Login y 2FA de OS Login durante la creación de la instancia o la configuración del proyecto. También puedes configurar 2FA de OS Login en una instancia o un proyecto existentes que ya tengan OS Login habilitado.

Si quieres configurar tu proyecto o instancia para que usen la autenticación de dos factores de OS Login, configura “enable-oslogin-2fa=TRUE” en los metadatos del proyecto o la instancia.

Console

Configura enable-oslogin-2fa en metadatos de instancia cuando crees una instancia:

  1. En Google Cloud Platform Console, ve a la página Instancias de VM.

    Ir a la página Instancias de VM

  2. Haz clic en Crear instancia.
  3. En la página Crear una instancia nueva, completa las propiedades que quieras para tu instancia.
  4. En la sección Metadatos, agrega las siguientes entradas de metadatos:

    • enable-oslogin y el valor es TRUE.
    • enable-oslogin-2fa y el valor es TRUE.
  5. Haz clic en Crear a fin de crear la instancia.

Configura enable-oslogin-2fa en los metadatos de todo el proyecto para que se aplique a todas las instancias de tu proyecto:

  1. Ve a la página Metadatos.

    Ir a la página Metadatos

  2. Haz clic en Editar.
  3. Agrega una entrada de metadatos donde la clave sea enable-oslogin-2fa y el valor sea TRUE. También puedes configurar el valor como FALSE para inhabilitar la función.
  4. Haz clic en Guardar para aplicar los cambios.

En las VM que no ejecutan CoreOS, este cambio se aplica de forma instantánea; no necesitas reiniciar tu instancia. En las distribuciones de CoreOS, reinicia la instancia para que el cambio se efectúe. Para reiniciar, primero detén y, luego, inicia la operación en tus instancias.

Configura enable-oslogin-2fa en los metadatos de una instancia existente:

  1. Ve a la página de instancias de VM.

    Ir a la página Instancias de VM

  2. Haz clic en el nombre de la instancia en la que deseas configurar el valor de los metadatos.
  3. En la parte superior de la página de detalles de la instancia, haz clic en Editar para editar la configuración de la instancia.
  4. En Metadatos personalizados, agrega una entrada de metadatos donde la clave sea enable-oslogin-2fa y el valor sea TRUE. También puedes configurar el valor como FALSE para excluir la instancia de la función. Además, debes verificar que enable-oslogin esté configurado como True.
  5. En la parte inferior de la página de detalles de la instancia, haz clic en Guardar para aplicar los cambios en la instancia.

En todos los sistemas operativos, excepto CoreOS, este cambio se aplica de manera instantánea; no necesitas reiniciar tu instancia. En las distribuciones de CoreOS, reinicia la instancia para que el cambio se efectúe. Para reiniciar, primero detén y, luego, inicia la operación en tus instancias.

gcloud

Configura enable-oslogin-2fa en metadatos de instancia cuando crees una instancia:

gcloud compute instances create [INSTANCE_NAME] \
  --metadata enable-oslogin=True,enable-oslogin-2fa=True

Configura enable-oslogin-2fa en los metadatos de todo el proyecto para que se aplique a todas las instancias de tu proyecto:

gcloud compute project-info add-metadata \
  --metadata enable-oslogin=True,enable-oslogin-2fa=True

Configura enable-oslogin-2fa en los metadatos de una instancia existente:

gcloud compute instances add-metadata \
  --metadata enable-oslogin=True,enable-oslogin-2fa=True [INSTANCE_NAME]

En el caso anterior, [INSTANCE_NAME] es el nombre de la instancia.

Configura las funciones de OS Login en Cuentas de usuario

Otorga funciones de IAM de OS Login

Después de habilitar OS Login en una o más instancias de tu proyecto, esas instancias aceptarán conexiones solo de Cuentas de usuario que tengan las funciones de IAM necesarias en tu organización o proyecto:

Por ejemplo, puedes otorgar acceso a la instancia a los usuarios mediante el siguiente proceso:

  1. Otorga las funciones de acceso a instancias necesarias al usuario. Los usuarios deben tener las siguientes funciones:

  2. Si eres un administrador de la organización y deseas permitir que miembros fuera de la organización accedan a tus instancias, otorga roles/compute.osLoginExternalUser a ese usuario a nivel de la organización.

Los usuarios no pueden ver detalles de tus instancias ni las direcciones IP externas de esas instancias a menos que les proporciones esos detalles de forma directa. Para ver los detalles de tus instancias, los usuarios necesitan funciones de IAM adicionales. Por ejemplo, la función roles/compute.viewer permite a los usuarios ver todos los recursos de tu proyecto, incluidos los detalles de la instancia.

Concede acceso SSH a una cuenta de servicio

Puedes usar las funciones de OS Login para permitir que las cuentas de servicio establezcan conexiones SSH con tus instancias. Esto es útil para las siguientes tareas:

Puedes otorgar acceso SSH a tus cuentas de servicio mediante el siguiente proceso:

  1. Crea una cuenta de servicio.
  2. Otorga las funciones de OS Login necesarias a tu cuenta de servicio. Las cuentas de servicio requieren las mismas funciones que las Cuentas de usuario. Si quieres aprender a configurar funciones y permisos para cuentas de servicio, consulta la página sobre cómo conceder funciones a cuentas de servicio.
  3. Otorga credenciales predeterminadas de la aplicación a tu cuenta de servicio para que pueda autorizar solicitudes a las API correspondientes. Otorga credenciales predeterminadas de la aplicación mediante una de las siguientes opciones:

Después de otorgar acceso SSH a tus cuentas de servicio, puedes configurar tus apps para crear Llaves SSH y establecer conexiones SSH con otras instancias en tus redes de VPC. Lee el instructivo Conecta aplicaciones a instancias mediante SSH si quieres ver una app de ejemplo para la cuenta de servicio SSH.

Revoca funciones de IAM de OS Login

Si quieres revocar el acceso del usuario a las instancias que estén habilitadas para usar OS Login, quita las funciones del usuario de esa Cuenta de usuario. Para obtener información sobre cómo quitar una función de IAM a un usuario, consulta la página sobre cómo otorgar, cambiar y revocar el acceso a los recursos.

Cuando se revoque el acceso de un usuario, el usuario seguirá teniendo Llaves SSH públicas asociadas con su cuenta, pero estas ya no funcionarán en las instancias de VM.

Conéctate a instancias

Después de configurar las funciones necesarias, conéctate a una instancia con herramientas de Compute Engine. Compute Engine genera automáticamente Llaves SSH y las asocia a tu Cuenta de usuario. Como alternativa, si creas tus propias Llaves SSH y agregas las claves públicas a tu Cuenta de usuario, puedes conectarte a instancias con herramientas de terceros. La instancia obtiene la clave pública de tu Cuenta de usuario y permite que te conectes a la instancia si proporcionas el nombre de usuario correcto y la Llave SSH privada correspondiente.

Cuando te conectes a tu instancia, recibirás un mensaje basado en el método de 2FA o tipo de verificación seleccionado.

  • Para el Autenticador de Google, verás el siguiente mensaje:

    "Enter your one-time password:"

  • Para la verificación de mensajes de texto o llamadas telefónicas, verás el siguiente mensaje:

    "A security code has been sent to your phone. Enter code to continue:"

  • Para el mensaje telefónico, verás el siguiente mensaje:

    A login prompt has been sent to your enrolled device:"

    Para el método de mensaje telefónico, acepta los mensajes en tu teléfono o tablet a fin de continuar. Para otros métodos, ingresa tu código de seguridad o contraseña de un solo uso.

Comportamientos de acceso esperados

  • En algunas instancias que usan OS Login, es posible que recibas el siguiente mensaje de error después de establecer la conexión:

    /usr/bin/id: cannot find name for group ID 123456789

    Ignora este mensaje de error. Este error no afecta tus instancias.

  • Si un administrador de G Suite no configura un nombre de usuario, OS Login genera un nombre de usuario de Linux predeterminado. Para hacerlo, combina el nombre de usuario y el dominio del correo electrónico asociado con el perfil de Google del usuario. Esta regla garantiza que los nombres no se repitan. Por ejemplo, si el correo electrónico de usuario asociado con el perfil de Google es user@example.com, entonces el nombre de usuario que se genera es user_example_com.

    Este nombre de usuario generado se basa en dominios asociados con una cuenta de G Suite. Si un usuario es de una organización independiente de G Suite, el nombre de usuario generado tiene el prefijo ‘ext_’. Por ejemplo, si user@example.com accede a una VM en una organización diferente, entonces el nombre de usuario generado es ext_user_example_com.

  • Cuando accedes a una instancia con el comando gcloud compute ssh, aparece el siguiente mensaje:

    Using OS Login user [user_example_com] instead of default user [user]

    Con este mensaje, se confirma que estás accediendo con tu perfil de OS Login.

Visualiza los registros de auditoría de 2FA de OS Login

Compute Engine proporciona registros de auditoría para hacer un seguimiento de las solicitudes de autenticación de dos factores. Para la autenticación de dos factores, hay dos tipos de solicitudes:

  • StartSession. Inicia una sesión de autenticación nueva. En una llamada StartSession, un cliente declara sus capacidades al servidor y obtiene información sobre la primera verificación. Una llamada StartSession muestra lo siguiente:

    • ID de sesión. Este ID de sesión se pasa a todas las llamadas posteriores ContinueSession.
    • Información sobre la verificación o el método de 2FA que se usó en esta sesión de autenticación nueva.
  • ContinueSession. Continúa una sesión de autenticación existente. Si se usa el ID de sesión proporcionado, la API de ContinueSession puede realizar una de las dos acciones siguientes:

    • Aceptar la respuesta a una verificación o método y, luego, autenticar, rechazar o requerir verificaciones adicionales del usuario.
    • Cambiar a un tipo de verificación diferente al propuesto en un comienzo por el servidor en la ronda anterior de llamadas a la API. Si un cliente elige completar un tipo de verificación diferente (por ejemplo, el Autenticador de Google en lugar de un mensaje telefónico), el cliente puede solicitar este tipo de verificación en una llamada al servidor con un request.challengeId del tipo deseado.

Para ver los registros, debes tener permisos del Visor de registros o ser un visualizador o editor de proyecto.

  1. Ve a la página Registros en GCP Console.

    Ir a la página Registros

  2. Expande el menú desplegable y selecciona Audited Resource.
  3. En la barra de búsqueda, escribe oslogin.googleapis.com y presiona Intro.
  4. Aparecerá una lista de registros de auditoría en la que se describen las solicitudes de autenticación de dos factores. Expande cualquiera de las entradas para obtener más información:

    Registros de auditoría para la autenticación de dos factores.

En cualquiera de los registros de auditoría, puedes hacer lo siguiente:

  1. Puedes expandir la propiedad protoPayload.

    Métricas del registro de auditoría para la autenticación de dos factores.

  2. Puedes buscar methodName para ver la actividad a la que se aplica este registro (ya sea una solicitud StartSession o ContinueSession). Por ejemplo, si este registro realiza el seguimiento a una solicitud StartSession, el nombre del método sería "google.cloud.oslogin.OsLoginService.v1.StartSession". Del mismo modo, un registro ContinueSession sería "google.cloud.oslogin.OsLoginService.v1.ContinueSession". Se registra una entrada de registro de auditoría para cada solicitud de inicio y continuación de sesión.

Existen diferentes propiedades de registro de auditoría para distintos tipos de registro. Por ejemplo, los registros de auditoría relacionados con StartSession tienen propiedades que son específicas del inicio de sesión, mientras que los registros de auditoría para ContinueSession tienen su propio conjunto de propiedades. Existen ciertas propiedades de registro de auditoría que también se comparten entre ambos tipos de registro.

Todos los registros de auditoría de autenticación de dos factores

Propiedad Atributo
serviceName oslogin.googleapis.com
resourceName Una string que contiene el número de proyecto. Este número de proyecto indica a qué solicitud de acceso pertenece el registro de auditoría. Por ejemplo, projects/myproject12345.
severity El nivel de gravedad del mensaje de registro. Por ejemplo, INFO o WARNING.
request.email La dirección de correo electrónico del usuario que autentica la llamada a la API.
request.numericProjectId El número de proyecto del proyecto de Google Cloud Platform.
response.@type type.googleapis.com/google.cloud.oslogin.OsLoginService.v1.StartOrContinueSessionResponse
response.sessionId Una string de ID que identifica la sesión de forma exclusiva. Este ID de sesión se pasa a la siguiente llamada a la API en la secuencia.
response.authenticationStatus El estado de la sesión. Por ejemplo, Authenticated, Challenge required o Challenge pending.
response.challenges El conjunto de verificaciones que puedes intentar para pasar en esta ronda de autenticación. Como máximo, se inicia una de estas verificaciones con un estado de READY. Las otras se dan como opciones que el usuario puede especificar como alternativa a la verificación principal propuesta.

Registros de auditoría de StartSession

Propiedad Atributo
methodName google.cloud.oslogin.OsLoginService.v1.StartSession
request.@type type.googleapis.com/google.cloud.oslogin.OsLoginService.v1.StartSessionRequest
request.supportedChallengeTypes La lista de tipos de verificaciones o métodos de 2FA entre los que puedes elegir.

Registros de auditoría de ContinueSession

Propiedad Atributo
methodName google.cloud.oslogin.OsLoginService.v1.ContinueSession
request.sessionId Una string de ID que identifica de forma exclusiva la sesión anterior. Este ID de sesión se pasa desde la llamada a la API anterior en la secuencia.
request.@type type.googleapis.com/google.cloud.oslogin.OsLoginService.v1.ContinueSessionRequest
request.challengeId Una string de ID que identifica qué verificación iniciar o ejecutar. Este ID debe pertenecer a un tipo de verificación que muestra la llamada response.challenges en una respuesta de la API anterior.
request.action La acción por realizar.

Qué sigue

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Documentación de Compute Engine