Ce document explique comment empêcher les utilisateurs d'accéder aux instances de machines virtuelles (VM) en supprimant et en bloquant les clés SSH des VM.
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
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- 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.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
-
Supprimer des clés SSH
Vous pouvez supprimer les clés SSH des VM qui utilisent OS Login et des VM qui utilisent des clés SSH basées sur des métadonnées.Supprimer les clés SSH des VM qui utilisent OS Login
Les VM qui utilisent OS Login acceptent les clés SSH associées à votre compte Google. Vous pouvez supprimer une clé SSH publique de votre compte utilisateur à l'aide de Google Cloud CLI ou de l'API OS Login. Si vous êtes administrateur de votre organisation, vous pouvez supprimer des clés SSH des comptes utilisateur en utilisant l'API Directory. Compute Engine supprime automatiquement les clés expirées de votre compte Google.
gcloud
Pour supprimer une clé SSH publique de votre compte, procédez comme suit :
Si vous ne savez pas quelle clé vous souhaitez supprimer, exécutez la commande
gcloud compute os-login describe-profile
pour afficher toutes les clés associées à votre compte :gcloud compute os-login describe-profile
Copiez la valeur
fingerprint
de la clé que vous souhaitez supprimer.Supprimez la clé de votre compte à l'aide de la commande
gcloud compute os-login ssh-keys remove
:gcloud compute os-login ssh-keys remove --key=KEY
Remplacez
KEY
par la clé SSH publique à supprimer ou l'empreinte d'OS Login pour la clé que vous souhaitez supprimer.
REST
Pour supprimer une clé SSH publique de votre compte, procédez comme suit :
Si vous ne savez pas quelle clé vous souhaitez supprimer, utilisez la méthode
users.getLoginProfile
pour afficher toutes les clés associées à votre compte :GET https://oslogin.googleapis.com/v1/users/ACCOUNT_EMAIL/loginProfile
Remplacez
ACCOUNT_EMAIL
par l'adresse e-mail associée à votre compte.Copiez la valeur
fingerprint
de la clé que vous souhaitez supprimer.Supprimez la clé de votre compte à l'aide de la méthode
users.sshPublicKeys.delete
:DELETE https://oslogin.googleapis.com/v1/users/ACCOUNT_EMAIL/sshPublicKeys/FINGERPRINT
Remplacez les éléments suivants :
ACCOUNT_EMAIL
: adresse e-mail associée à votre compte.FINGERPRINT
: empreinte SHA-256 de la clé à supprimer.
Supprimer les clés SSH des VM qui utilisent des clés basées sur les métadonnées
Vous pouvez supprimer une clé SSH publique des métadonnées de projet ou d'instance à l'aide de la console Google Cloud, de gcloud CLI ou de l'API Compute Engine.
Une fois que vous avez supprimé la dernière clé des métadonnées pour un utilisateur particulier, ou que la dernière clé des métadonnées d'un utilisateur particulier expire, Compute Engine supprime le fichier ~/.ssh/authorized_keys
de l'utilisateur sur la VM.
Supprimer une clé publique des métadonnées du projet
Supprimez une clé SSH publique des métadonnées du projet pour supprimer l'accès à toutes les VM d'un projet.
Lorsque vous supprimez une clé des métadonnées à l'aide de gcloud CLI et de l'API Compute Engine, vous devez récupérer la liste des clés existantes, modifier la liste des clés pour supprimer les clés indésirables et écraser l'ancienne clé avec la liste des clés à conserver, comme expliqué dans la section suivante.
Console
Pour supprimer une clé SSH publique des métadonnées du projet à l'aide de la console Google Cloud, procédez comme suit :
Dans la console Google Cloud, accédez à la page Métadonnées.
Accéder à la page "Métadonnées"
Cliquez sur l'onglet Clés SSH.
Cliquez sur
Modifier en haut de la page.Accédez à la clé SSH que vous souhaitez supprimer, puis cliquez sur le bouton de suppression
situé à côté de la clé SSH.Répétez cette étape pour chaque clé SSH que vous souhaitez supprimer.
Cliquez sur Enregistrer.
gcloud
Pour supprimer une clé SSH publique des métadonnées de projet à l'aide de gcloud CLI, procédez comme suit :
Exécutez la commande
gcloud compute project-info describe
pour obtenir les métadonnées du projet :gcloud compute project-info describe
Le résultat ressemble à ce qui suit :
... metadata: ...
- key: ssh-keys
value: |- cloudysanfrancisco:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF baklavainthebalkans:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQDx3FNVC8 google-ssh {"userName":"baklavainthebalkans","expireOn":"2021-06-14T16:59:03+0000"} ...Copiez la valeur de métadonnées
ssh-keys
.Créez et ouvrez un fichier texte sur votre poste de travail.
Dans le fichier, collez la liste des clés SSH que vous venez de copier, puis effacez celles que vous souhaitez supprimer des métadonnées du projet.
Enregistrez et fermez le fichier.
Exécutez la commande
gcloud compute project-info add-metadata
pour définir la valeurssh-keys
à l'échelle du projet :gcloud compute project-info add-metadata --metadata-from-file=ssh-keys=KEY_FILE
Remplacez
KEY_FILE
par l'un des éléments suivants :- Chemin d'accès au fichier que vous avez créé à l'étape précédente, si le projet comportait des clés SSH existantes.
- Chemin d'accès à votre nouveau fichier de clé SSH publique, si le projet ne disposait pas de clés SSH existantes.
REST
Pour supprimer une clé SSH publique des métadonnées de projet à l'aide de l'API Compute Engine, procédez comme suit :
Utilisez la méthode
projects.get
pour obtenir les valeursfingerprint
etssh-keys
à partir des métadonnées.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
Remplacez
PROJECT_ID
par l'ID du projet.La réponse est semblable à ce qui suit :
... "fingerprint": "utgYE_XWtE8=", "items": [ { "key": "ssh-keys", "value": "cloudysanfrancisco:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF\nbaklavainthebalkans:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQDx3FNVC8 google-ssh {"userName":"baklavainthebalkans","expireOn":"2021-06-14T16:59:03+0000"}" } ] ...
Copiez la liste des valeurs de clés SSH et effacez les clés que vous souhaitez supprimer.
Utilisez la commande
projects.setCommonInstanceMetadata
pour supprimer les clés SSH.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/setCommonInstanceMetadata { "items": [ { "key": "ssh-keys", "value": "EXISTING_SSH_KEYS" } ] "fingerprint": "FINGERPRINT" }
Remplacez les éléments suivants :
PROJECT_ID
: ID de votre projet.EXISTING_SSH_KEYS
: liste des clés SSH que vous souhaitez conserver.FINGERPRINT
: valeur defingerprint
à partir de la réponse de la requêteprojects.get
.
Supprimer une clé SSH publique des métadonnées d'instance
Supprimez une clé SSH publique des métadonnées d'instance pour supprimer l'accès à une seule VM.
Lorsque vous supprimez une clé des métadonnées à l'aide de gcloud CLI et de l'API Compute Engine, vous devez récupérer la liste des clés existantes, modifier la liste des clés pour supprimer les clés indésirables et écraser l'ancienne clé avec la liste des clés à conserver, comme expliqué dans la section suivante.
Console
Pour supprimer une clé SSH publique des métadonnées d'instance à l'aide de la console Google Cloud, procédez comme suit :
Dans la console Google Cloud, accédez à la page Métadonnées.
Cliquez sur le nom de la VM pour laquelle vous souhaitez supprimer une clé.
Cliquez sur Modifier.
Dans le volet central, sous Clés SSH, cliquez sur Afficher et modifier. La section s'étend pour afficher toutes les clés SSH publiques au niveau de l'instance.
Cliquez sur le bouton de suppression situé à côté de la clé que vous souhaitez supprimer :
Cliquez sur Enregistrer.
gcloud
Pour supprimer une clé SSH publique des métadonnées d'instance à l'aide de gcloud CLI, procédez comme suit :
Exécutez la commande
gcloud compute instances describe
pour obtenir les métadonnées de la VM :gcloud compute instances describe VM_NAME
Remplacez VM_NAME par le nom de la VM pour laquelle vous devez ajouter ou supprimer des clés SSH publiques.
Le résultat ressemble à ce qui suit :
... metadata: ...
- key: ssh-keys
value: |- cloudysanfrancisco:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF baklavainthebalkans:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQDx3FNVC8 google-ssh {"userName":"baklavainthebalkans","expireOn":"2021-06-14T16:59:03+0000"} ...Copiez la valeur de métadonnées
ssh-keys
.Créez et ouvrez un fichier texte sur votre poste de travail local.
Dans le fichier, collez la liste des clés SSH que vous venez de copier, puis effacez celles que vous souhaitez supprimer.
Enregistrez et fermez le fichier.
Exécutez la commande
gcloud compute project-info add-metadata
pour définir la valeurssh-keys
à l'échelle du projet :gcloud compute instances add-metadata VM_NAME --metadata-from-file ssh-keys=KEY_FILE
Remplacez les éléments suivants :
VM_NAME
: VM pour laquelle vous souhaitez supprimer la clé SSH.KEY_FILE
: chemin d'accès au fichier contenant la liste de toutes les clés SSH du projet.
REST
Pour supprimer une clé SSH publique des métadonnées d'instance à l'aide de l'API Compute Engine, procédez comme suit :
Utilisez la méthode
instances.get
pour obtenir les valeursfingerprint
etssh-keys
à partir des métadonnées.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
Remplacez les éléments suivants :
PROJECT_ID
: ID de votre projet.ZONE
: zone de la VM pour laquelle vous ajoutez une clé SSH.VM_NAME
: VM pour laquelle vous ajoutez une clé SSH.
La réponse est semblable à ce qui suit :
... "fingerprint": "utgYE_XWtE8=", "items": [ { "key": "ssh-keys", "value": "cloudysanfrancisco:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF\nbaklavainthebalkans:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQDx3FNVC8 google-ssh {"userName":"baklavainthebalkans","expireOn":"2021-06-14T16:59:03+0000"}" } ] ...
Copiez la liste des valeurs de clés SSH et effacez les clés que vous souhaitez supprimer.
Utilisez la commande
instances.setMetadata
pour supprimer les clés SSH.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata { "items": [ { "key": "ssh-keys", "value": "EXISTING_SSH_KEYS } ] "fingerprint": "FINGERPRINT" }
Remplacez les éléments suivants :
PROJECT_ID
: ID de votre projet.EXISTING_SSH_KEYS
: valeur de la cléssh-keys
de la réponse de la requêteprojects.get
FINGERPRINT
: valeur defingerprint
à partir de la réponse de la requêteinstances.get
Bloquer les clés SSH de projet à partir de VM qui utilisent des clés SSH basées sur les métadonnées
Vous pouvez empêcher les VM d'accepter les clés SSH stockées dans les métadonnées du projet en bloquant les clés SSH du projet provenant des VM. Vous pouvez bloquer les clés SSH de projet à partir de VM lors de la création d'une VM ou après la création d'une VM.
Bloquer les clés SSH de projet lors de la création d'une VM
Vous pouvez bloquer les clés SSH de projet à partir des VM lors de la création de la VM à l'aide de la console Google Cloud, de gcloud CLI ou de l'API Compute Engine.
Console
Pour créer une VM et l'empêcher d'accepter les clés SSH stockées dans les métadonnées du projet à l'aide de la console Google Cloud, procédez comme suit :
Accédez à la page Créer une instance dans Google Cloud Console.
Spécifiez les détails de la VM.
Développez la section Options avancées et procédez comme suit :
Développez la section Sécurité.
Cochez l'option Bloquer les clés SSH à l'échelle du projet.
Pour créer et démarrer la VM, cliquez sur Créer.
gcloud
Pour créer une VM et l'empêcher d'accepter les clés SSH stockées dans les métadonnées du projet à l'aide de gcloud CLI, utilisez la commande gcloud compute instances create
:
gcloud compute instances create VM_NAME \ --metadata block-project-ssh-keys=TRUE
Remplacez VM_NAME
par le nom de la nouvelle VM.
REST
Pour créer une VM et l'empêcher d'accepter les clés SSH stockées dans les métadonnées du projet à l'aide de Compute Engine, envoyez une requête POST
à la méthode instances.insert
:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
Remplacez les éléments suivants :
PROJECT_ID
: ID du projetZONE
: zone de la VM
Dans le corps de la requête, indiquez les noms d'utilisateur et les clés SSH publiques dans la propriété items
:
... { "items": [ { "key": "block-project-ssh-keys", "value": TRUE } ] } ...
Bloquer les clés SSH de projet après de la création d'une VM
Vous pouvez bloquer les clés SSH de projet à partir des VM après la création de la VM à l'aide de la console Google Cloud, de gcloud CLI ou de l'API Compute Engine.
Console
Pour empêcher les VM d'accepter les connexions à partir de clés SSH stockées dans les métadonnées du projet à l'aide de la console Google Cloud, procédez comme suit :
Dans la console Google Cloud, accédez à la page Métadonnées.
Cliquez sur le nom de la VM pour laquelle vous souhaitez bloquer les clés SSH de projet.
Cliquez sur Modifier.
Sous Clés SSH, cochez la case Bloquer les clés SSH à l'échelle du projet.
Lorsque vous avez terminé de modifier le paramètre de connexion pour les clés SSH, cliquez sur Enregistrer.
gcloud
Pour empêcher les VM d'accepter les connexions à partir de clés SSH stockées dans les métadonnées du projet à l'aide de gcloud CLI, procédez comme suit :
Exécutez la commande gcloud compute instances add-metadata
suivante :
gcloud compute instances add-metadata VM_NAME --metadata block-project-ssh-keys=TRUE
Remplacez VM_NAME
par le nom de la VM pour laquelle vous souhaitez bloquer les clés SSH publiques au niveau du projet.
REST
Pour empêcher les VM d'accepter les connexions à partir de clés SSH stockées dans les métadonnées du projet à l'aide de l'API Compute Engine, procédez comme suit :
Utilisez la méthode
instances.get
pour obtenir la valeurfingerprint
à partir des métadonnées.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
Remplacez les éléments suivants :
PROJECT_ID
: ID de votre projet.ZONE
: zone de la VM pour laquelle vous ajoutez une clé SSH.VM_NAME
: VM pour laquelle vous ajoutez une clé SSH.
La réponse est semblable à ce qui suit :
... "fingerprint": "utgYE_XWtE8=" ...
Utilisez la méthode
instances.setMetadata
pour définirblock-project-ssh-keys
surTRUE
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata { "items": [ { "key": "block-project-ssh-keys", "value": TRUE } ] "fingerprint": "FINGERPRINT" }
Remplacez les éléments suivants :
PROJECT_ID
est l'ID de votre projet.ZONE
est la zone où se situe votre instance.INSTANCE_NAME
est l'instance sur laquelle vous souhaitez bloquer les clés à l'échelle du projet.FINGERPRINT
: valeur defingerprint
à partir de la réponse de la requêteinstances.get
.
Étape suivante
- Découvrez les avantages à utiliser OS Login pour la gestion des accès.
- Connectez-vous à des VM à l'aide des outils Google pour ne pas avoir à gérer vos propres clés SSH.