Configurer OS Login

Cet article décrit les étapes de base pour configurer OS Login.

OS Login vous permet d'utiliser les rôles IAM de Compute Engine pour accorder ou révoquer l'accès SSH à vos instances Linux. Il constitue une alternative à la gestion des accès aux instances via l'ajout et la suppression de clés SSH dans les métadonnées. Pour en savoir plus sur les avantages de cette fonctionnalité, consultez la page OS Login.

Si vous souhaitez ajouter une couche de sécurité à OS Login à l'aide de l'authentification à deux facteurs, consultez la page Configurer OS Login avec une authentification à deux facteurs. Pour connaître toutes les options de gestion de l'accès à vos VM, consultez la page Choisir une méthode d'accès.

Pour configurer OS Login et vous connecter à vos instances, procédez comme suit :

  1. Installez ou mettez à jour l'environnement invité.
  2. (Facultatif) Si vous êtes administrateur d'une organisation, consultez la page Gérer OS Login dans une organisation.
  3. Activez la fonctionnalité de connexion au système d'exploitation sur votre projet ou sur des instances individuelles.
  4. Accordez les rôles IAM pertinents à vous-même, aux membres de votre projet ou aux membres de votre organisation.
  5. (Facultatif) Ajoutez des clés SSH personnalisées aux comptes utilisateur pour vous-même, pour les membres de votre projet ou pour les membres de votre organisation. Sinon, Compute Engine génère automatiquement ces clés lorsque vous vous connectez à des instances.
  6. Connectez-vous à des instances.

Avant de commencer

Limites

  • OS Login n'est actuellement pas disponible dans Google Kubernetes Engine (GKE). Les nœuds de cluster GKE continuent d'utiliser des clés SSH de métadonnées quand OS Login est activé.

  • Actuellement, les images Fedora CoreOS ne sont pas compatibles avec OS Login. Pour gérer l'accès aux instances pour des VM créées à l'aide de ces images, utilisez le système Ignition de Fedora CoreOS.

  • Les images Windows Server et SQL Server ne sont pas compatibles avec OS Login.

Étape 1 : Installer ou mettre à jour l'environnement invité

La dernière version de l'environnement invité doit être installée sur votre instance. La plupart des images publiques disposent déjà de la dernière version.

Si vous avez des instances qui exécutent des images personnalisées que vous avez importées, installez l'environnement invité sur ces VM.

Si vous ne disposez pas du dernier environnement invité, mettez-le à jour.

Étape 2 : (Facultatif) Vérifier la gestion d'OS Login dans une organisation

Si vous êtes administrateur de l'organisation, vous pouvez définir certaines configurations (comme activer OS Login au niveau de l'organisation). Consultez la page Gérer OS Login dans une organisation.

Étape 3 : Activer ou désactiver OS Login

Vous pouvez activer ou désactiver OS Login en définissant des valeurs de métadonnées au niveau de l'instance ou du projet. Pour définir ces valeurs, vous pouvez utiliser Google Cloud Console ou l'outil de ligne de commande gcloud.

Console

Vous pouvez appliquer les valeurs des métadonnées à vos projets ou à vos VM en utilisant l'une des options suivantes :

  • Option 1 : définissez enable-oslogin dans les métadonnées à l'échelle du projet afin d'appliquer ce paramètre à toutes les instances de votre projet.

    1. Dans Google Cloud Console, accédez à la page Métadonnées.

      Accéder à la page "Métadonnées"

    2. Cliquez sur Modifier.
    3. Ajoutez une entrée de métadonnées, avec enable-oslogin comme clé et TRUE comme valeur. Vous pouvez également définir la valeur sur FALSE pour désactiver la fonctionnalité.
    4. Cliquez sur Enregistrer pour appliquer les modifications.

    Pour les VM qui n'exécutent pas CoreOS, cette modification est appliquée instantanément. Vous n'avez pas besoin de redémarrer votre instance. Pour les distributions CoreOS, redémarrez ou réexécutez l'instance pour que la modification soit prise en compte. Pour redémarrer, effectuez l'arrêt, puis le démarrage de vos instances.

  • Option 2 : définissez enable-oslogin dans les métadonnées d'une instance existante.

    1. Accédez à la page Instances de VM dans Google Cloud Console.

      Accéder à la page Instances de VM

    2. Cliquez sur le nom de l'instance sur laquelle vous souhaitez définir la valeur de métadonnées.
    3. En haut de la page des détails de l'instance, cliquez sur Modifier pour modifier les paramètres de l'instance.
    4. Sous Métadonnées personnalisées, ajoutez une entrée de métadonnées avec enable-oslogin comme clé et TRUE comme valeur. Vous pouvez également définir la valeur sur FALSE pour exclure l'instance de la fonctionnalité.
    5. En bas de la page des détails de l'instance, cliquez sur Enregistrer pour appliquer vos modifications à l'instance.

    Pour tous les systèmes d'exploitation, à l'exception de CoreOS, cette modification est appliquée instantanément. Vous n'avez pas besoin de redémarrer votre instance. Pour les distributions CoreOS, redémarrez ou réexécutez l'instance pour que la modification soit prise en compte. Pour redémarrer, effectuez l'arrêt, puis le démarrage de vos instances.

  • Option 3 : définissez enable-oslogin dans les métadonnées d'une instance au moment de sa création.

    1. Dans Cloud Console, accédez à la page Instances de VM.

      Accéder à la page Instances de VM

    2. Cliquez sur Créer une instance.
    3. Sur la page Créer une instance, renseignez les propriétés de votre instance.
    4. Dans la section Métadonnées, ajoutez une entrée de métadonnées dans laquelle la clé est enable-oslogin et la valeur TRUE. Vous pouvez également définir la valeur sur FALSE pour exclure l'instance de la fonctionnalité.
    5. Cliquez sur Créer pour créer l'instance.

