Gestionar OS Login en una organización


En este documento se describe cómo puedes usar OS Login para gestionar el acceso a instancias de máquinas virtuales en toda tu organización.

En este tema se tratan las siguientes tareas:

Antes de empezar

  • Si aún no lo has hecho, configura la autenticación. La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    2. Set a default region and zone.

    REST

    Para usar las muestras de la API REST de esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la CLI de gcloud.

      Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .

Política de organización de OS Login

Puedes configurar una restricción de OS Login en tu organización para asegurarte de que todos los proyectos nuevos y las instancias de VM creadas en ellos tengan OS Login habilitado.

Cuando se configura esta restricción, se aplican las siguientes condiciones:

  • enable-oslogin=true se incluye en los metadatos de todos los proyectos nuevos.
  • Las solicitudes que asignan el valor enable-oslogin a false en los metadatos de instancias o proyectos se rechazan, tanto en las VMs como en los proyectos nuevos y en los ya creados.

Limitaciones

OS Login no se admite en los siguientes productos, funciones y máquinas virtuales:
  • Versiones de Cloud Data Fusion 6.1.4 y anteriores
  • Cloud Composer 1
  • Máquinas virtuales de Windows Server y SQL Server
  • Máquinas virtuales de Fedora CoreOS. Para gestionar el acceso a las instancias de las VMs creadas con estas imágenes, usa el sistema de Ignition de Fedora CoreOS.

Soluciones alternativas para Cloud Data Fusion y Cloud Composer

Para usar OS Login en organizaciones que utilizan Cloud Data Fusion y Cloud Composer, puedes habilitar la restricción de OS Login a nivel de organización y, a continuación, inhabilitar selectivamente la restricción en proyectos o carpetas de los proyectos afectados.

Para obtener más información sobre cómo editar políticas de la organización, consulta Crear y editar políticas.

Habilitar la política de organización

Para habilitar la política OS Login, puedes definir la restricción OS Login en proyectos y carpetas específicos mediante la CLI de Google Cloud. También puedes definir la restricción de inicio de sesión del SO en toda la organización mediante la Google Cloud consola o la CLI de Google Cloud.

Consola

Para definir la política de la organización de inicio de sesión con SO desde la consola, sigue estos pasos:

  1. En la Google Cloud consola, ve a la página Políticas de la organización.

    Ir a la página Políticas de la organización

  2. En la lista de políticas, haz clic en Requerir OS Login para ver las restricciones de OS Login.
  3. Haz clic en Editar para modificar las restricciones de inicio de sesión con SO.
  4. En la página Editar, selecciona Personalizar.
  5. Para habilitar la aplicación obligatoria de esta restricción, selecciona Activada.
  6. Haz clic en Guardar para aplicar la configuración de la restricción.

gcloud

Para definir la política de la organización de OS Login, usa el comando gcloud beta resource-manager org-policies enable-enforce.

  1. Busca el ID de tu organización.

    gcloud organizations list
  2. Define la restricción en tu organización. Sustituye organization-id por tu ID de organización.

    gcloud beta resource-manager org-policies enable-enforce compute.requireOsLogin \
        --organization=organization-id
    

También puedes aplicar la política de organización de inicio de sesión del SO a una carpeta o a un proyecto con las marcas --folder o --project, y el ID de la carpeta y el ID del proyecto, respectivamente.

En el caso de las carpetas, ejecuta el siguiente comando:

gcloud beta resource-manager org-policies enable-enforce compute.requireOsLogin \
    --folder=folder-id

En el caso de los proyectos, ejecuta el siguiente comando:

gcloud beta resource-manager org-policies enable-enforce compute.requireOsLogin \
    --project=project-id

Haz los cambios siguientes:

Conceder acceso a instancias a usuarios ajenos a tu organización

De forma predeterminada, los usuarios ajenos a tu organización no pueden definir claves SSH para las instancias de tu organización ni se les puede conceder acceso a ellas. En algunas situaciones, es posible que tengas que conceder acceso a la instancia a usuarios que formen parte de otra organización o que tengan una cuenta de consumidor de Google gmail.com.

El rol de gestión de identidades y accesos roles/compute.osLoginExternalUser permite que las cuentas de Google externas interactúen con los demás roles de inicio de sesión del SO, ya que les permite configurar la información de la cuenta POSIX.

