En este documento, se cubren los pasos básicos para configurar el Acceso al SO.
El Acceso al SO te permite usar las funciones de 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.
Si deseas configurar el Acceso al SO y conectarte a tus instancias, completa los siguientes pasos:
- Instala o actualiza el entorno invitado.
- Si eres administrador de una organización, consulta Administra el Acceso al SO en una organización (opcional).
- Habilita las características de Acceso al SO en tu proyecto o en instancias individuales.
- Otorga las funciones de IAM necesarias a los miembros de tu proyecto, a los miembros de tu organización o a ti mismo.
- Agrega claves SSH personalizadas a las cuentas de usuario para los miembros del proyecto, los miembros de la organización o para ti mismo (opcional). Si no agregas claves SSH, Compute Engine las genera para ti cuando te conectas a instancias.
- Conéctate a las instancias.
Antes de comenzar
- Si deseas usar los ejemplos de línea de comandos en esta guía, haz lo siguiente:
- Instala la herramienta de línea de comandos de gcloud 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
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.
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 Acceso al SO.
Paso 1: Instala o actualiza el entorno invitado
Tu instancia de VM debe tener instalada la versión más reciente del entorno invitado. La mayoría de las imágenes públicas ya tienen instalada la versión más reciente. Si no tienes el más reciente, actualiza tu entorno invitado.
Si tienes VM que ejecutan imágenes personalizadas que importaste, instala el entorno invitado en esas VM.
Si no tienes el más reciente, actualiza tu entorno invitado.
Paso 2: Revisa cómo administrar el Acceso al SO en una organización (opcional)
Si eres administrador de la organización, puedes configurar algunas opciones, como habilitar el Acceso al SO a nivel de la organización. Consulta Administra el Acceso al SO en una organización.
Paso 3: 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. Para configurar estos valores, puedes usar Google Cloud Console o la herramienta de línea de comandos de gcloud
.
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: Establece
enable-oslogin
en los metadatos de la instancia cuando crees una instancia.- En Cloud Console, ve a la página Instancias de VM.
- Haz clic en Crear instancia.
- En la página Crear una instancia nueva, completa las propiedades que quieras para tu instancia.
- En la sección Metadatos, agrega una entrada de metadatos en la que la clave sea
enable-oslogin
y el valor seaTRUE
. También puedes configurar el valor comoFALSE
para excluir la instancia de la función. - Haz clic en Crear para crear la instancia.
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 herramienta de línea de comandos degcloud
y configura un valor de metadatos comooslogin=TRUE
para habilitar 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 la herramienta de línea de comandos degcloud
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.Usa el comando
instances create
en la herramienta de línea de comandos degcloud
y configuraoslogin=TRUE
para habilitar el Acceso al SO. ReemplazaVM_NAME
por el nombre de tu instancia de VM.gcloud compute instances create VM_NAME \ --metadata enable-oslogin=TRUE
También puedes establecer
enable-oslogin
enFALSE
para excluir tu instancia del uso del Acceso al SO.
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 4: Configura las funciones del Acceso al SO en las cuentas de usuario
Otorga funciones 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:
Otorga una de las siguientes funciones de acceso a la instancia.
roles/compute.osLogin
, que no otorga permisos de administradorroles/compute.osAdminLogin
, que otorga permisos de administrador
Puedes otorgar estas funciones de acceso a instancias a nivel de la instancia mediante el comando
gcloud compute instances add-iam-policy-binding
.Si en tu instancia de VM se usa una cuenta de servicio, cada usuario se debe configurar para que tenga la función
roles/iam.serviceAccountUser
en la cuenta de servicio. Para obtener información sobre cómo 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 una función de acceso a instancias, debes otorgar la función
roles/compute.osLoginExternalUser
si quieres que usuarios ajenos a 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 5: Agrega llaves SSH a una cuenta de usuario (opcional)
Si deseas conectarte a las VM mediante herramientas de terceros, debes agregar las llaves SSH a tu cuenta de usuario. Si te conectas a tus instancias con otras opciones, como la herramienta de línea de comandos de gcloud
o SSH desde el navegador, puedes omitir este paso porque Compute Engine genera Llaves SSH de forma automática para ti.
Puedes asociar llaves SSH públicas con los siguientes tipos de cuenta de usuario:
- Cuentas de usuario administradas que forman parte de un recurso de organización:
- Cuentas de Google para usuarios, como cuentas de
gmail.com
Puedes usar la herramienta de línea de comandos de gcloud
o la API de Acceso al SO para agregar claves SSH a tu propia cuenta. De forma alternativa, si eres un administrador de dominio para una organización, puedes usar la API de directorio para agregar claves SSH al recurso Usuarios de tu organización.
gcloud
Los comandos gcloud compute os-login
solo están disponibles en Cloud SDK versión 184 y posteriores.
Usa la herramienta de línea de comandos de gcloud
para asociar Llaves SSH públicas con una cuenta.
gcloud compute os-login ssh-keys add \ --key-file=KEY_FILE_PATH \ --ttl=EXPIRE_TIME
Reemplaza lo siguiente:
KEY_FILE_PATH
: La ruta a la Llave SSH pública en la estación de trabajo local. Asegúrate de que la Llave SSH pública tenga el formato correcto. Si usas PuTTYgen en sistemas Linux para generar tus claves públicas, debes usar el formatopublic-openssh
.EXPIRE_TIME
: Una marca opcional con la que se establece un tiempo de vencimiento para la Llave SSH pública. Por ejemplo, puedes especificar30m
y la Llave SSH caducará después de 30 minutos. En esta marca, se usan las siguientes unidades:s
para los segundosm
para los minutosh
para las horasd
para los días- Establece el valor en
0
para indicar que no hay tiempo de vencimiento.
API de Acceso al SO
Usa la API de Acceso al SO para asociar las claves SSH públicas con una cuenta:
POST https://oslogin.googleapis.com/v1/users/ACCOUNT_EMAIL:importSshPublicKey { "key": "SSH_KEY", "expirationTimeUsec": "EXPIRATION_TIMESTAMP" }
Reemplaza lo siguiente:
ACCOUNT_EMAIL
: La dirección de correo electrónico que representa tu cuenta de usuario administrada.SSH_KEY
: La clave pública que deseas aplicar a la cuenta. Asegúrate de que la Llave SSH pública tenga el formato correcto. Si usas PuTTYgen en sistemas Linux para generar tus claves públicas, debes usar el formatopublic-openssh
.EXPIRATION_TIMESTAMP
: El tiempo de vencimiento de la clave, en microsegundos y desde el ciclo de entrenamiento.
API de Directorio
Si eres un administrador de dominio para una organización, puedes usar la referencia de la API de Directorio a fin de agregar Llaves SSH a la cuenta de otro usuario de tu organización.
Por ejemplo, crea una solicitud PUT para el método directory.users.update
con una o más entradas SSH sshPublicKeys
:
PUT https://www.googleapis.com/admin/directory/v1/users/USER_ID_KEY { "sshPublicKeys": [ { "key": "SSH_KEY", "expirationTimeUsec": "EXPIRATION_TIMESTAMP" }, { "key": "SSH_KEY", "expirationTimeUsec": "EXPIRATION_TIMESTAMP" } ] }
Reemplaza lo siguiente:
USER_ID_KEY
: Es un ID inmutable para el usuario.SSH_KEY
: Una clave pública que deseas aplicar a la cuenta. Asegúrate de que la Llave SSH pública tenga el formato correcto. Si usas PuTTYgen en sistemas Linux para generar tus claves públicas, debes usar el formatopublic-openssh
.EXPIRATION_TIMESTAMP
: El tiempo de vencimiento de una clave, en microsegundos y desde el tiempo de época.
Para quitar todas las claves de una cuenta, especifica "sshPublicKeys": null
como el cuerpo y reemplaza USER_ID_KEY por un ID inmutable para el usuario:
PUT https://www.googleapis.com/admin/directory/v1/users/USER_ID_KEY { "sshPublicKeys": null }
Después de agregar tus claves a tu cuenta, puedes conectarte a instancias con herramientas de terceros y con el nombre de usuario asociado a tu cuenta. El administrador de tu organización puede cambiar este nombre de usuario. Las cuentas que no pertenecen a organizaciones no pueden cambiar el nombre de usuario predeterminado.
Para encontrar el nombre de usuario actual de la cuenta, ejecuta el comando gcloud compute os-login describe-profile
:
Por ejemplo, el resultado podría parecerse al siguiente:
name: '314159265358979323846' posixAccounts: - gid: '27182818' homeDirectory: /home/user_example_com ⋮ uid: '27182818' username: user_example_com ⋮
Paso 6: Conéctate a instancias
Cuando te conectas a una VM, tienes 3 opciones principales:
- La herramienta de línea de comandos de
gcloud
- SSH desde el navegador
- Conéctate mediante herramientas de terceros
Si te conectas a una VM mediante la herramienta de línea de comandos de gcloud
o una conexión SSH desde el navegador, Compute Engine genera claves SSH y las asocia a tu cuenta de usuario de forma automática.
Si te conectas a una instancia mediante una herramienta de terceros, debes agregar las claves públicas a tu cuenta de usuario. La VM 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 clave SSH privada correspondiente.
Después de conectarte a tu instancia, revisa los comportamientos de acceso esperados.
Revisa los comportamientos de acceso esperados
En algunas instancias que usan 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.
Los administradores de Cloud Identity pueden configurar la información de POSIX y establecer un nombre de usuario para los miembros de la organización. Si un administrador de Cloud Identity no establece un nombre de usuario, el acceso al SO genera un nombre de usuario de Linux predeterminado. Para hacerlo, combina el nombre de usuario y el dominio de la dirección de correo electrónico asociada al 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 esuser_example_com
.Las organizaciones de Google Workspace pueden cambiar su configuración predeterminada a fin de quitar el sufijo de dominio de los nombres de usuario recién generados. Por ejemplo, si la dirección de correo electrónico del usuario asociada al perfil de Google es
user@example.com
, el nombre de usuario generado seráuser
. Para obtener más información, consulta Administra la API del Acceso al SO.Si un usuario es de una organización independiente de Google Workspace, 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 esext_user_example_com
.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.
¿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.