gcloud

Vous pouvez appliquer les valeurs des métadonnées à vos projets ou à vos VM en utilisant l'une des options suivantes :

  • Option 1 : définissez enable-oslogin dans les métadonnées à l'échelle du projet afin d'appliquer ce paramètre à toutes les instances de votre projet.

    Exécutez la commande project-info add-metadata dans l'outil de ligne de commande gcloud et définissez oslogin=TRUE pour activer la connexion au système d'exploitation :

    gcloud compute project-info add-metadata \
        --metadata enable-oslogin=TRUE
    

    Vous pouvez également définir enable-oslogin sur FALSE pour désactiver la connexion au système d'exploitation.

    Pour les VM qui n'exécutent pas CoreOS, cette modification est appliquée instantanément. Vous n'avez pas besoin de redémarrer votre instance. Pour les distributions CoreOS, redémarrez ou réexécutez l'instance pour que la modification soit prise en compte.

  • Option 2 : définissez enable-oslogin dans les métadonnées d'une instance existante.

    Exécutez la commande instances add-metadata dans l'outil de ligne de commande gcloud et définissez oslogin=TRUE pour activer OS Login. Remplacez instance-name par le nom de votre instance.

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

    Vous pouvez également définir enable-oslogin sur FALSE pour empêcher l'instance d'utiliser OS Login.

    Pour tous les systèmes d'exploitation, à l'exception de CoreOS, cette modification est appliquée instantanément. Vous n'avez pas besoin de redémarrer votre instance. Pour les distributions CoreOS, redémarrez ou réexécutez l'instance pour que la modification soit prise en compte.

  • Option 3 : définissez enable-oslogin dans les métadonnées d'une instance au moment de sa création.

    Exécutez la commande instances create dans l'outil de ligne de commande gcloud et définissez oslogin=TRUE pour activer OS Login. Remplacez instance-name par le nom de votre instance.

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

    Vous pouvez également définir enable-oslogin sur FALSE pour empêcher l'instance d'utiliser OS Login.

Une fois que vous avez activé OS Login sur les instances de votre projet, accordez aux utilisateurs l'autorisation de se connecter à ces instances.

Étape 4 : Configurer les rôles OS Login sur les comptes utilisateur

Attribuer des rôles IAM OS Login

Une fois que vous avez activé OS Login sur une ou plusieurs VM de votre projet, celles-ci n'acceptent que les connexions des comptes utilisateur disposant des rôles IAM nécessaires à votre projet ou à votre organisation.

Pour autoriser OS Login à accéder à ces VM, vous devez attribuer les rôles nécessaires à l'utilisateur. Pour accorder l'accès à OS Login, procédez comme suit :

  1. Accordez l'un des rôles d'accès aux instances suivants.

    Vous pouvez accorder ces rôles d'accès aux instances au niveau de l'instance à l'aide de la commande gcloud compute instances add-iam-policy-binding.

  2. Si votre instance de VM utilise un compte de service, chaque utilisateur doit être configuré de façon à disposer du rôle roles/iam.serviceAccountUser sur le compte de service. Pour découvrir comment ajouter l'accès à un compte de service pour un utilisateur, consultez la section Gérer l'utilisation des comptes de service.

  3. Pour autoriser les utilisateurs en dehors de votre organisation à accéder à vos VM, attribuez-leur le rôle roles/compute.osLoginExternalUser en plus d'un rôle d'accès aux instances. Ce rôle doit être attribué au niveau de l'organisation par un administrateur de l'organisation. Pour en savoir plus, consultez la section Accorder l'accès aux instances à des utilisateurs extérieurs à votre organisation.

