Configurer OS Login

Ce document explique comment configurer OS Login.

OS Login vous permet d'utiliser les rôles Identity and Access Management (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.

Avant de commencer

Limites

  • OS Login est compatible avec les clusters privés Google Kubernetes Engine (GKE) exécutant le pool de nœuds version 1.20.5 ou ultérieure.

  • Remarque : OS Login n'est pas disponible dans les clusters GKE publics. Les nœuds de cluster publics 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 : 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. L'activation ou la désactivation d'OS Login dans les métadonnées de l'instance remplace la valeur définie dans les métadonnées du projet. Pour définir des valeurs OS Login, vous pouvez utiliser Google Cloud Console ou Google Cloud CLI.

Console

Vous pouvez appliquer les valeurs de métadonnées à vos projets ou 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 en définissant la clé sur enable-oslogin et la valeur sur TRUE. Vous pouvez également définir la valeur sur FALSE pour désactiver la fonctionnalité.

    4. Cliquez sur Enregistrer pour appliquer les modifications.

  • Option 2 : 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 pour laquelle vous souhaitez activer OS Login.

    3. Sur la page "Détails de l'instance", cliquez sur Modifier.

    4. Sous Métadonnées personnalisées, ajoutez une entrée de métadonnées en définissant la clé sur enable-oslogin et la valeur sur TRUE. Vous pouvez également définir la valeur sur FALSE pour désactiver OS Login sur l'instance.

    5. Cliquez sur Enregistrer pour appliquer vos modifications à l'instance.

  • Option 3 : Activez OS Login lorsque vous créez une instance.

    1. Accédez à la page Créer une instance dans Cloud Console.

      Accéder à la page Créer une instance

    2. Développez Mise en réseau, disques, sécurité, gestion et location unique pour afficher des options de configuration supplémentaires.
    3. Développez la section Sécurité.
    4. Développez la section Gérer l'accès.
    5. Sélectionnez Contrôler l'accès aux VM à l'aide des autorisations IAM.
    6. Pour créer la VM, cliquez sur Créer.

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 Google Cloud CLI et définissez une valeur de métadonnées où oslogin=TRUE pour activer OS Login :

    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.

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

    Exécutez la commande instances add-metadata dans Google Cloud CLI et définissez oslogin=TRUE pour activer OS Login. Remplacez VM_NAME par le nom de votre VM.

    gcloud compute instances add-metadata VM_NAME \
        --metadata enable-oslogin=TRUE
    

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

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

    1. Créez une instance Compute Engine. Configurez l'instance comme suit :
      • Remplacez INSTANCE_NAME par le nom d'instance de votre choix.
      • Définissez l'indicateur --zone sur la zone dans laquelle vous souhaitez créer votre instance.
      • Définissez enable-oslogin sur TRUE dans les métadonnées d'instance pour activer OS Login.
      gcloud compute instances create INSTANCE_NAME --zone=ZONE --metadata=enable-oslogin=TRUE

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 2 : Configurer les rôles OS Login sur 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 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. Si l'utilisateur ne dispose pas du rôle roles/owner, roles/editor ou roles/compute.instanceAdmin, accordez l'un des rôles suivants permettant d'accéder aux instances :

    • roles/compute.osLogin, qui n'accorde pas d'autorisations d'administrateur
    • roles/compute.osAdminLogin, qui accorde des autorisations d'administrateur

      Vous pouvez accorder le rôle d'accès aux instances au niveau du projet ou au niveau de l'instance. Si un utilisateur a besoin d'un accès SSH à partir de Cloud Console ou de gcloud CLI, vous devez accorder le rôle d'accès aux instances au niveau du projet ou un rôle au niveau du projet qui contient l'autorisation compute.projects.get.

  2. Si votre VM utilise un compte de service, chaque utilisateur qui se connecte à la VM à l'aide de SSH doit pouvoir emprunter l'identité du compte de service. Pour vous assurer que l'emprunt d'identité respecte les bonnes pratiques, configurez chaque utilisateur afin qu'il dispose 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'emprunt d'identité d'un compte 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, afin de permettre la création du compte POSIX. 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 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. Pour voir un exemple d'application utilisant l'accès SSH via un compte de service, consultez le tutoriel Connecter des applications à des instances à l'aide de SSH.

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 3 : Se connecter aux VM

Lorsque vous vous connectez à des VM pour lesquelles OS Login est activé, Compute Engine utilise le nom d'utilisateur que votre administrateur d'organisation a configuré pour vous. Si l'administrateur de votre organisation n'a pas configuré de nom d'utilisateur pour vous, Compute Engine génère un nom d'utilisateur au format USERNAME_DOMAIN_SUFFIX. Pour en savoir plus sur les noms d'utilisateur, consultez la page Fonctionnement d'OS Login.

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.

  • 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.

  • Lorsque vous créez des VM, des journaux semblables à ce qui suit peuvent s'afficher :

    Dec 10 22:31:05 instance-1 google_oslogin_nss_cache[381]: oslogin_cache_refresh[381]: Refreshing group entry cache
    Dec 10 22:31:05 instance-1 google_oslogin_nss_cache[381]: oslogin_cache_refresh[381]: Failure getting groups, quitting
    

    Ces journaux indiquent que votre organisation n'a pas de groupes OS Login Linux configurés. Ignorez ces messages.

Étape suivante