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 qu'elles exigent des certificats SSH pour les connexions SSH et bloquent 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. Après cette période, 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 la OS Login#39;exploitation pour exiger des certificats SSH pour les connexions SSH afin d'ajouter une couche de sécurité contre les utilisateurs malveillants. Les certificats SSH sont valables pour une durée limitée et uniquement 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 d'identité de personnel, consultez Utiliser la fédération d'identité de personnel 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 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 en sélectionnant l'une des options suivantes :

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

      1. After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      2. Set a default region and zone.

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.

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 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 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. In the Google Cloud console, go to the VM instances page.

    Go to VM instances

  2. In the list of virtual machine instances, click SSH in the row of the instance that you want to connect to.

    SSH button next to instance name.

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