Résoudre les problèmes liés à OS Login

Cette page explique comment résoudre les problèmes liés à OS Login à l'aide du serveur de métadonnées. Pour en savoir plus sur la configuration d'OS Login ou obtenir des instructions détaillées, consultez la page Configurer OS Login ou la page Configurer OS Login avec la validation en deux étapes.

Vous pouvez interroger le serveur de métadonnées à partir d'une instance de machine virtuelle (VM). Pour en savoir plus, consultez la page Stocker et récupérer les métadonnées d'instances.

Avant de commencer

Entrées par défaut de métadonnées de connexion au système d'exploitation

Compute Engine définit un ensemble d'entrées de métadonnées par défaut qui fournit des informations de connexion au système d'exploitation. Les métadonnées par défaut sont toujours définies et configurées par le serveur. Le tableau suivant décrit les entrées que vous pouvez interroger.

Par rapport à http://metadata.google.internal/computeMetadata/v1/
Entrée de métadonnées Description
project/attributes/enable-oslogin Vérifie si la connexion au système d'exploitation est activée sur le projet Cloud en cours.
instance/attributes/enable-oslogin Vérifie si la connexion au système d'exploitation est activée sur la VM actuelle.
oslogin/users/ Récupère les informations de profil des utilisateurs d'OS Login. Vous pouvez transmettre des paramètres de requête tels que username, uid, pagesize et pagetoken.
oslogin/authorize/

Récupère les paramètres d'autorisation de connexion ou d'administration pour un utilisateur d'OS Login.

Pour vérifier une autorisation, vous devez spécifier le paramètre de requête policy. La valeur du paramètre de règle doit être login (pour vérifier l'autorisation de connexion) ou adminLogin (pour vérifier l'accès sudo).

Vérifier si la connexion au système d'exploitation est activée

Si les métadonnées d'instance et de projet sont toutes deux définies, les métadonnées d'instance sont prioritaires. Vous pouvez exécuter les commandes suivantes sur vos VM.

  1. Vérifiez si la connexion au système d'exploitation est activée dans vos métadonnées d'instance en exécutant la commande suivante :

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

    Si la connexion au système d'exploitation est activée sur l'instance, le résultat renvoie TRUE.

  2. Si la valeur de métadonnées n'est pas configurée pour l'instance, vous pouvez vérifier si la connexion au système d'exploitation est activée sur votre projet Cloud. Pour vérifier cela, exécutez la commande suivante :

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

    Si la connexion au système d'exploitation est activée sur le projet Cloud, le résultat renvoie TRUE.

Afficher les utilisateurs d'OS Login

Pour afficher les informations de profil de plusieurs utilisateurs, vous devez spécifier les paramètres pagesize et pagetoken. Remplacez pagesize et pagetoken par la valeur numérique requise.

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

Par exemple, pour définir pagesize sur 1 et pagetoken sur 0, exécutez la commande suivante :

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

Sur la plupart des distributions, vous pouvez également exécuter la commande Unix getent passwd afin de récupérer les entrées de mot de passe des utilisateurs de l'organisation.

Afficher un utilisateur d'OS Login spécifique

Pour afficher les informations de profil d'un utilisateur spécifique sur votre VM, exécutez la commande ci-dessous. Remplacez USER_NAME par le nom de l'utilisateur que vous souhaitez interroger.

user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/oslogin/users?username=USER_NAME" -H "Metadata-Flavor: Google"

Par exemple, vous pouvez effectuer une requête pour rechercher l'utilisateur user_example_com. La commande et le résultat ci-dessous ont été mis en forme pour une meilleure lisibilité.

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

{
    "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..."
            }
        }
    }]
}

Sur la plupart des distributions, vous pouvez également exécuter des commandes Unix telles que getent passwd username ou getent passwd uid pour récupérer les informations de profil.

Pour récupérer les clés SSH d'un utilisateur, vous pouvez également exécuter /usr/bin/google_authorized_keys username. Si aucune clé n'est renvoyée, il est possible que l'utilisateur ne dispose pas des autorisations requises pour se connecter à la VM.

Vérifier les autorisations de connexion

Pour afficher les autorisations de connexion et d'administration, vous devez fournir les paramètres de requête policy=login&email=LOGIN_NAME. Remplacez LOGIN_NAME par la valeur du champ name tel qu'elle apparaît dans la requête du profil utilisateur.

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

Par exemple, vous pouvez interroger les autorisations de connexion de l'utilisateur user_example_com affichées dans la section précédente. Dans cet exemple, le résultat de la commande indique que l'utilisateur est autorisé à se connecter à la VM :

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

{"success":true}

Vérifier si votre VM dispose d'un compte de service

Vous pouvez interroger le serveur de métadonnées pour trouver le compte de service associé à votre VM. Sur votre VM, exécutez la commande suivante :

user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/" -H "Metadata-Flavor: Google"

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

Si aucun compte de service n'est trouvé, le résultat est vide.

Étapes suivantes