Para conceder roles/compute.osLoginExternalUser y otros roles de acceso de instancia de inicio de sesión del SO necesarios a usuarios ajenos a tu organización, sigue estos pasos:

  1. En la Google Cloud consola, ve a la página IAM y administración.

    Ir a IAM y administración

  2. Haz clic en el menú desplegable Seleccionar un proyecto. En el cuadro de diálogo Selecciona un recurso que aparece, selecciona tu organización haciendo lo siguiente:
    1. Haz clic en el menú desplegable de la organización para ver todas tus organizaciones.
    2. Selecciona tu organización en el menú desplegable.
  3. Haz clic en Conceder acceso para añadir un nuevo rol a un usuario.
  4. En el campo Nuevos principales, añade la dirección de correo del usuario al que quieras configurar el acceso a la instancia.
  5. En el menú desplegable Rol, selecciona el rol Usuario externo de inicio de sesión de SO de Compute.
  6. Haz clic en Guardar.
  7. Si aún no lo has hecho, concede al usuario los demás roles de acceso de instancia de Inicio de sesión del SO a nivel de proyecto u organización.

Ahora, el usuario puede conectarse a las instancias de tu proyecto que tengan habilitada la función Inicio de sesión del SO.

Gestionar la API OS Login

A nivel de organización, puedes restringir el acceso a la API OS Login configurando los controles de administrador de Google Workspace. Para configurar los controles de administrador de Google Workspace o ver las opciones de configuración, consulta el artículo Controlar quién usa Google Cloud en tu organización. Como administrador de Google Workspace, también puedes activar o desactivar determinadas funciones de la API OS Login. Esto incluye las siguientes opciones:

  • Elige si quieres incluir el sufijo del dominio en los nombres de usuario generados por la API OS Login. Por ejemplo, en el dominio example.com, el usuario user@example.com tendrá el nombre de usuario user si no se ha marcado el ajuste para incluir el sufijo de dominio.
  • Decide si los miembros de tu organización pueden gestionar las claves SSH mediante la API OS Login.
  • Restringe o permite el acceso a las VMs a usuarios ajenos a tu organización.

Para obtener más información sobre cómo activar o desactivar los ajustes de la API OS Login, consulta Elegir la configuración de Google Cloud Platform.

Auditar eventos de inicio de sesión del SO

Como administrador de Google Workspace, puedes usar el SDK de administrador de Google Workspace para auditar las acciones realizadas con la API OS Login. Al revisar estos eventos, puede hacer un seguimiento de cuándo añade, elimina o actualiza un usuario una clave SSH, o cuándo elimina información de la cuenta POSIX.

Puedes recuperar eventos de actividad de auditoría de la API OS Login desde el SDK de administrador de Google Workspace llamando a Activities.list() con applicationName=gcp. Para obtener más información, consulta los eventos de actividad deGoogle Cloud en la documentación de la API Reports del SDK de administrador de Google Workspace.

Modificar cuentas de usuario con la API Directory

Inicio de sesión del SO usa la configuración de usuario de Cloud Identity o Google Workspace al conectarse a una instancia. Si eres superadministrador de Google Workspace, puedes usar la API Directory para completar las siguientes tareas en tus cuentas de usuario de Google Workspace o Cloud Identity:

  • Modificar la configuración de inicio de sesión de la instancia
  • Convertir a un usuario en administrador
  • Modificar las propiedades de usuario, como el nombre y el correo de la cuenta
  • Añadir y quitar claves SSH de un usuario
  • Modificar la información de la cuenta POSIX
  • Cambiar el nombre de usuario con el que los usuarios se conectan a la instancia

En los siguientes ejemplos se muestra cómo modificar o eliminar cuentas de usuario mediante la API Directory. Para obtener más información sobre las propiedades de la cuenta que puede editar, consulte la referencia de la API Directory.

Modificar las propiedades de una cuenta

Para modificar la información de la cuenta POSIX de un usuario o gestionar sus claves SSH, envía una solicitud PUT al método directory.users.update y especifica una o varias propiedades que quieras cambiar en la cuenta del usuario.

Si modifica las propiedades posixAccounts de un usuario, debe especificar los valores actuales o nuevos de username, uid y gid en la solicitud.

Si modifica las propiedades sshPublicKeys del usuario, debe especificar el valor key en la solicitud.

A continuación, se muestra un ejemplo de solicitud PUT:

PUT https://admin.googleapis.com/admin/directory/v1/users/USER_KEY

{
 "posixAccounts": [
  {
    "username": "USERNAME",
    "uid": "UID",
    "gid": "GID",
    "homeDirectory": "USER_HOME_PATH",
    "shell": "SHELL_PATH"
   }
  ],
 "sshPublicKeys": [
  {
    "key": "KEY_VALUE",
    "expirationTimeUsec": EXPIRATION_TIME
   }
  ],
}

