Gérer OS Login dans une organisation


Ce document explique comment utiliser OS Login pour gérer l'accès aux instances de VM au sein de votre organisation.

Ce sujet couvre les tâches suivantes :

Avant de commencer

  • Si ce n'est pas déjà fait, configurez l'authentification. L'authentification est le processus permettant de valider votre identité pour accéder aux services et aux API Google Cloud. Pour exécuter du code ou des exemples depuis un environnement de développement local, vous pouvez vous authentifier auprès de Compute Engine comme suit :

    Sélectionnez l'onglet correspondant à la façon dont vous prévoyez d'utiliser les exemples de cette page :

    Console

    Lorsque vous utilisez la console Google Cloud pour accéder aux services et aux API Google Cloud, vous n'avez pas besoin de configurer l'authentification.

    gcloud

    1. Installez Google Cloud CLI, puis initialisez-la en exécutant la commande suivante :

      gcloud init
    2. Définissez une région et une zone par défaut.

    REST

    Pour utiliser les exemples d'API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à gcloud CLI.

      Installez Google Cloud CLI, puis initialisez-la en exécutant la commande suivante :

      gcloud init

Règles d'administration d'OS Login

Vous pouvez configurer une contrainte OS Login au sein de votre organisation afin que tous les nouveaux projets et les instances de VM créées dans ces nouveaux projets soient activés.

Lorsque cette contrainte est configurée, les conditions suivantes sont appliquées :

  • enable-oslogin=true est inclus dans les métadonnées du projet pour tous les nouveaux projets.
  • Les requêtes qui définissent enable-oslogin sur false dans les métadonnées d'instances ou de projets sont rejetées, pour les VM et les projets nouveaux et existants.

Limites

OS Login n'est pas compatible avec les produits, fonctionnalités et VM suivants :
  • Cloud Data Fusion 6.1.4 et versions antérieures.
  • Cloud Composer
  • Clusters publics Google Kubernetes Engine (GKE) qui exécutent des versions antérieures à 1.23.5
  • Clusters privés GKE qui exécutent des versions de pool de nœuds antérieures à 1.20.5
  • Dataproc sans serveur
  • VM Windows Server et SQL Server
  • VM Fedora CoreOS. 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.

Solutions de contournement pour Cloud Data Fusion, Cloud Composer et GKE

Pour utiliser OS Login dans des organisations qui utilisent Cloud Data Fusion, Cloud Composer et GKE, vous pouvez activer la contrainte OS Login au niveau de l'organisation, puis la désactiver de manière sélective sur les projets ou dossiers pour les projets concernés.

Pour plus d'informations sur la modification des règles d'administration, consultez la section Créer et modifier des règles.

Activer la règle d'administration

Pour activer la règle OS Login, vous pouvez définir la contrainte OS Login sur des projets et dossiers spécifiques à l'aide de Google Cloud CLI. Vous pouvez également définir la contrainte OS Login sur l'ensemble de l'organisation à l'aide de Google Cloud Console ou de Google Cloud CLI.

Console

Pour définir les règles d'organisation OS Login depuis la console, procédez comme suit :

  1. Dans Google Cloud Console, accédez à la page Règles d'administration.

    Accéder à la page "Règles d'administration"

  2. Dans la liste des règles, cliquez sur Exiger OS Login pour afficher les contraintes OS Login.
  3. Cliquez sur Modifier pour modifier vos contraintes OS Login existantes.
  4. Sur la page Modifier, sélectionnez Personnaliser.
  5. Pour activer l'application de cette contrainte, sélectionnez Activer.
  6. Cliquez sur Enregistrer pour appliquer les paramètres relatifs aux contraintes.

gcloud

Pour définir la règle d'administration d'OS Login, exécutez la commande gcloud beta resource-manager org-policies enable-enforce.

  1. Trouvez l'ID de votre organisation.

    gcloud organizations list
  2. Définissez la contrainte dans votre organisation. Remplacez organization-id par l'ID de votre organisation.

    gcloud beta resource-manager org-policies enable-enforce compute.requireOsLogin \
        --organization=organization-id
    