Accorder l'accès SSH à un compte de service

Vous pouvez utiliser les rôles OS Login pour autoriser les comptes de service à établir des connexions SSH avec vos instances. Cette fonctionnalité est utile pour les tâches suivantes :

Vous pouvez accorder l'accès SSH à vos comptes de service en procédant comme suit :

  1. Créez un compte de service.
  2. Attribuez les rôles OS Login à votre compte de service. Les comptes de service nécessitent les mêmes rôles que les comptes d'utilisateur. Pour en savoir plus sur la configuration des rôles et des autorisations pour les comptes de service, consultez la page Attribuer des rôles aux comptes de service.
  3. Fournissez les identifiants par défaut de l'application à votre compte de service afin qu'il soit en mesure d'autoriser les requêtes adressées aux API nécessaires. Pour renseigner les identifiants par défaut de l'application, procédez de l'une des façons suivantes :

Une fois que vous avez accordé l'accès SSH à vos comptes de service, vous pouvez configurer vos applications pour créer des clés SSH et établir des connexions SSH avec d'autres instances sur vos réseaux VPC. Consultez le tutoriel Connecter des applications à des instances à l'aide de SSH pour voir un exemple d'application utilisant l'accès SSH via un compte de service.

Révoquer des rôles IAM OS Login

Pour révoquer l'accès des utilisateurs aux instances utilisant OS Login, supprimez les rôles d'utilisateur correspondants de ce compte utilisateur. Pour découvrir comment supprimer le rôle IAM d'un utilisateur, consultez la page Accorder, modifier et révoquer les accès à des ressources.

Lorsque l'accès d'un utilisateur est révoqué, celui-ci dispose toujours des clés SSH publiques associées à son compte, mais ces clés ne fonctionnent plus sur les instances de VM.

Étape 5 : (Facultatif) Ajouter des clés SSH à un compte utilisateur

Si vous souhaitez vous connecter à vos VM à l'aide d'outils tiers, vous devez ajouter vos clés SSH à votre compte utilisateur. Si vous vous connectez à vos instances à l'aide d'autres options telles que l'outil de ligne de commande gcloud ou SSH depuis le navigateur, vous pouvez ignorer cette étape car Compute Engine génère automatiquement ces clés pour vous.

Vous pouvez associer des clés SSH publiques aux types de comptes utilisateur suivants :

Vous pouvez utiliser l'outil de ligne de commande gcloud ou l'API OS Login pour ajouter des clés SSH à votre propre compte. Si vous êtes administrateur de domaine pour une organisation, vous pouvez également utiliser l'API Directory pour ajouter des clés SSH aux comptes utilisateur de votre organisation.

gcloud

Les commandes gcloud compute os-login sont disponibles uniquement sur le SDK Google Cloud version 184 et ultérieure.

Utilisez l'outil de ligne de commande gcloud pour associer des clés SSH publiques à un compte.

gcloud compute os-login ssh-keys add \
    --key-file key-file-path \
    --ttl expire-time

Remplacez l'élément suivant :

  • key-file-path : chemin d'accès à la clé SSH publique sur votre poste de travail local. Assurez-vous que la clé SSH publique est correctement formatée. Si vous utilisez PuTTYgen sur un système Linux pour générer vos clés publiques, vous devez utiliser le format public-openssh.
  • expire-time : option facultative permettant de définir une heure d'expiration pour la clé SSH publique. Par exemple, vous pouvez spécifier 30m pour que la clé SSH expire après 30 minutes. Cette option utilise les unités suivantes :
    • s pour les secondes
    • m pour les minutes
    • h pour les heures
    • d pour les jours. Définissez la valeur sur 0 pour ne pas spécifier de délai d'expiration.

API OS Login

Utilisez l'API OS Login pour associer des clés SSH publiques à un compte :

POST https://oslogin.googleapis.com/v1/users/account-email:importSshPublicKey

{
 "key": "ssh-key",
 "expirationTimeUsec": "expiration-timestamp"
}

