Configurer OS Login pour exiger des certificats SSH pour les connexions SSH

Les VM compatibles avec les certificats OS Login acceptent les connexions à partir de clés SSH et de certificats SSH. Les certificats SSH sont des clés SSH qui ont été signées par une autre clé de confiance, en l'occurrence une autorité de certification gérée par OS Login. Ce document explique comment configurer des VM OS Login pour exiger des certificats SSH pour les connexions SSH et bloquer les connexions à partir de clés SSH non signées.

Lorsque vous configurez OS Login pour exiger des certificats SSH pour les connexions aux VM, seuls les certificats SSH signés par l'autorité de certification sont autorisés à se connecter aux VM. Les connexions à partir de clés SSH non signées sont rejetées. Les certificats SSH expirent au bout de cinq minutes. Après ce délai, ils ne peuvent plus être utilisés pour se connecter aux VM et un nouveau certificat doit être généré.

Nous vous recommandons de configurer OS Login pour exiger des certificats SSH pour les connexions SSH afin d'ajouter une couche de sécurité supplémentaire contre les utilisateurs malveillants. Les certificats SSH sont éphémères et ne sont valides que pour une VM spécifique. Cela signifie que s'ils sont compromis, leur surface d'attaque et leur fenêtre d'attaque sont beaucoup plus petites que celles des clés SSH à longue durée de vie.

Si votre organisation utilise la fédération des identités des employés, consultez Utiliser la fédération des identités des employés avec OS Login pour savoir comment activer les certificats SSH pour votre organisation.

Avant de commencer

  • Configurez OS Login et attribuez des rôles IAM OS Login.
  • Si ce n'est pas déjà fait, configurez l'authentification. L'authentification permet 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 en sélectionnant l'une des options suivantes :

    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 la Google Cloud CLI. Une fois l'installation terminée, initialisez la Google Cloud CLI en exécutant la commande suivante :

      gcloud init

      Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

  • Définissez une région et une zone par défaut.

Limites

  • La VM à laquelle vous vous connectez doit disposer d'OpenSSH version 7.4 ou ultérieure pour utiliser les certificats SSH.

Exiger des certificats SSH

Vous pouvez configurer OS Login pour exiger des certificats SSH pour toutes les connexions SSH aux VM OS Login de votre projet, ou pour des VM uniques. Une fois que vous avez configuré OS Login pour exiger des certificats SSH, les connexions SSH depuis la console Google Cloud et gcloud CLI utilisent des certificats SSH par défaut. Si vous ne souhaitez pas configurer OS Login pour exiger des certificats, mais que vous souhaitez utiliser des certificats pour vous connecter à des VM, vous devez vous connecter à l'aide d'outils tiers, comme décrit dans la section Se connecter à une VM à l'aide d'un certificat SSH.

Avertissement : Lorsque vous exigez des certificats SSH, les VM refusent les connexions à partir des clés SSH que vous avez configurées précédemment pour les utiliser avec OS Login.

Exiger des certificats SSH pour toutes les VM d'un projet avec OS Login activé

Pour exiger des certificats SSH pour toutes les connexions à toutes les VM qui utilisent OS Login dans votre projet, utilisez la console Google Cloud ou la gcloud CLI.

Console

Pour exiger des certificats SSH pour toutes les connexions aux VM compatibles avec OS Login, utilisez la console Google Cloud pour définir enable-oslogin et enable-oslogin-certificates sur TRUE dans les métadonnées du projet :

  1. Accédez à la page Métadonnées.

    Accéder à la page "Métadonnées"

  2. Cliquez sur Modifier.

  3. Cliquez sur Ajouter un élément.

    1. Dans le champ Clé, saisissez enable-oslogin.
    2. Dans le champ Valeur, saisissez TRUE.
  4. Cliquez sur Ajouter un élément.

    1. Dans le champ Clé, saisissez enable-oslogin-certificates.
    2. Dans le champ Valeur, saisissez TRUE.
  5. Cliquez sur Enregistrer.

gcloud