Haz los cambios siguientes:

  • USER_KEY: la dirección de correo principal del usuario, la dirección de correo del alias o el ID de usuario único.
  • USERNAME: el nombre de usuario que Compute Engine añade a la VM para el usuario. Este valor debe ser único en tu organización y no debe terminar con una virgulilla ("~") ni contener un punto (".").
  • UID: el ID de usuario de la VM de este usuario. El valor de esta propiedad debe estar entre 1001 y 60000 o entre 65535 y 2147483647. Para acceder a un sistema operativo optimizado para contenedores, el UID debe tener un valor entre 65536 y 214748646. El UID debe ser único en tu organización.
  • GID: el ID de grupo de la máquina virtual a la que pertenece el usuario.
  • USER_HOME_PATH: (opcional) el directorio principal de la máquina virtual del usuario. Por ejemplo, /home/example_username.
  • SHELL_PATH: (Opcional) Ruta al shell predeterminado del usuario después de conectarse a la instancia. Por ejemplo, /bin/bash o /bin/sh.
  • KEY_VALUE: el valor de la clave pública SSH.
  • EXPIRATION_TIME: (opcional) tiempo de vencimiento de la clave en microsegundos desde el inicio del registro de tiempo (1 segundo = 106 microsegundos).

Quitar propiedades de una cuenta

Para borrar los datos de posixAccounts y sshPublicKeys de un usuario, envía una solicitud PUT al método directory.users.update y asigna el valor null a los campos posixAccounts y sshPublicKeys:

PUT https://admin.googleapis.com/admin/directory/v1/users/USER_KEY

{
 "posixAccounts": null,
 "sshPublicKeys": null
}

Sustituye USER_KEY por la dirección de correo principal, la dirección de correo del alias o el ID de usuario único del usuario.

Usar grupos de Linux con OS Login (obsoleto)

Los administradores de la organización pueden usar la API Groups de Cloud Identity para configurar grupos de Linux complementarios para los usuarios de OS Login creando y gestionando grupos POSIX. Inicio de sesión con SO vincula grupos POSIX con grupos de Linux complementarios en las VMs de tu organización para que puedas gestionar los permisos que tienen los usuarios en tus VMs.

Gestionar la pertenencia de los usuarios a grupos de Linux

Para crear un grupo POSIX, consulta el artículo Crear y actualizar grupos POSIX.

Para añadir usuarios a un grupo, consulta el artículo Añadir o invitar a usuarios a un grupo.

Los cambios en la suscripción se aplican en un plazo de 10 minutos. Los cambios en el grupo se reflejan en todas las VMs que se creen. Las actualizaciones de grupos POSIX pueden tardar hasta seis horas en aplicarse a todas las máquinas virtuales en ejecución. Es posible que los usuarios tengan que cerrar sesión o usar el comando newgrp para ver los cambios en los grupos.

Eliminar configuraciones de grupos POSIX

La compatibilidad con grupos POSIX de Inicio de sesión del SO está obsoleta. Te recomendamos que elimines las configuraciones de grupos POSIX de OS Login.

Para eliminar configuraciones de grupos POSIX de inicio de sesión del SO, debes ser administrador de la organización.

  1. Si no sabes cuál es el ID de recurso de tu organización, obtén el ID de recurso de tu organización.
  2. Lista de todos los grupos POSIX de tu organización. Anota la dirección de correo de cada grupo.
  3. Sigue estos pasos con cada grupo POSIX de tu organización:
    1. Recupera la información del grupo. Ten en cuenta la posixGroups.gid.
    2. Elimina el grupo POSIX.
  4. También puedes verificar que se han eliminado todos los grupos POSIX de tu organización. Si todos los grupos se han eliminado correctamente, la respuesta estará vacía.

Límites de frecuencia de grupos de Linux con OS Login

Los grupos de Linux con OS Login usan una cuota de oslogin.googleapis.com/metadata_server_groups_requests. De forma predeterminada, el límite de cuota es de 60 solicitudes por minuto por proyecto en una región concreta.

Si necesitas un límite de frecuencia mayor, puedes solicitar un ajuste de cuota en la página Cuotas de la Google Cloud consola.

Ir a Cuotas

Usar la federación de identidades para los trabajadores con OS Login

Las organizaciones que usan la federación de identidades de Workforce pueden usar el inicio de sesión en el SO para gestionar el acceso a sus VMs. Cuando la federación de identidades para los trabajadores está habilitada en una organización, Inicio de sesión del SO usa la autenticación basada en certificados en lugar de la autenticación basada en claves para verificar las identidades de los usuarios.

Antes de empezar

Limitaciones

  • No puedes usar Workforce Identity Federation con la autenticación de dos factores (2FA) de OS Login.
  • La VM a la que te conectes debe tener la versión 7.4 o posterior de OpenSSH para usar la federación de identidades de la plantilla con el inicio de sesión del SO.
  • Si tu organización usa la federación de identidades de la fuerza de trabajo, no podrás acceder a los puertos serie de las VMs.

