S'authentifier à l'aide de clés publiques SSH

Les utilisateurs et les comptes de service peuvent utiliser des clés publiques SSH pour s'authentifier auprès des dépôts Secure Source Manager. Cette page explique comment générer une paire de clés SSH, puis l'ajouter comme méthode d'authentification dans l'interface Web de Secure Source Manager.

Secure Source Manager accepte les types de clés SSH RSA, ECDSA et Ed25519.

Rôles requis

Pour obtenir les autorisations nécessaires pour vous authentifier à l'aide de clés publiques SSH, demandez à votre administrateur de vous accorder les rôles IAM suivants :

Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

Ces rôles prédéfinis contiennent les autorisations requises pour s'authentifier à l'aide de clés publiques SSH. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :

Autorisations requises

Vous devez disposer des autorisations suivantes pour vous authentifier à l'aide de clés publiques SSH :

  • securesourcemanager.sshkeys.createAny sur l'instance Secure Source Manager
  • Pour attribuer une clé SSH à un compte de service: iam.serviceAccounts.actAs sur le compte de service

Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.

Pour en savoir plus sur l'attribution de rôles Secure Source Manager, consultez Contrôle des accès avec IAM et Accorder aux utilisateurs l'accès à une instance.

Générer une paire de clés

Une paire de clés SSH comprend une clé privée stockée sur votre système local et une clé publique que vous enregistrez Google Cloud.

Linux ou macOS

  1. Installez OpenSSH sur votre système local.

  2. À l'invite de commande, saisissez la commande suivante :

    ssh-keygen -t KEY_TYPE -C "USER_EMAIL"
    

    Où :

    • USER_EMAIL est votre adresse e-mail.
    • KEY_TYPE correspond aux rsa, ecdsa ou ed25519.

    Exemple :

    ssh-keygen -t rsa -C "user@example.com"
    
    1. Lorsque vous y êtes invité, saisissez un emplacement et un nom de fichier pour le fichier de clé publique. Pour accepter l'emplacement et le nom de fichier par défaut, appuyez sur Entrée.

    2. Lorsque vous y êtes invité, laissez la phrase secrète vide et appuyez sur Entrée.

Windows

  1. Si vous ne l'avez pas déjà fait, installez le client OpenSSH (inclus dans Windows 10 et versions ultérieures) et Git pour Windows sur votre système local. Les instructions suivantes utilisent OpenSSH et Git pour Windows.

  2. Dans PowerShell ou une invite de commande, exécutez la commande suivante :

    ssh-keygen -t KEY_TYPE -C "USER_EMAIL"
    

    Où :

    • USER_EMAIL est votre adresse e-mail.
    • KEY_TYPE correspond aux rsa, ecdsa ou ed25519.

    Exemple :

    ssh-keygen -t rsa -C "user@example.com"
    
    1. Lorsque vous y êtes invité, saisissez un emplacement et un nom de fichier pour le fichier de clé publique. Pour accepter l'emplacement et le nom de fichier par défaut (`%USERPROFILE%.ssh`), appuyez sur Entrée.

    2. Lorsque vous y êtes invité, laissez la phrase secrète vide et appuyez sur Entrée.

Ajouter une clé SSH à l'agent SSH

Pour utiliser la paire de clés SSH que vous avez générée, ajoutez votre clé à l'agent SSH. Si vous n'avez pas enregistré votre clé à l'emplacement par défaut, l'ajouter à l'agent SSH permet à SSH de la localiser.

Linux ou macOS

  1. Démarrez ssh-agent en arrière-plan :

    eval "$(ssh-agent -s)"
    

    La commande renvoie l'ID de processus de l'agent (PID), par exemple :

    Agent pid 3245
    

    Selon votre environnement, vous devrez peut-être utiliser une autre commande, par exemple :

    • Pour utiliser l'accès racine, exécutez sudo -s -H avant de démarrer ssh-agent.
    • Pour exécuter ssh-agent directement, utilisez exec ssh-agent bash ou exec ssh-agent zsh.
  2. Ajoutez votre clé privée SSH à ssh-agent.

    ssh-add ~/.ssh/FILENAME
    

    FILENAME correspond au nom de votre fichier de clé privée, par exemple id_rsa ou id_ed25519.

