Gestion des accès aux instances via la connexion au système d'exploitation

La connexion au système d'exploitation vous permet d'utiliser les rôles IAM de Compute Engine pour gérer l'accès SSH aux instances Linux. Elle constitue une alternative à la gestion manuelle des accès aux instances en ajoutant et en supprimant des clés SSH dans les métadonnées.

Pour configurer la connexion au système d'exploitation 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.

Limites

  • La connexion au système d'exploitation n'est actuellement pas disponible dans Google Kubernetes Engine. Les nœuds de cluster Google Kubernetes Engine 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 la connexion au système d'exploitation.

Activer ou désactiver la connexion au système d'exploitation

Avant de pouvoir gérer l'accès aux instances à l'aide de rôles IAM, vous devez activer la fonctionnalité "Connexion au système d'exploitation" 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 la connexion au système d'exploitation, définissez la valeur de métadonnées comme 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 de métadonnées enable-oslogin à vos projets ou instances en utilisant l'une des options suivantes :

Console

Définir enable-oslogin dans les métadonnées à l'échelle du projet afin de l'appliquer à toutes les instances de votre projet :

  1. Accédez à 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éfinir enable-oslogin dans les métadonnées d'une instance existante :

  1. Accédez à 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 où la clé est enable-oslogin et la valeur est 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éfinir enable-oslogin dans les métadonnées à l'échelle du projet afin de l'appliquer à toutes les instances de votre projet :

Utilisez 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 la valeur de enable-oslogin comme étant 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 :

Utilisez la commande instances 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 instances add-metadata [INSTANCE_NAME] --metadata enable-oslogin=TRUE

Vous pouvez également définir la valeur de enable-oslogin comme étant FALSE pour exclure l'instance de la connexion au système d'exploitation.

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 :

Utilisez la commande instances create dans l'outil de ligne de commande gcloud et définissez oslogin=TRUE pour activer la connexion au système d'exploitation :

gcloud compute instances create [INSTANCE_NAME] --metadata enable-oslogin=TRUE

Vous pouvez également définir la valeur de enable-oslogin comme étant FALSE pour exclure l'instance de la connexion au système d'exploitation.

Outre les valeurs de métadonnées requises, la dernière version de Linux Guest Environment doit être installée sur votre instance. Si vos instances exécutent des images personnalisées que vous avez importées, installez Linux Guest Environment 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é la connexion au système d'exploitation 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 à vos utilisateurs l'accès à une instance avec le processus suivant :

  1. Accordez les rôles d'accès aux instances nécessaires à l'utilisateur. Celui-ci doit disposer des rôles suivants :

  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 de l'instance.

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. L'utilisateur disposera toujours des clés SSH publiques associées à son compte, mais ces clés ne fonctionneront plus sur vos instances.

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.

Accorder un accès aux instances à des utilisateurs extérieurs à l'organisation

Par défaut, les utilisateurs externes à votre organisation ne peuvent pas définir de clés SSH ni avoir accès aux instances de votre organisation. Dans certaines situations, vous devrez peut-être accorder un accès aux instances à des utilisateurs appartenant à une autre organisation ou disposant d'un compte Google gmail.com.

Le rôle IAM roles/compute.osLoginExternalUser permet aux comptes Google externes d'interagir avec les autres rôles de connexion au système d'exploitation en les autorisant à configurer des informations du compte POSIX.

Voici comment accorder aux utilisateurs externes à votre organisation roles/compute.osLoginExternalUser et d'autres rôles donnant accès à vos instances en utilisant la connexion au système d'exploitation :

  1. Accédez à la page de sélection du projet et de l'organisation.

    Accéder à la page de sélection du projet et de l'organisation.

  2. Dans la liste déroulante Organisation, sélectionnez votre organisation.
  3. Cliquez sur Tous pour voir toutes vos organisations.
  4. Cliquez sur le nom de l'organisation.
  5. Cliquez sur Ajouter pour ajouter un nouveau rôle à un utilisateur.
  6. Indiquez le nom de l'utilisateur pour lequel vous souhaitez configurer l'accès aux instances.
  7. Cliquez sur Sélectionner un rôle pour spécifier les rôles que vous souhaitez accorder à l'utilisateur.
  8. Sélectionnez le rôle Connexion au système d'exploitation Compute en tant qu'utilisateur externe, dans la liste des rôles Compute Engine.
  9. Cliquez sur Ajouter pour confirmer que vous souhaitez accorder le rôle sélectionné à l'utilisateur.
  10. Si vous ne l'avez pas déjà fait, accordez à l'utilisateur tous les autres rôles d'accès aux instances pertinents au niveau du projet ou de l'organisation.