Conectarse a VMs que usan OS Login y la federación de identidades de Workforce

Conéctate a las VMs que usan el inicio de sesión del SO con la federación de identidades de la plantilla mediante laGoogle Cloud consola, la CLI de gcloud u otros clientes SSH.

Consola

Cuando te conectas a máquinas virtuales que usan OS Login con la federación de identidades de Workforce mediante SSH en el navegador, Compute Engine configura el certificado SSH en tu nombre cuando intentas conectarte.

Para conectarte a las VMs, sigue estos pasos:

  1. In the Google Cloud console, go to the VM instances page.

    Go to VM instances

  2. In the list of virtual machine instances, click SSH in the row of the instance that you want to connect to.

    SSH button next to instance name.

gcloud

Cuando te conectas a máquinas virtuales que usan OS Login con la federación de identidades de Workforce mediante la CLI de gcloud, Compute Engine configura el certificado SSH en tu nombre cuando intentas conectarte.

Para conectarte a una VM mediante SSH, ejecuta el comando gcloud beta compute ssh:

    In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  1. Ejecuta el siguiente comando:

    gcloud beta compute ssh --project=PROJECT_ID --zone=ZONE VM_NAME

    Haz los cambios siguientes:

    • PROJECT_ID: el ID del proyecto que contiene la VM
    • ZONE: nombre de la zona en la que se encuentra la VM
    • VM_NAME: el nombre de la VM

    Si has definido propiedades predeterminadas para la CLI de Google Cloud, puedes omitir las marcas --project y --zone de este comando. Por ejemplo:

    gcloud compute ssh VM_NAME
  2. IAP Desktop

    Cuando te conectas a máquinas virtuales que usan OS Login con la federación de identidades de Workforce mediante IAP Desktop, Compute Engine configura el certificado SSH en tu nombre cuando intentas conectarte.

    Para conectarte a una VM mediante IAP Desktop, haz lo siguiente:

    1. Instala IAP Desktop en tu estación de trabajo si aún no lo has hecho.

    2. Abre IAP Desktop. Se abrirá la ventana Añadir proyectos.

    3. Cuando se te solicite, inicia sesión con la federación de identidades para los trabajadores.

    4. En la ventana Añadir proyectos, introduce el ID o el nombre del proyecto que contiene las VMs a las que quieres conectarte.

    5. En la ventana Explorador de proyectos, vuelve a hacer clic con el botón derecho en el nombre de la VM y selecciona Conectar para conectarte a la VM.

    Cliente SSH

    Para conectarte a una VM que usa OS Login con la federación de identidades de la plantilla mediante un cliente SSH, haz lo siguiente:

    1. Crea una clave SSH si aún no tienes una.
    2. Firma tu clave SSH pública con el método users.projects.locations.signSshPublicKey:

      POST https://oslogin.googleapis.com/v1beta/users/USER/projects/PROJECT_ID/locations/LOCATION:signSshPublicKey
      
      {
       "ssh_public_key": "PUBLIC_KEY"
      }
      

      Haz los cambios siguientes:

      • USER: una sola identidad de un grupo de Workforce, con el siguiente formato:

        principal:%2F%2Fiam.googleapis.com%2Flocations%2Fglobal%2FworkforcePools%2POOL_ID%2Fsubject%2FSUBJECT_ATTRIBUTE_VALUE
        

        Haz los cambios siguientes:

      • PROJECT_ID: el ID del proyecto que contiene la máquina virtual a la que quieres conectarte.

      • LOCATION: la zona en la que se encuentra la VM a la que quieres conectarte.

      • PUBLIC_KEY: el contenido de tu archivo de clave pública SSH.

    3. Copia el certificado SSH de la salida del método user.signSshPublicKey y guarda el contenido en un archivo nuevo.

    4. Define los permisos del archivo de certificado SSH ejecutando el siguiente comando:

      sudo chmod 600 FILE_NAME
      

      Sustituye FILE_NAME por el nombre del archivo.

    5. Conéctate a la máquina virtual con el siguiente comando:

      ssh -i PATH_TO_PRIVATE_KEY -o CertificateFile=PATH_TO_SSH_CERTIFICATE USERNAME@EXTERNAL_IP
      

      Haz los cambios siguientes:

      • PATH_TO_PRIVATE_KEY: la ruta a tu archivo de clave privada SSH.
      • PATH_TO_SSH_CERTIFICATE: la ruta al archivo de certificado SSH.
      • USERNAME: el valor de la google.posix_usernameasignación de atributos del usuario.
      • EXTERNAL_IP: la dirección IP externa de la VM.

Siguientes pasos