Configura el Acceso al SO

En este tema, 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:

  1. Instala o actualiza el entorno invitado.
  2. Si eres administrador de una organización, consulta Administra el Acceso al SO en una organización (opcional).
  3. Habilita las características de Acceso al SO en tu proyecto o en instancias individuales.
  4. Otorga las funciones de IAM necesarias a los miembros de tu proyecto, a los miembros de tu organización o a ti mismo.
  5. Agrega llaves SSH personalizadas a las cuentas de usuario para los miembros del proyecto, los miembros de la organización o para ti mismo (opcional). Por otro lado, Compute Engine puede generar estas claves de forma automática cuando te conectas a instancias.
  6. Conéctate a las instancias.

Antes de comenzar

Limitaciones

  • OS Login no es compatible con Google Kubernetes Engine (GKE). Los nodos del clúster de GKE usan claves SSH de metadatos incluso cuando 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 Acceso al SO.

Paso 1: Instala o actualiza el entorno invitado

Tu instancia 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 tienes instancias 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 en tus proyectos o VM mediante una de las siguientes opciones:

  • Opción 1: Establece 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 la página de Metadatos

    2. Haz clic en Editar.
    3. Agrega una entrada de metadatos en la que la clave sea enable-oslogin 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.

  • 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 la página Instancias de VM

    2. Haz clic en el nombre de la instancia en la que deseas establecer 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 en la que la clave sea enable-oslogin y el valor sea TRUE. También puedes configurar el valor como FALSE para excluir la instancia de la función.
    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 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.

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

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

      Ir a 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 una entrada de metadatos en la que la clave sea enable-oslogin y el valor sea TRUE. También puedes configurar el valor como FALSE para excluir la instancia de la función.
    5. 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: Establece 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 de gcloud y configura oslogin=TRUE para habilitar 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.

    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.

  • 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 de gcloud y configura oslogin=TRUE para habilitar el Acceso al SO. Reemplaza instance-name por el nombre de tu instancia de VM.

    gcloud compute instances add-metadata instance-name \
        --metadata enable-oslogin=TRUE
    

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

    En todos los sistemas operativos, excepto 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.

  • 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 de gcloud y configura oslogin=TRUE para habilitar el Acceso al SO. Reemplaza instance-name por el nombre de tu instancia de VM.

    gcloud compute instances create instance-name \
        --metadata enable-oslogin=TRUE
    

    También puedes establecer enable-oslogin como FALSE para que tu instancia no use el Acceso al SO.

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

Paso 4: Configura las funciones del Acceso al SO en las cuentas de usuario

Otorga funciones de IAM del 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. Otorga una de las siguientes funciones de acceso a la instancia.

    Puedes otorgar estas funciones de acceso a instancias a nivel de la instancia mediante el comando gcloud compute instances add-iam-policy-binding.

  2. 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.

  3. 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:

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 deseas aprender a configurar funciones y permisos para cuentas de servicio, consulta Otorga 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 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 mediante otras opciones, como la herramienta de línea de comandos de gcloud o SSH desde el navegador, puedes omitir este paso, ya que Compute Engine genera estas claves de forma automática.

Puedes asociar llaves SSH públicas con los siguientes tipos de cuenta de usuario:

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 Llaves SSH a la cuenta de usuario en 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 formato public-openssh.
  • expire-time: Una marca opcional con la que se establece un tiempo de vencimiento para la Llave SSH pública. Por ejemplo, puedes especificar 30m y la Llave SSH caducará después de 30 minutos. En esta marca, se usan las siguientes unidades:
    • s para los segundos
    • m para los minutos
    • h para las horas
    • d para los días. Establece el valor en 0 si quieres 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 formato public-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: 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 formato public-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 las claves a tu cuenta, puedes conectarte a instancias mediante herramientas de terceros y el nombre de usuario asociado a tu cuenta. El administrador de tu organización puede cambiar este nombre de usuario.

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:

Si te conectas a una VM mediante la herramienta de línea de comandos de gcloud o SSH desde el navegador, Compute Engine genera llaves 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 te permite conectarte a la instancia si proporcionas el nombre de usuario correcto y la llave SSH coincidente.

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 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.

    De manera opcional, las organizaciones de G Suite 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 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. Para obtener más información, consulta Administra la API del Acceso al SO.

    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 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.

Próximos pasos