Vous pouvez également appliquer les règles d'administration d'OS Login à un dossier ou à un projet avec respectivement les options --folder ou --project, ainsi que l'ID de dossier et de projet.

Pour les dossiers, exécutez la commande suivante :

gcloud beta resource-manager org-policies enable-enforce compute.requireOsLogin \
    --folder=folder-id

Pour les projets, exécutez la commande suivante :

gcloud beta resource-manager org-policies enable-enforce compute.requireOsLogin \
    --project=project-id

Remplacez les éléments suivants :

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

Par défaut, les utilisateurs n'appartenant pas à votre organisation ne peuvent pas accéder aux instances de votre organisation ni leur définir de clés SSH. Dans certains cas, vous devrez peut-être accorder un accès aux instances aux utilisateurs appartenant à une autre organisation ou disposant d'un compte gmail.com Google grand public.

Le rôle IAM roles/compute.osLoginExternalUser permet aux comptes Google externes d'interagir avec les autres rôles OS Login en leur permettant de configurer des informations de compte POSIX.

Pour accorder roles/compute.osLoginExternalUser et d'autres rôles d'accès aux instances d'OS Login nécessaires à des utilisateurs extérieurs à votre organisation, procédez comme suit :

  1. Dans la console Google Cloud, 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 le menu déroulant Organisation, sélectionnez votre organisation.
    1. Cliquez sur Tous pour voir toutes vos organisations.
    2. Cliquez sur le nom de l'organisation.
  3. Cliquez sur Ajouter pour ajouter un nouveau rôle à un utilisateur.
  4. Indiquez le nom de l'utilisateur pour lequel vous souhaitez configurer l'accès aux instances.
  5. Cliquez sur Sélectionner un rôle pour spécifier les rôles que vous souhaitez accorder à l'utilisateur.
  6. Dans la liste des rôles Compute Engine, sélectionnez le rôle Utilisateur externe Compute OS Login.
  7. Cliquez sur Ajouter pour confirmer que vous souhaitez accorder le rôle sélectionné à l'utilisateur.
  8. 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 à Login OS activée.

Gérer l'API OS Login

Au niveau de l'organisation, vous pouvez restreindre l'accès à l'API OS Login en définissant des commandes d'administration Google Workspace. Pour configurer des commandes d'administration Google Workspace ou afficher les options de configuration, consultez la section Contrôler qui utilise Google Cloud dans votre organisation. En tant qu'administrateur Google Workspace, vous pouvez également activer ou désactiver certaines fonctionnalités de l'API OS Login. Cela inclut les options suivantes :

  • Choisissez d'inclure ou non le suffixe de domaine dans les noms d'utilisateur générés par l'API OS Login. Par exemple, dans le domaine example.com, l'utilisateur user@example.com aura le nom d'utilisateur user si le paramètre permettant d'inclure le suffixe de domaine n'est pas coché.
  • Décidez si les membres de votre organisation peuvent gérer les clés SSH à l'aide de l'API OS Login.
  • Limitez ou autorisez l'accès aux VM pour les utilisateurs extérieurs à votre organisation.

Pour en savoir plus sur l'activation ou la désactivation des paramètres de l'API OS Login, consultez la section Choisir les paramètres de Google Cloud Platform.

Effectuer un audit des événements OS Login

En tant qu'administrateur Google Workspace, vous pouvez utiliser le SDK Admin Google Workspace pour effectuer un audit des actions effectuées avec l'API OS Login. En examinant ces événements, vous pouvez effectuer le suivi de l'ajout, de la suppression ou de la mise à jour d'une clé SSH par un utilisateur, ou de la suppression d'informations de compte POSIX.