L'utilisateur peut désormais se connecter à des instances de votre projet avec connexion au système d'exploitation activée.

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]

où :

  • [KEY_FILE_PATH] est le chemin d'accès à la clé SSH publique sur votre poste de travail local.
  • [EXPIRE_TIME] est un indicateur facultatif 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. Les unités valides pour cet indicateur sont s pour les secondes, m pour les minutes, h pour les heures ou d pour les jours. Vous pouvez également indiquer 0 comme valeur 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]"
}

où :

  • [ACCOUNT_EMAIL] est l'adresse e-mail qui représente votre compte utilisateur géré.
  • [SSH_KEY] est la clé publique à appliquer au compte.
  • [EXPIRATION_TIMESTAMP] est le délai d'expiration de la clé en microsecondes depuis l'époque.

API Directory

Si vous êtes administrateur de domaine pour une organisation, vous pouvez utiliser 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]"
  }
 ]
}

où :

  • [USER_ID_KEY] est un identifiant immuable pour l'utilisateur.
  • [SSH_KEY] est une clé publique que vous souhaitez appliquer au compte.
  • [EXPIRATION_TIMESTAMP] est le délai d'expiration d'une clé en microsecondes depuis l'époque.

Pour supprimer toutes les clés d'un compte, spécifiez "sshPublicKeys": null dans le corps de la requête :

PUT https://www.googleapis.com/admin/directory/v1/users/[USER_ID_KEY]

{
  "sshPublicKeys": null
}

[USER_ID_KEY] est un identifiant immuable pour l'utilisateur.

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 de votre compte en exécutant la commande gcloud compute os-login describe-profile :

gcloud compute os-login describe-profile

name: [ACCOUNT_EMAIL]
posixAccounts:
⋮
  username: [USER_NAME]
⋮

où :

  • [ACCOUNT_EMAIL] est l'adresse e-mail qui représente votre compte utilisateur géré.
  • [USER_NAME] est le nom d'utilisateur permettant d'établir des connexions SSH. Par défaut, ceci est généré à partir de votre adresse [ACCOUNT_EMAIL].

Modifier des comptes d'utilisateur à l'aide de l'API Directory

En tant qu'administrateur, vous pouvez modifier les paramètres de connexion aux instances des comptes d'utilisateur, ainsi que de nombreuses autres propriétés utilisateur. Pour savoir comment créer un administrateur, lisez le guide de l'API Directory. Grâce à cette API, vous pouvez ajouter et supprimer des clés SSH d'un utilisateur, modifier les informations de compte POSIX et modifier les noms d'utilisateur grâce auxquels les utilisateurs se connectent sur l'instance.

Par exemple, créez une requête PUT vers la méthode directory.users.update et spécifiez une ou plusieurs propriétés à modifier sur le compte utilisateur :

PUT https://www.googleapis.com/admin/directory/v1/users/[USER_ID_KEY]

{
 "posixAccounts": [
   {
    "username": "[USER_NAME]",
    "uid": "[UID]",
    "gid": "[GID]",
    "homeDirectory": "[USER_HOME_PATH]",
    "shell": "[SHELL_PATH]"
   }
  ],
}

où :

  • [USER_ID_KEY] est un identifiant immuable pour l'utilisateur.
  • [USER_NAME] est le nom d'utilisateur que Compute Engine ajoute à l'instance pour l'utilisateur. Cette valeur doit être unique au sein de votre organisation.
  • [UID] est l'ID utilisateur spécifique à cet utilisateur sur l'instance. Cette propriété doit être une valeur comprise entre 1001 et 65000, ou une valeur comprise entre 65535 et 2147483647. L'ID utilisateur doit être unique au sein votre organisation.
  • [GID] est l'ID de groupe pour l'instance à laquelle appartient cet utilisateur.
  • [USER_HOME_PATH] est le répertoire de base de l'instance pour cet utilisateur. Par exemple, /home/example_username.
  • [SHELL_PATH] est le chemin d'accès à l'interface système par défaut pour l'utilisateur après sa connexion à l'instance. Par exemple, /bin/bash ou /bin/sh.

Pour en savoir plus sur toutes les propriétés de compte que vous pouvez modifier, consultez les documents de référence de l'API Directory.

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 de l'utilisateur associé au profil Google est user@example.com, le nom d'utilisateur généré est user_example_com.

  • Lorsque vous vous connectez à une instance à l'aide de la commande gcloud compute ssh, le message suivant s'affiche :

    WARNING: Using OS Login user [user_example_com] instead of default user [user]

    Ce message confirme que vous vous connectez avec votre profil de connexion au système d'exploitation.

Étapes suivantes

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

Envoyer des commentaires concernant…

Documentation Compute Engine