Configurar el acceso al SO

En este documento, se explica cómo configurar el Acceso al SO.

El Acceso al SO te permite usar las funciones de administración de identidades y accesos (IAM) de Compute Engine para otorgar o revocar el acceso SSH a tus instancias de Linux. El Acceso al SO es una alternativa para administrar el acceso a instancias si agregas y quitas llaves SSH en los metadatos. Para obtener más información sobre los beneficios de usar esta función, consulta Acceso al SO.

Si quieres habilitar el Acceso al SO con una capa de seguridad mediante la autenticación de dos factores, consulta la sección sobre cómo configura el Acceso al SO con la verificación en dos pasos. Si deseas revisar todas las opciones para administrar el acceso a tus VM, consulta Elige un método de acceso.

Antes de comenzar

Limitaciones

  • El Acceso al SO es compatible con clústeres privados de Google Kubernetes Engine (GKE) que ejecutan las versiones 1.20.5 o posteriores del grupo de nodos.

  • El Acceso al SO no es compatible con los clústeres de GKE públicos. Los nodos del clúster de GKE usan claves SSH de metadatos cuando el Acceso al SO está habilitado.

  • En la actualidad, las imágenes de Fedora CoreOS no son compatibles con Acceso al SO. Para administrar el acceso de las instancias a las VM creadas mediante estas imágenes, usa el sistema de encendido Fedora CoreOS.

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

Paso 1: Habilita o inhabilita el Acceso al SO

Puedes habilitar o inhabilitar el Acceso al SO si estableces valores de metadatos a nivel de la instancia o del proyecto. Habilitar o inhabilitar el Acceso al SO en los metadatos de la instancia anula el valor establecido en los metadatos del proyecto. Para configurar los valores de Acceso al SO, puedes usar Google Cloud Console o Google Cloud CLI.

Console

Puedes aplicar los valores de metadatos a tus proyectos o VM mediante una de las siguientes opciones:

  • Opción 1: configura enable-oslogin en los metadatos de todo el proyecto para que se apliquen a todas las instancias del proyecto.

    1. En Google Cloud Console, ve a la página Metadatos.

      Ir a metadatos

    2. Haz clic en Editar.

    3. Agrega una entrada de metadatos y configura la clave en enable-oslogin y el valor en TRUE. También puedes configurar el valor en FALSE para inhabilitar la función.

    4. Haz clic en Guardar para aplicar los cambios.

  • Opción 2: Establece enable-oslogin en los metadatos de una instancia existente.

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

      Ir a Instancias de VM

    2. Haz clic en el nombre de la instancia en la que deseas habilitar Acceso al SO.

    3. En la página de detalles de la instancia, haz clic en Editar.

    4. En Metadatos personalizados, agrega una entrada de metadatos y configura la clave como enable-oslogin y el valor como TRUE. También puedes configurar el valor como FALSE para inhabilitar Acceso al SO en la instancia.

    5. Haz clic en Guardar para aplicar los cambios en la instancia.

  • Opción 3: Habilita el Acceso al SO cuando creas una instancia.

    1. En Google Cloud Console, ve a la página Crear una instancia.

      Ir a Crear una instancia

    2. Expande Herramientas de redes, discos, seguridad, administración, usuario único para revelar las otras opciones de configuración.
    3. Expande la sección Seguridad.
    4. Expande la sección Administrar acceso.
    5. Selecciona Controlar el acceso a la VM mediante permisos de IAM.
    6. Para crear la VM, haz clic en Crear.

gcloud

Puedes aplicar los valores de metadatos en tus proyectos o VM mediante una de las siguientes opciones:

  • Opción 1: configura enable-oslogin en los metadatos de todo el proyecto para que se apliquen a todas las instancias del proyecto.

    Usa el comando project-info add-metadata en la Google Cloud CLI y establece un valor de metadatos en el que oslogin=TRUE habilite el Acceso al SO:

    gcloud compute project-info add-metadata \
        --metadata enable-oslogin=TRUE
    

    También puedes establecer enable-oslogin en FALSE para inhabilitar el Acceso al SO.

  • Opción 2: Establece enable-oslogin en los metadatos de una instancia existente.

    Usa el comando instances add-metadata en Google Cloud CLI y configura oslogin=TRUE para habilitar el Acceso al SO. Reemplaza VM_NAME con el nombre de tu VM.

    gcloud compute instances add-metadata VM_NAME \
        --metadata enable-oslogin=TRUE
    

    También puedes establecer enable-oslogin en FALSE para excluir tu instancia del uso del Acceso al SO.

  • Opción 3: Establece enable-oslogin en los metadatos de la instancia cuando crees una instancia.

    1. Crea una instancia de Compute Engine. Configúrala como se indica a continuación:
      • Reemplaza INSTANCE_NAME por el nombre de instancia que desees.
      • Establece la marca --zone en la zona en la que deseas crear tu instancia.
      • Configura enable-oslogin como TRUE en los metadatos de la instancia para habilitar el Acceso al SO.
      gcloud compute instances create INSTANCE_NAME --zone=ZONE --metadata=enable-oslogin=TRUE