Vous pouvez récupérer les événements d'audit de l'API OS Login depuis le SDK Admin Google Workspace en appelant Activities.list() avec applicationName=gcp. Pour plus d'informations, consultez la section sur les événements liés aux activités Google Cloud dans la documentation de l'API de création de rapports du SDK Admin Google Workspace.

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

OS Login utilise vos paramètres utilisateur Cloud Identity ou Google Workspace lors de la connexion à une instance. Si vous êtes administrateur d'une organisation, vous pouvez utiliser l'API Directory pour effectuer les tâches suivantes pour vos comptes utilisateur Google Workspace ou Cloud Identity :

  • Modifiez les paramètres de connexion de l'instance.
  • Définissez un utilisateur comme administrateur.
  • Modifiez les propriétés utilisateur, telles que le nom du compte et l'adresse e-mail.
  • Ajoutez et supprimez des clés SSH pour un utilisateur.
  • Modifiez les informations relatives au compte POSIX.
  • Modifiez le nom d'utilisateur auquel les utilisateurs se connectent sur l'instance.

Les exemples suivants montrent comment modifier ou supprimer des comptes utilisateur à l'aide de l'API Directory. Pour plus d'informations sur les propriétés de compte que vous pouvez modifier, consultez la documentation de référence de l'API Directory.

Modifier les propriétés de compte

Pour modifier les informations de compte POSIX d'un utilisateur ou gérer les clés SSH de l'utilisateur, envoyez une requête PUT à la méthode directory.users.update et spécifiez une ou plusieurs propriétés à modifier pour le compte utilisateur.

Si vous modifiez les propriétés posixAccounts d'un utilisateur, vous devez spécifier les valeurs username, uid et gid actuelles ou nouvelles dans la requête.

Si vous modifiez les propriétés sshPublicKeys de l'utilisateur, vous devez spécifier la valeur key dans la requête.

Voici un exemple de requête PUT :

PUT https://admin.googleapis.com/admin/directory/v1/users/USER_KEY

{
 "posixAccounts": [
  {
    "username": "USERNAME",
    "uid": "UID",
    "gid": "GID",
    "homeDirectory": "USER_HOME_PATH",
    "shell": "SHELL_PATH"
   }
  ],
 "sshPublicKeys": [
  {
    "key": "KEY_VALUE",
    "expirationTimeUsec": EXPIRATION_TIME
   }
  ],
}

Remplacez les éléments suivants :

  • USER_KEY : adresse e-mail principale, adresse e-mail d'alias ou ID utilisateur unique de l'utilisateur.
  • USERNAME : nom d'utilisateur que Compute Engine ajoute à la VM pour l'utilisateur. Cette valeur doit être unique au sein de votre organisation et ne doit pas se terminer par un tilde ("~") ni contenir un point (".").
  • UID : identifiant spécifique à cet utilisateur sur la VM. Cette propriété doit être une valeur comprise entre 1001 et 60000, ou une valeur comprise entre 65535 et 2147483647. Pour accéder à un système d'exploitation Container-Optimized OS, l'identifiant UID doit avoir une valeur comprise entre 65536 et 214748646. Cet identifiant UID doit être unique au sein votre organisation.
  • GID : ID de groupe pour la VM à laquelle appartient l'utilisateur.
  • USER_HOME_PATH : (facultatif) répertoire d'accueil de la VM pour l'utilisateur. Exemple :/home/example_username
  • SHELL_PATH : (facultatif) chemin d'accès au shell par défaut pour l'utilisateur après sa connexion à l'instance. Par exemple, /bin/bash ou /bin/sh.
  • KEY_VALUE : valeur de la clé SSH publique
  • EXPIRATION_TIME : (facultatif) délai d'expiration de la clé en microsecondes depuis l'epoch (1 seconde = 106 microsecondes).

Supprimer les propriétés de compte

Pour effacer les données posixAccounts et sshPublicKeys d'un utilisateur, envoyez une requête PUT à la méthode directory.users.update en définissant les champs posixAccounts et sshPublicKeys sur null :

PUT https://admin.googleapis.com/admin/directory/v1/users/USER_KEY