Windows

  1. Démarrez ssh-agent.

    • Si vous utilisez Git Bash, démarrez ssh-agent :

      eval "$(ssh-agent -s)"
      
    • Si vous utilisez PowerShell ou une invite de commande, démarrez le service ssh-agent. Dans PowerShell, exécutez :

      Set-Service ssh-agent -StartupType Automatic; Start-Service ssh-agent
      
  2. Ajoutez votre clé privée SSH à ssh-agent.

    • Si vous utilisez Git Bash :

      ssh-add ~/.ssh/FILENAME
      
    • Si vous utilisez PowerShell ou une invite de commande :

      ssh-add $env:USERPROFILE\.ssh\FILENAME
      

    FILENAME correspond au nom de votre fichier de clé privée, par exemple id_rsa ou id_ed25519.

Ajouter des clés SSH pour les utilisateurs

  1. Dans l'interface Web de Secure Source Manager, sur la page de l'instance ou du dépôt, cliquez sur le menu Plus d'options.
  2. Cliquez sur Clés SSH de l'utilisateur.

    La page Clés SSH de l'utilisateur s'ouvre et affiche la liste des clés existantes que vous avez créées.

  3. Sur la page Clés SSH de l'utilisateur, cliquez sur Ajouter une clé.

  4. Sur la page Ajouter une clé SSH, saisissez les valeurs suivantes pour votre clé :

    1. Titre : ajoutez un titre descriptif pour la clé.
    2. Clé publique SSH : collez votre chaîne de clé publique. Pour obtenir votre chaîne de clé publique, ouvrez le fichier de clé publique (FILENAME.pub) dans un éditeur de texte ou exécutez l'une des commandes suivantes :

      Linux ou macOS

      cat ~/.ssh/FILENAME.pub
      

      Windows

      cat $env:USERPROFILE\.ssh\FILENAME.pub
      

      Remplacez FILENAME par le nom de votre fichier de clé.

Vous pouvez utiliser des clés SSH pour vous authentifier auprès de n'importe quel dépôt Secure Source Manager, à condition de disposer des autorisations nécessaires sur ce dépôt.

Ajouter des clés SSH pour les comptes de service

Pour autoriser l'accès programmatique à votre dépôt, vous pouvez ajouter une clé SSH pour un compte de service.

  1. Si vous ne disposez pas déjà d'un compte de service que vous souhaitez utiliser, créez-en un.
  2. Dans l'interface Web de Secure Source Manager, cliquez sur le menu Plus d'options.
  3. Cliquez sur Clés SSH du compte de service. La page Clés SSH du compte de service s'ouvre et affiche la liste des clés existantes que vous avez ajoutées.
  4. Sur la page Clés SSH du compte de service, cliquez sur Ajouter une clé.
  5. Sur la page Ajouter une clé SSH du compte de service, saisissez les valeurs suivantes pour votre clé :

    1. Titre : titre descriptif de la clé
    2. Compte de service : adresse e-mail du compte de service que vous souhaitez utiliser pour la clé SSH au format SA_NAME@PROJECT_ID.iam.gserviceaccount.com

      Où :

      • SA_NAME correspond au nom du compte de service.
      • PROJECT_ID correspond à l'ID du projet dans lequel le compte de service a été créé.
    3. Clé publique SSH : votre clé SSH publique. Pour savoir comment générer une paire de clés SSH, consultez Générer une paire de clés.

  6. Si le compte de service ne se trouve pas dans le même projet que votre instance Secure Source Manager, attribuez à l'agent de service de Secure Source Manager l'un des rôles ou autorisations suivants sur le compte de service que vous souhaitez utiliser :

    • Autorisation iam.serviceAccounts.signJwt
    • Rôle Créateur de jetons du compte de service (roles/iam.serviceAccountTokenCreator)

    Exécutez la commande suivante pour ajouter une stratégie IAM à votre compte de service Secure Source Manager afin de lui accorder le rôle Créateur de jetons du compte de service.

    gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT \
        --member="serviceAccount:service-INSTANCE_PROJECT_NUMBER@gcp-sa-sourcemanager.iam.gserviceaccount.com" \
        --role="roles/iam.serviceAccountTokenCreator"
    

    SERVICE_ACCOUNT correspond au compte de service que vous souhaitez utiliser et INSTANCE_PROJECT_NUMBER correspond au numéro de projet de votre instance Secure Source Manager.

    Le SERVICE_ACCOUNT doit être au format d'un ID de compte de service numérique ou d'une adresse e-mail, comme suit : 123456789876543212345 ou my-iam-account@somedomain.com.

Étape suivante