Después de habilitar el Acceso al SO en las instancias de tu proyecto, otorga a los usuarios permiso para conectarse a esas instancias.

Paso 2: Configura los roles del Acceso al SO en las cuentas de usuario

Otorga roles de IAM de Acceso al SO

Después de habilitar el Acceso al SO en una o más instancias del proyecto, esas VM solo aceptan conexiones de cuentas de usuario que tienen las funciones de IAM necesarias en la organización o el proyecto.

Para permitir el Acceso al SO a estas VM, debes otorgar las funciones necesarias al usuario. Si quieres hacerlo, sigue estos pasos:

  1. Si el usuario no tiene el rol roles/owner, roles/editor o roles/compute.instanceAdmin, otorga una de estos roles de acceso a la instancia:

    • roles/compute.osLogin, que no otorga permisos de administrador
    • roles/compute.osAdminLogin, que otorga permisos de administrador

      Puedes otorgar la función de acceso a instancias a nivel de proyecto o a nivel de instancia. Si un usuario requiere acceso SSH desde Cloud Console o la CLI de gcloud, debes otorgar e rol de acceso a la instancia a nivel de proyecto o, además, otorgar un rol a nivel de proyecto que contenga el compute.projects.get permiso.

  2. Si tu VM usa una cuenta de servicio, cada usuario que se conecta a la VM mediante SSH tiene la capacidad de robar la identidad de la cuenta de servicio. A fin de garantizar que el robo de identidad sigue las prácticas recomendadas, configura cada usuario para que tenga la función roles/iam.serviceAccountUser en la cuenta de servicio. Si deseas obtener información para agregar el acceso de un usuario a una cuenta de servicio, consulta Administra el robo de identidad de cuentas de servicio.

  3. Además de otorgar un rol de acceso a instancias, debes otorgar el rol roles/compute.osLoginExternalUser, que habilita la creación de la cuenta POSIX, para que los usuarios que están fuera de tu organización puedan acceder a las VM. Un administrador de la organización debe otorgar esta función a nivel de la organización. Para obtener más información, consulta Otorga acceso a instancias a usuarios fuera de tu organización.

Otorga acceso SSH a una cuenta de servicio

Puedes usar las funciones de Acceso al SO 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 a tu cuenta de servicio las funciones de Acceso al SO necesarias. 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 claves SSH y establecer conexiones SSH con otras instancias en tus redes de VPC. Para ver una app de ejemplo de una cuenta de servicio SSH, lee el instructivo Conecta apps a instancias mediante SSH.

Revoca funciones de IAM de Acceso al SO

Si quieres revocar el acceso del usuario a las instancias que estén habilitadas para usar el Acceso al SO, 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 revoca el acceso de un usuario, este seguirá teniendo llaves SSH públicas asociadas a su cuenta, pero esas claves ya no funcionarán en las instancias de VM.

Paso 3: Conéctate a las VM

Cuando te conectas a las VM que tienen el Acceso al SO habilitado, Compute Engine usa el nombre de usuario que el administrador de tu organización configuró para ti. Si el administrador de la organización no configuró un nombre de usuario, Compute Engine genera un nombre de usuario con el formato USERNAME_DOMAIN_SUFFIX. Para obtener más información sobre los nombres de usuario, consulta Cómo funciona el acceso a SO.

Comportamientos de acceso esperados

  • En algunas instancias que usan el Acceso al SO, 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.

  • Cuando accedes a una instancia mediante el comando gcloud compute ssh, el mensaje de acceso tiene el siguiente formato para un usuario user que pertenece al dominio example.com:

    Using OS Login user user_example_com instead of default user user

    Este mensaje confirma que el usuario está accediendo con un perfil de Acceso al SO.

  • Es posible que veas registros similares a los siguientes cuando crees VM:

    Dec 10 22:31:05 instance-1 google_oslogin_nss_cache[381]: oslogin_cache_refresh[381]: Refreshing group entry cache
    Dec 10 22:31:05 instance-1 google_oslogin_nss_cache[381]: oslogin_cache_refresh[381]: Failure getting groups, quitting
    

    Estos registros indican que tu organización no tiene configurados grupos de Linux de Acceso al SO. Ignora estos mensajes.

¿Qué sigue?