Configurer la connexion au système d'exploitation

Le service OS Login vous permet d'utiliser les rôles IAM de Compute Engine pour gérer l'accès SSH aux instances Linux. Il s'agit d'une alternative à la gestion manuelle des accès aux instances. Ce service peut ajouter et supprimer des clés SSH dans les métadonnées.

Cet article décrit les étapes de base pour configurer la connexion au système d'exploitation. Lors de la configuration du système d'exploitation, vous pouvez ajouter une couche de sécurité à l'aide de l'authentification à deux facteurs. Pour en savoir plus, consultez la page Configurer la connexion au système d'exploitation avec une authentification à deux facteurs.

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

  1. Activez la fonctionnalité de connexion au système d'exploitation sur votre projet ou sur des instances individuelles.
  2. Accordez les rôles IAM pertinents à vous-même, aux membres de votre projet ou aux membres de votre organisation.
  3. Effectuez éventuellement l'une des opérations suivantes :
  4. Connectez-vous à des instances.
  5. Examinez les comportements de connexion attendus.

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 même lorsque la connexion au système d'exploitation est activée.

  • Les familles d'images Windows Server et SQL Server ne sont pas encore compatibles avec OS Login.

Activer ou désactiver OS Login

Avant de pouvoir gérer l'accès aux instances à l'aide de rôles IAM, vous devez activer la fonctionnalité OS Login en définissant une paire clé-valeur de métadonnées dans votre projet ou dans les métadonnées de votre instance : enable-oslogin=TRUE. Pour désactiver OS Login, définissez la valeur des métadonnées sur FALSE. Vous pouvez, par exemple, activer la fonctionnalité sur l'ensemble de votre projet en utilisant enable-oslogin=TRUE au niveau du projet, tout en activant enable-oslogin=FALSE sur des instances spécifiques qui ne peuvent pas encore l'utiliser.

Vous pouvez appliquer la valeur des métadonnées enable-oslogin à vos projets ou à vos instances en utilisant l'une des options suivantes :

Console

Définissez enable-oslogin dans les métadonnées à l'échelle du projet afin de l'appliquer à 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.

Définissez enable-oslogin dans les métadonnées d'une instance existante :

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

    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.

Définir enable-oslogin dans les métadonnées d'instance lorsque vous créez une instance :

  1. Dans la console GCP, 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

Définissez enable-oslogin dans les métadonnées à l'échelle du projet afin de l'appliquer à 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.

Définir 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.

Définir enable-oslogin dans les métadonnées d'instance lorsque vous créez une instance :

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.

Outre les valeurs de métadonnées requises, la dernière version de l'environnement invité doit être installée sur votre instance. Si vos instances exécutent des images personnalisées que vous avez importées, installez l'environnement invité sur ces instances pour activer la connexion au système d'exploitation.

Une fois que vous avez activé la connexion au système d'exploitation sur les instances de votre projet, accordez aux utilisateurs l'autorisation de se connecter à ces instances.

Configurer des rôles de connexion au système d'exploitation pour les comptes utilisateur

Attribuer des rôles IAM de connexion au système d'exploitation

Une fois que vous avez activé OS Login sur une ou plusieurs instances de votre projet, ces instances acceptent les connexions uniquement à partir de comptes utilisateur disposant des rôles IAM nécessaires pour accéder à votre projet ou à votre organisation.

Par exemple, vous pouvez accorder l'accès à une instance à vos utilisateurs en procédant comme suit :

  1. Accordez les rôles d'accès aux instances nécessaires à l'utilisateur.

  2. Si, en tant qu'administrateur, vous souhaitez autoriser des membres extérieurs à votre organisation à accéder à vos instances, accordez-leur le rôle roles/compute.osLoginExternalUser au niveau de l'organisation.

Les utilisateurs ne peuvent pas voir les détails ou les adresses IP externes de vos instances, sauf si vous leur fournissez ces informations directement. Pour permettre aux utilisateurs d'accéder aux détails de vos instances, accordez-leur des rôles IAM supplémentaires. Par exemple, le rôle roles/compute.viewer permet aux utilisateurs d'afficher toutes les ressources de votre projet, y compris les détails des instances.

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

Vous pouvez utiliser les rôles de connexion au système d'exploitation 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 de connexion au système d'exploitation à 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 de connexion au système d'exploitation

Pour révoquer l'accès des utilisateurs aux instances utilisant la connexion au système d'exploitation, 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.

Se connecter aux instances

Après avoir configuré les rôles nécessaires, connectez-vous à une instance à l'aide des outils Compute Engine. Compute Engine génère automatiquement des clés SSH et les associe à votre compte utilisateur.

Si vous créez vos propres clés SSH et ajoutez les clés publiques à votre compte utilisateur, vous pouvez également vous connecter aux instances à l'aide d'outils tiers. L'instance 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.

Comportements de connexion attendus

  • Sur certaines instances utilisant la connexion au système d'exploitation, 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.

  • Si aucun nom d'utilisateur n'est défini par un administrateur G Suite, la fonctionnalité "Connexion au système d'exploitation" 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.

    Ce nom d'utilisateur généré est basé sur les domaines associés à un compte G Suite. 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.

Ajouter des clés SSH à un compte d'utilisateur

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. Pour trouver le nom d'utilisateur de votre compte, exécutez la commande gcloud compute os-login describe-profile :

gcloud compute os-login describe-profile

name: account-email
posixAccounts:
⋮
  username: user-name

Remplacez l'élément suivant :

  • account-email : adresse e-mail qui représente votre compte utilisateur géré.
  • user-name : nom d'utilisateur permettant d'établir des connexions SSH. Par défaut, il est généré à partir de votre adresse account-email.

Étapes suivantes

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Documentation Compute Engine