{
 "posixAccounts": null,
 "sshPublicKeys": null
}

Remplacez USER_KEY par l'adresse e-mail principale de l'utilisateur, l'adresse e-mail d'alias ou l'ID utilisateur unique.

Utiliser des groupes Linux avec OS Login

Les administrateurs d'organisation peuvent utiliser l'API Cloud Identity Groups afin de configurer des groupes Linux supplémentaires pour les utilisateurs d'OS Login en créant et en gérant des groupes POSIX. OS Login associe des groupes POSIX à des groupes Linux supplémentaires dans les VM de votre organisation afin de vous permettre de gérer les autorisations dont disposent les utilisateurs dans vos VM.

Gérer l'appartenance des utilisateurs à des groupes Linux

Pour créer un groupe POSIX, consultez la section Créer et mettre à jour des groupes POSIX.

Pour ajouter des utilisateurs à un groupe, consultez la section Ajouter ou inviter des utilisateurs à un groupe.

Les mises à jour d'adhésion prennent effet dans les 10 minutes. Les modifications de groupe sont reflétées dans toutes les nouvelles VM. La propagation des mises à jour de groupes POSIX sur l'ensemble des VM déjà en cours d'exécution peut prendre jusqu'à six heures. Les utilisateurs devront peut-être se déconnecter ou utiliser la commande newgrp pour appliquer les modifications du groupe.

Limites de débit pour les groupes Linux avec OS Login

Les groupes Linux avec OS Login utilisent un quota oslogin.googleapis.com/metadata_server_groups_requests. Par défaut, la limite de quota est de 60 requêtes/minute, par projet pour une région donnée.

Si vous avez besoin d'augmenter la limite de débit, vous pouvez demander des quotas supplémentaires à partir de la page "Quotas" de la console Google Cloud.

Accéder à la section "Quotas"

Utiliser la fédération d'identité de personnel avec OS Login

Les organisations qui utilisent la fédération d'identité de personnel peuvent utiliser OS Login pour gérer l'accès à leurs VM. Lorsque la fédération d'identité de personnel est activée pour une organisation, OS Login utilise l'authentification basée sur un certificat au lieu de l'authentification basée sur des clés pour vérifier les identités des utilisateurs.

Avant de commencer

Limites

  • La VM à laquelle vous vous connectez doit disposer d'OpenSSH version 7.4 ou ultérieure pour utiliser la fédération des identités des employés avec OS Login.

  • Les utilisateurs des organisations qui utilisent la fédération d'identité de personnel ne peuvent pas accéder aux ports série de la VM.

Se connecter à des VM utilisant OS Login et la fédération d'identité de personnel

Connectez-vous à des VM qui utilisent OS Login avec la fédération d'identité de personnel à l'aide de la console Google Cloud, de gcloud CLI ou d'autres clients SSH.

Console

Lorsque vous vous connectez à des VM qui utilisent OS Login avec une fédération d'identité de personnel à l'aide de SSH dans le navigateur, Compute Engine configure le certificat SSH en votre nom lorsque vous essayez de vous connecter.

Pour vous connecter à des VM, procédez comme suit :

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

    Accéder à la page Instances de VM

  2. Dans la liste des instances de machine virtuelle, cliquez sur SSH sur la ligne de l'instance à laquelle vous souhaitez vous connecter.

    bouton SSH en regard du nom de l'instance.

gcloud

Lorsque vous vous connectez à des VM qui utilisent OS Login avec la fédération d'identité de personnel à l'aide de gcloud CLI, Compute Engine configure le certificat SSH en votre nom lorsque vous essayez de vous connecter.