Remplacez l'élément suivant :

  • account-email : adresse e-mail qui représente votre compte utilisateur géré.
  • ssh-key : clé publique à appliquer au compte. Assurez-vous que la clé SSH publique est correctement formatée. Si vous utilisez PuTTYgen sur un système Linux pour générer vos clés publiques, vous devez utiliser le format public-openssh.
  • expiration-timestamp : délai d'expiration de la clé en microsecondes depuis l'epoch.

API Directory

Si vous êtes administrateur de domaine pour une organisation, vous pouvez consulter la documentation de référence de l'API Directory pour ajouter des clés SSH au compte d'un autre utilisateur de votre organisation. Par exemple, créez une requête PUT vers la méthode directory.users.update avec une ou plusieurs entrées 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"
  }
 ]
}

Remplacez l'élément suivant :

  • user-id-key : identifiant immuable pour l'utilisateur.
  • ssh-key : clé publique à appliquer au compte. Assurez-vous que la clé SSH publique est correctement formatée. Si vous utilisez PuTTYgen sur un système Linux pour générer vos clés publiques, vous devez utiliser le format public-openssh.
  • expiration-timestamp : délai d'expiration d'une clé en microsecondes depuis l'epoch.

Pour supprimer toutes les clés d'un compte, spécifiez "sshPublicKeys": null dans le corps de la requête, en remplaçant user-id-key par un identifiant immuable pour l'utilisateur :

PUT https://www.googleapis.com/admin/directory/v1/users/user-id-key

{
  "sshPublicKeys": null
}

Après avoir ajouté vos clés à votre compte, vous pouvez vous connecter à des instances à l'aide d'outils tiers et du nom d'utilisateur associé à votre compte. L'administrateur de votre organisation peut modifier ce nom d'utilisateur.

Vous pouvez trouver le nom d'utilisateur actuel de votre compte en exécutant la commande gcloud compute os-login describe-profile :

Par exemple, le résultat peut ressembler à ceci :

name: '314159265358979323846'
posixAccounts:
- gid: '27182818'
  homeDirectory: /home/user_example_com
  ⋮
  uid: '27182818'
  username: user_example_com
⋮

Étape 6 : Se connecter aux instances

Lorsque vous vous connectez à une VM, vous disposez de trois options principales :

Si vous vous connectez à une VM à l'aide de l'outil de ligne de commande gcloud ou de SSH depuis le navigateur, Compute Engine génère automatiquement des clés SSH et les associe à votre compte utilisateur

Si vous vous connectez à une instance à l'aide d'un outil tiers, vous devez ajouter les clés publiques à votre compte utilisateur. La VM obtient votre clé publique à partir de votre compte utilisateur. Vous pourrez vous connecter à l'instance en fournissant le nom d'utilisateur correct et la clé SSH privée correspondante.

Une fois connecté à votre instance, vérifiez les comportements de connexion attendus.

Examiner les comportements de connexion attendus

  • Sur certaines instances utilisant OS Login, il est possible que vous receviez le message d'erreur suivant une fois que la connexion est établie :

    /usr/bin/id: cannot find name for group ID 123456789

    Ignorez ce message d'erreur. Cette erreur n'affecte pas vos instances.

  • Les administrateurs Cloud Identity peuvent configurer les informations POSIX et définir un nom d'utilisateur pour les membres de l'organisation. Si aucun nom d'utilisateur n'est défini par un administrateur Cloud Identity, OS Login génère un nom d'utilisateur Linux par défaut en combinant le nom d'utilisateur et le domaine de l'adresse e-mail associée au profil Google de l'utilisateur. Cette convention de dénomination garantit l'unicité. Par exemple, si l'adresse e-mail utilisateur associée au profil Google est user@example.com, le nom d'utilisateur généré est user_example_com.

    Les organisations G Suite peuvent éventuellement modifier la valeur par défaut pour supprimer le suffixe de domaine des nouveaux noms d'utilisateur générés. Par exemple, si l'adresse e-mail utilisateur associée au profil Google est user@example.com, le nom d'utilisateur généré est user. Pour en savoir plus, consultez la section Gérer l'API OS Login.

    Si un utilisateur appartient à une organisation G Suite distincte, le nom d'utilisateur généré porte le préfixe 'ext_'. Par exemple, si user@example.com accède à une VM associée à une organisation différente, le nom d'utilisateur généré est ext_user_example_com.

  • Lorsqu'un utilisateur user appartenant au domaine example.com se connecte à une instance à l'aide de la commande gcloud compute ssh, le message de connexion s'affiche au format suivant :

    Using OS Login user user_example_com instead of default user user

    Ce message confirme que l'utilisateur se connecte avec son profil OS Login.

Étapes suivantes