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

Les VM compatibles avec les certificats OS Login prennent en charge 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 refusées. Les certificats SSH expirent au bout de cinq minutes. Ils ne peuvent alors 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 de renforcer la sécurité contre les utilisateurs malveillants. Les certificats SSH sont éphémères et ne sont valides que pour une VM spécifique. Par conséquent, s'ils sont compromis, leur surface d'attaque est beaucoup plus petite et leur fenêtre d'attaque est beaucoup plus courte 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 découvrir 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 Google Cloud services et aux API. 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 Google Cloud console pour accéder aux Google Cloud services et aux API, vous n'avez pas besoin de configurer l'authentification.

    gcloud

    1. Installez la Google Cloud CLI. Après l'installation, 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 des 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 à partir de la Google Cloud console et de la 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.

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 Google Cloud console ou la gcloud CLI.

Console

Pour exiger des certificats SSH pour toutes les connexions aux VM avec OS Login activé, utilisez la Google Cloud console 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 avec OS Login activé, utilisez la gcloud compute project-info add-metadata commande 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 qui utilise OS Login, utilisez la Google Cloud console ou la gcloud CLI.

Console

Pour exiger des certificats SSH pour toutes les connexions à une seule VM, utilisez la Google Cloud console 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 gcloud compute instances add-metadata commande 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 à partir de la Google Cloud console et de la 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 Google Cloud console en procédant comme suit :

  1. Dans la Google Cloud console, 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 dans la ligne de l'instance à laquelle vous souhaitez vous connecter.

    bouton SSH en regard du nom de l'instance.

gcloud

Utilisez la gcloud beta compute ssh commande 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 dans laquelle 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 l'instance n'a pas de compte de service associé.
  3. Copiez le certificat SSH à partir de la sortie 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 : 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