Connectez-vous à une VM à l'aide de SSH en exécutant la commande gcloud compute ssh :

  1. Dans la console Google Cloud, activez Cloud Shell.

    Activer Cloud Shell

    En bas de la fenêtre de la console Google Cloud, une session Cloud Shell démarre et affiche une invite de ligne de commande. Cloud Shell est un environnement shell dans lequel Google Cloud CLI est déjà installé, et dans lequel des valeurs sont déjà définies pour votre projet actuel. L'initialisation de la session peut prendre quelques secondes.

  2. Exécutez la commande suivante :

    gcloud compute ssh --project=PROJECT_ID --zone=ZONE VM_NAME

    Connectez-vous à la VM en exécutant la commande suivante :

    • PROJECT_ID : ID du projet contenant la VM
    • ZONE : nom de la zone dans laquelle se trouve la VM
    • VM_NAME : nom de la VM

    Si vous avez défini les propriétés par défaut de la CLI Google Cloud, vous pouvez omettre les options --project et --zone de cette commande. Exemple :

    gcloud compute ssh VM_NAME

IAP Desktop

Lorsque vous vous connectez à des VM qui utilisent OS Login avec une fédération d'identité des employés à l'aide de IAP Desktop, Compute Engine configure le certificat SSH en votre nom lorsque vous essayez de vous connecter.

Pour vous connecter à une VM à l'aide d'IAP Desktop, procédez comme suit :

  1. Installez IAP Desktop sur votre poste de travail, si ce n'est pas déjà fait.

  2. Ouvrez IAP Desktop. La fenêtre Ajouter des projets s'ouvre.

  3. Lorsque vous y êtes invité, connectez-vous avec la fédération d'identité des employés.

  4. Dans la fenêtre Ajouter des projets, saisissez l'ID ou le nom du projet qui contient les VM auxquelles vous souhaitez vous connecter.

  5. Dans la fenêtre Explorateur de projets, effectuez à nouveau un clic droit sur le nom de la VM et sélectionnez Se connecter pour vous connecter à la VM.

Client SSH

Pour vous connecter à une VM qui utilise OS Login avec la fédération d'identité de personnel à l'aide d'un client SSH, procédez comme suit :

  1. Créez une clé SSH si vous n'en avez pas encore.
  2. Signez votre clé SSH publique à l'aide de la méthode users.projects.locations.signSshPublicKey :

    POST https://oslogin.googleapis.com/v1beta/users/USER/projects/PROJECT_ID/locations/LOCATION:signSshPublicKey
    
    {
     "ssh_public_key": "PUBLIC_KEY"
    }
    

    Remplacez les éléments suivants :

    • USER : identité unique d'un pool de personnel, au format suivant :

      principal:%2F%2Fiam.googleapis.com%2Flocations%2Fglobal%2FworkforcePools%2POOL_ID%2Fsubject%2FSUBJECT_ATTRIBUTE_VALUE
      

      Remplacez les éléments suivants :

    • PROJECT_ID : ID du projet contenant la VM à laquelle vous souhaitez vous connecter.

    • LOCATION : zone où se trouve la VM à laquelle vous souhaitez vous connecter.

    • PUBLIC_KEY : contenu de votre fichier de clé publique SSH

  3. Copiez le certificat SSH à partir du résultat de la méthode user.signSshPublicKey et enregistrez le contenu dans un nouveau fichier.

  4. Définissez des autorisations sur le fichier de certificat SSH en exécutant la commande suivante :

    sudo chmod 600 FILE_NAME
    

    Remplacez FILE_NAME par le nom du fichier.

  5. Connectez-vous à la VM à l'aide de la commande suivante :

    ssh -i PATH_TO_PRIVATE_KEY -o CertificateFile=PATH_TO_SSH_CERTIFICATE USERNAME@EXTERNAL_IP
    

    Remplacez les éléments suivants :

    • PATH_TO_PRIVATE_KEY : chemin d'accès au fichier de clé SSH privée.
    • PATH_TO_SSH_CERTIFICATE : chemin d'accès à votre fichier de certificat SSH.
    • USERNAME : valeur du mappage d'attributs google.posix_username de l'utilisateur.
    • EXTERNAL_IP : adresse IP externe de la VM.

Étapes suivantes