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
- Si deseas usar los ejemplos de línea de comandos de esta guía, haz lo siguiente:
- Instala Google Cloud CLI o actualízala a la última versión.
- Configura una región y una zona predeterminadas.
- Si deseas usar los ejemplos de API de esta guía, configura el acceso a la API.
- Para obtener información sobre cómo funcionan las conexiones SSH en Compute Engine, incluida la configuración y el almacenamiento de claves SSH, consulta Conexiones SSH a VM de Linux.
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.En Google Cloud Console, ve a la página Metadatos.
Haz clic en Editar.
Agrega una entrada de metadatos y configura la clave en
enable-oslogin
y el valor enTRUE
. También puedes configurar el valor enFALSE
para inhabilitar la función.Haz clic en Guardar para aplicar los cambios.
Opción 2: Establece
enable-oslogin
en los metadatos de una instancia existente.En Google Cloud Console, ve a la página Instancias de VM.
Haz clic en el nombre de la instancia en la que deseas habilitar Acceso al SO.
En la página de detalles de la instancia, haz clic en Editar.
En Metadatos personalizados, agrega una entrada de metadatos y configura la clave como
enable-oslogin
y el valor comoTRUE
. También puedes configurar el valor comoFALSE
para inhabilitar Acceso al SO en la instancia.Haz clic en Guardar para aplicar los cambios en la instancia.
Opción 3: Habilita el Acceso al SO cuando creas una instancia.
- En Google Cloud Console, ve a la página Crear una instancia.
- Expande Herramientas de redes, discos, seguridad, administración, usuario único para revelar las otras opciones de configuración.
- Expande la sección Seguridad.
- Expande la sección Administrar acceso.
- Selecciona Controlar el acceso a la VM mediante permisos de IAM.
- 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 queoslogin=TRUE
habilite el Acceso al SO:gcloud compute project-info add-metadata \ --metadata enable-oslogin=TRUE
También puedes establecer
enable-oslogin
enFALSE
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 configuraoslogin=TRUE
para habilitar el Acceso al SO. ReemplazaVM_NAME
con el nombre de tu VM.gcloud compute instances add-metadata VM_NAME \ --metadata enable-oslogin=TRUE
También puedes establecer
enable-oslogin
enFALSE
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.-
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
comoTRUE
en los metadatos de la instancia para habilitar el Acceso al SO.
gcloud compute instances create INSTANCE_NAME --zone=ZONE --metadata=enable-oslogin=TRUE
- Reemplaza
-
Crea una instancia de Compute Engine. Configúrala como se indica a continuación:
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:
Si el usuario no tiene el rol
roles/owner
,roles/editor
oroles/compute.instanceAdmin
, otorga una de estos roles de acceso a la instancia:roles/compute.osLogin
, que no otorga permisos de administradorroles/compute.osAdminLogin
, que otorga permisos de administradorPuedes 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.
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.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:
- Si tus aplicaciones requieren acceso SSH a tus instancias de Compute Engine, puedes proporcionar ese acceso a través de una cuenta de servicio. Para obtener más información, consulta Conecta aplicaciones a instancias mediante SSH.
- Si deseas obtener información sobre cómo asumir manualmente los permisos de una cuenta de servicio y usarlos para ejecutar comandos en una segunda instancia, lee Conéctate manualmente entre instancias como una cuenta de servicio.
Puedes otorgar acceso SSH a tus cuentas de servicio mediante el siguiente proceso:
- Crea una cuenta de servicio.
- 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.
- 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:
- Crea una instancia asociada con tu cuenta de servicio. La instancia proporciona credenciales predeterminadas de la aplicación a tu cuenta de servicio.
- Proporciona las credenciales de la cuenta de servicio de forma manual a tu app si la ejecutas fuera del entorno de Compute Engine.
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 usuariouser
que pertenece al dominioexample.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?
- Conéctate a las instancias.
- Obtén información sobre cómo funcionan las conexiones SSH a las VM de Linux en Compute Engine.
- Obtén más información sobre el control de acceso de Compute Engine.
- Consulta Cuentas de servicio.
- Lee el instructivo Conecta aplicaciones a instancias mediante SSH si quieres ver una app de ejemplo para la cuenta de servicio SSH.
- Obtén más información sobre el acceso a proyectos de Google Cloud.
- Soluciona problemas de Acceso al SO.