Soluciona problemas de acceso al SO

En este documento, se describe cómo solucionar problemas de Acceso al SO mediante el servidor de metadatos. Para obtener información sobre la configuración del Acceso al SO o si quieres obtener instrucciones paso a paso, consultaConfigura el Acceso al SO oConfigura el Acceso al SO con la verificación en dos pasos.

Puedes consultar el servidor de metadatos desde una instancia de máquina virtual (VM). Para obtener más información, consulta la sección sobre cómo almacenar y recuperar metadatos de instancias.

Antes de comenzar

Entradas de metadatos predeterminados de Acceso al SO

Compute Engine define un conjunto de entradas de metadatos predeterminados que proporcionan información sobre el Acceso al SO. El servidor siempre define y establece los metadatos predeterminados. En la siguiente tabla, se describen las entradas que puedes consultar.

Relativo a http://metadata.google.internal/computeMetadata/v1/
Entrada de metadatos Descripción
project/attributes/enable-oslogin Comprueba si el Acceso al SO está habilitado en el proyecto actual de Cloud.
instance/attributes/enable-oslogin Comprueba si el Acceso al SO está habilitado en la VM actual.
oslogin/users/ Recupera información de perfil para los usuarios del Acceso al SO. Puedes pasar parámetros de consulta como username, uid, pagesize y pagetoken.
oslogin/authorize/

Recupera la configuración de permisos de nivel administrativo o de acceso para un usuario del Acceso al SO.

Para verificar un permiso, debes especificar el parámetro de consulta policy. El valor del parámetro de política debe establecerse en login (para verificar el permiso de acceso) o adminLogin (para verificar el acceso sudo).

Comprueba si el Acceso al SO está configurado

Si se configuran los metadatos de la instancia y del proyecto, los metadatos de la instancia tienen prioridad. Puedes ejecutar los siguientes comandos en tus VM.

  1. Verifica si el Acceso al SO está configurado en los metadatos de la instancia:

    curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/enable-oslogin" -H "Metadata-Flavor: Google"
    

    Si el Acceso al SO está configurado en la instancia, el resultado es TRUE. Un error 404 indica que el Acceso al SO no está configurado en los metadatos de la instancia.

  2. Si el valor de metadatos no está configurado para la instancia, puedes verificar si el Acceso al SO está configurado para tu proyecto:

    curl "http://metadata.google.internal/computeMetadata/v1/project/attributes/enable-oslogin" -H "Metadata-Flavor: Google"
    

    Si el Acceso al SO está configurado para el proyecto, el resultado es TRUE. Un error 404 indica que Acceso al SO no está configurado en los metadatos del proyecto.

Visualiza los usuarios del Acceso al SO

Para ver la información del perfil de varios usuarios, debes especificar los parámetros pagesize y pagetoken. Reemplaza pagesize y pagetoken por el valor numérico requerido.

curl "http://metadata.google.internal/computeMetadata/v1/oslogin/users?pagesize=PAGE_SIZE&
pagetoken=PAGE_TOKEN" -H "Metadata-Flavor: Google"

Por ejemplo, para configurar pagesize en 1 y pagetoken en 0, ejecuta el siguiente comando:

curl "http://metadata.google.internal/computeMetadata/v1/oslogin/users?pagesize=1&pagetoken=0" -H "Metadata-Flavor: Google"

En la mayoría de las distribuciones, también puedes ejecutar el comando getent passwd de Unix para recuperar las entradas de contraseña de los usuarios de la organización.

Visualiza un usuario específico del Acceso al SO

Para ver la información de perfil de un usuario específico en tu VM, ejecuta el siguiente comando:

curl "http://metadata.google.internal/computeMetadata/v1/oslogin/users?username=USERNAME" -H "Metadata-Flavor: Google"

Reemplaza USERNAME por el nombre de usuario del usuario que deseas consultar.

Por ejemplo, puedes realizar una solicitud para buscar el usuario user_example_com. El siguiente comando y el resultado muestran el formato agregado para mejorar la legibilidad.

curl "http://metadata.google.internal/computeMetadata/v1/oslogin/users?username=user_example_com" -H "Metadata-Flavor: Google"

El resultado es similar al siguiente:

{
    "loginProfiles": [{
        "name": "12345678912345",
        "posixAccounts": [{
            "primary": true,
            "username": "user_example_com",
            "uid": "123451",
            "gid": "123451",
            "homeDirectory": "/home/user_example_com",
            "operatingSystemType": "LINUX"
        }],
        "sshPublicKeys": {
            "204c4b4fb...": {
                "key": "ssh-rsa AAAAB3Nz...",
                "fingerprint": "204c4b4fb..."
            }
        }
    }]
}

En la mayoría de las distribuciones, también puedes ejecutar comandos de Unix como getent passwd username o getent passwd uid para recuperar la información de perfil.

Para recuperar las claves SSH de un usuario, también puedes ejecutar /usr/bin/google_authorized_keys USERNAME. Si no se muestran claves, es posible que el usuario no tenga los permisos necesarios para acceder a la VM.

Verifica los permisos de acceso

Para ver los permisos de nivel administrativo y de acceso, debes proporcionar los parámetros de consulta policy=login&email=LOGIN_NAME.

  1. Consulta el perfil del usuario para obtener el valor del campo name:

    curl "http://metadata.google.internal/computeMetadata/v1/oslogin/users?username=user_example_com" -H "Metadata-Flavor: Google"
  2. En el resultado, toma nota del name.

  3. Ejecuta el siguiente comando de login con el valor de name:

    curl "http://metadata.google.internal/computeMetadata/v1/oslogin/authorize?policy=login&email=LOGIN_NAME" -H "Metadata-Flavor: Google"
    

Por ejemplo, puedes consultar los permisos de acceso para el usuario user_example_com que se vio en la sección anterior.

curl "http://metadata.google.internal/computeMetadata/v1/oslogin/authorize?policy=login&email=12345678912345" -H "Metadata-Flavor: Google"

El resultado del comando indica que el usuario está autorizado para acceder a la VM:

{"success":true}

Verifica si tu VM tiene una cuenta de servicio

Puedes consultar el servidor de metadatos para encontrar la cuenta de servicio asociada con tu VM. En tu VM, ejecuta el siguiente comando:

curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/" -H "Metadata-Flavor: Google"

El resultado es similar al siguiente:

12345-sa@developer.gserviceaccount.com/
default/

Si no se encuentra una cuenta de servicio, el resultado está en blanco.

¿Qué sigue?