Pour exiger des certificats SSH pour toutes les connexions aux VM compatibles avec OS Login, exécutez la commande gcloud compute project-info add-metadata pour définir enable-oslogin=TRUE et enable-oslogin-certificates=TRUE dans les métadonnées du projet :

gcloud compute project-info add-metadata \
    --metadata enable-oslogin=TRUE,enable-oslogin-certificates=TRUE

Exiger des certificats SSH sur une seule VM avec OS Login activé

Pour exiger des certificats pour toutes les connexions SSH à une seule VM utilisant OS Login, utilisez la console Google Cloud ou la gcloud CLI.

Console

Pour exiger des certificats SSH pour toutes les connexions à une seule VM, utilisez la consoleGoogle Cloud pour définir enable-oslogin et enable-oslogin-certificates sur TRUE dans les métadonnées d'instance :

  1. Accédez à la page Instances de VM.

    Accéder à la page Instances de VM

  2. Cliquez sur le nom de la VM pour laquelle vous souhaitez exiger des certificats SSH.

  3. Cliquez sur Modifier.

  4. Dans la section Métadonnées, cliquez sur Ajouter un élément.

    1. Dans le champ Clé, saisissez enable-oslogin.
    2. Dans le champ Valeur, saisissez TRUE.
  5. Cliquez sur Ajouter un élément.

    1. Dans le champ Clé, saisissez enable-oslogin-certificates.
    2. Dans le champ Valeur, saisissez TRUE.
  6. Cliquez sur Enregistrer.

gcloud

Pour exiger des certificats SSH pour toutes les connexions à une seule VM, utilisez la commande gcloud compute instances add-metadata pour définir enable-oslogin=TRUE et enable-oslogin-certificates=TRUE dans les métadonnées d'instance :

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

Remplacez VM_NAME par le nom de votre VM.

Se connecter à une VM à l'aide d'un certificat SSH

Une fois que vous avez configuré OS Login pour exiger des certificats SSH, les connexions SSH depuis la console Google Cloud et gcloud CLI utilisent des certificats SSH par défaut. Si vous ne souhaitez pas configurer OS Login pour exiger des certificats, mais que vous souhaitez utiliser des certificats pour vous connecter à des VM, vous devez vous connecter à l'aide d'outils tiers.

Console

Connectez-vous à des VM à l'aide de SSH-in-Browser depuis la consoleGoogle Cloud en procédant 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 machines virtuelles, cliquez sur SSH sur la ligne de l'instance à laquelle vous souhaitez vous connecter.

    bouton SSH en regard du nom de l'instance.

gcloud

Exécutez la commande gcloud beta compute ssh pour vous connecter à une VM à l'aide d'un certificat :

gcloud beta compute ssh VM_NAME

Remplacez VM_NAME par le nom de la VM à laquelle vous souhaitez vous connecter.

Outils tiers

Pour utiliser un certificat SSH avec un client SSH tiers, procédez comme suit :

  1. Créez une clé SSH si vous n'en avez pas déjà une.

  2. Signez votre clé SSH publique à l'aide de la méthode projects.locations.signSshPublicKey :

    POST https://oslogin.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION:signSshPublicKey
    
    {
     "ssh_public_key": "PUBLIC_KEY"
     "compute_instance": "COMPUTE_INSTANCE",
     "service_account": "SERVICE_ACCOUNT"
    }
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID du projet contenant la VM à laquelle vous souhaitez vous connecter
    • LOCATION : région où se trouve la VM à laquelle vous souhaitez vous connecter
    • PUBLIC_KEY : contenu de votre fichier de clé publique SSH
    • COMPUTE_INSTANCE : instance Compute Engine à laquelle se connecter, au format projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_ID.
    • SERVICE_ACCOUNT : compte de service associé à l'instance. Supprimez ce champ si aucun compte de service n'est associé à l'instance.
  3. Copiez le certificat SSH à partir du résultat de la méthode projects.locations.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 : votre nom d'utilisateur OS Login
    • EXTERNAL_IP : adresse IP externe de la VM.

Dépannage

Si vous ne parvenez pas à vous connecter aux VM que vous avez configurées pour exiger des certificats SSH, cela peut être dû aux raisons suivantes :

Étape suivante