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 en tant que méthode d'authentification dans l'interface Web Secure Source Manager.

Secure Source Manager est compatible avec 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 savoir comment accorder des rôles Secure Source Manager, consultez Contrôle des accès avec IAM et Accorder aux utilisateurs l'accès à l'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 à l'aide de Google Cloud.

Linux ou macOS

  1. Installez OpenSSH sur votre système local.

  2. Lorsque vous y êtes invité, 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 la 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, 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 une invite de commandes PowerShell ou standard, 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 la 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é dans 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 (PID) de l'agent, par exemple :

    Agent pid 3245
    

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

    • Pour utiliser l'accès root, 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 est le 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 l'invite de commandes, démarrez le service ssh-agent. Dans PowerShell, exécutez la commande suivante :

      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 l'invite de commandes :

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

    FILENAME est le 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 Secure Source Manager, sur la page de l'instance ou du dépôt, cliquez sur le menu Autres options.
  2. Cliquez sur Clés SSH 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 Add SSH Key (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 la chaîne de votre clé publique. Pour obtenir la 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 encore d'un compte de service que vous souhaitez utiliser, créez-en un.
  2. Dans l'interface Web 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 de compte de service, saisissez les valeurs suivantes pour votre clé :

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

      • 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é publique SSH. 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, accordez à l'agent de service 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 de 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 est le compte de service que vous souhaitez utiliser et INSTANCE_PROJECT_NUMBER est le numéro de projet de votre instance Secure Source Manager.

    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.

Étapes suivantes