Gestion des clés SSH et PGP dans Transfer Family - AWS Transfer Family

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Gestion des clés SSH et PGP dans Transfer Family

Dans cette section, vous trouverez des informations sur les clés SSH, notamment sur la façon de les générer et de les faire pivoter. Pour en savoir plus sur l'utilisation de Transfer Family with AWS Lambda pour gérer les clés, consultez le billet de blog Enabling user self-service key management with A AWS Transfer Family and AWS Lambda.

Note

AWS Transfer Family accepte les clés RSA, ECDSA et ED25519.

Cette section explique également comment générer et gérer les clés Pretty Good Privacy (PGP).

Algorithmes pris en charge pour les clés utilisateur et serveur

Les algorithmes clés suivants sont pris en charge pour les paires de clés utilisateur et serveur qu'elles contiennent. AWS Transfer Family

Note

Pour les algorithmes à utiliser avec le déchiffrement PGP dans les flux de travail, voir Algorithmes pris en charge pour les paires de clés PGP.

  • Pour ED25519 : ssh-ed25519

  • Pour RSA :

    • rsa-sha2-256

    • rsa-sha2-512

  • Pour l'ECDSA :

    • ecdsa-sha2-nistp256

    • ecdsa-sha2-nistp384

    • ecdsa-sha2-nistp521

Note

Nous utilisons ssh-rsa SHA1 pour nos anciennes politiques de sécurité. Pour plus de détails, consultez Algorithmes cryptographiques.

Génération de clés SSH pour les utilisateurs gérés par des services

Vous pouvez configurer votre serveur pour authentifier les utilisateurs à l'aide de la méthode d'authentification gérée par le service, dans laquelle les noms d'utilisateur et les clés SSH sont stockés dans le service. La clé SSH publique de l'utilisateur est téléchargée sur le serveur en tant que propriété de l'utilisateur. Cette clé est utilisée par le serveur dans le cadre d'un processus d'authentification standard basé sur des clés. Sur un même serveur, chaque utilisateur peut disposer de plusieurs clés SSH publiques sur fichier. Pour connaître les limites du nombre de clés pouvant être stockées par utilisateur, voir les AWS Transfer Family points de terminaison et les quotas dans le Référence générale d'Amazon Web Services.

Comme alternative à la méthode d'authentification gérée par le service, vous pouvez authentifier les utilisateurs à l'aide d'un fournisseur d'identité personnalisé, ou AWS Directory Service for Microsoft Active Directory. Pour plus d’informations, consultez Travailler avec des fournisseurs d'identité personnalisés ou Utilisation de AWS Directory Service pour Microsoft Active Directory.

Un serveur ne peut authentifier les utilisateurs qu'à l'aide d'une seule méthode (service géré, service d'annuaire ou fournisseur d'identité personnalisé), et cette méthode ne peut pas être modifiée une fois le serveur créé.

Création de clés SSH sous macOS, Linux ou Unix

Sur les systèmes d'exploitation macOS, Linux ou Unix, vous utilisez la ssh-keygen commande pour créer une clé publique SSH et une clé privée SSH, également appelées paire de clés.

Pour créer des clés SSH sur un système d'exploitation macOS, Linux ou Unix
  1. Sur les systèmes d'exploitation macOS, Linux ou Unix, ouvrez un terminal de commande.

  2. AWS Transfer Family accepte les clés au format RSA, ECDSA et ED25519. Choisissez la commande appropriée en fonction du type de paire de clés que vous générez.

    Note

    Dans les exemples suivants, nous n'indiquons pas de phrase secrète : dans ce cas, l'outil vous demande de saisir votre mot de passe, puis de le répéter pour vérifier. La création d'une phrase secrète permet de mieux protéger votre clé privée et peut également améliorer la sécurité globale du système. Vous ne pouvez pas récupérer votre mot de passe : si vous l'oubliez, vous devez créer une nouvelle clé.

    Toutefois, si vous générez une clé d'hôte de serveur, vous devez spécifier une phrase secrète vide, en spécifiant l'-N ""option dans la commande (ou en appuyant Enter deux fois lorsque vous y êtes invité), car les serveurs Transfer Family ne peuvent pas demander de mot de passe au démarrage.

    • Pour générer une paire de clés RSA 4096 bits :

      ssh-keygen -t rsa -b 4096 -f key_name
    • Pour générer une paire de clés ECDSA 521 bits (les tailles de bits de l'ECDSA sont de 256, 384 et 521) :

      ssh-keygen -t ecdsa -b 521 -f key_name
    • Pour générer une paire de clés ED25519 :

      ssh-keygen -t ed25519 -f key_name
    Note

    key_nameest le nom du fichier de paire de clés SSH.

    Voici un exemple de ssh-keygen sortie.

    ssh-keygen -t rsa -b 4096 -f key_name Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in key_name. Your public key has been saved in key_name.pub. The key fingerprint is: SHA256:8tDDwPmanTFcEzjTwPGETVWOGW1nVz+gtCCE8hL7PrQ bob.amazon.com The key's randomart image is: +---[RSA 4096]----+ | . ....E | | . = ... | |. . . = ..o | | . o + oo = | | + = .S.= * | | . o o ..B + o | | .o.+.* . | | =o*+*. | | ..*o*+. | +----[SHA256]-----+
    Note

    Lorsque vous exécutez la commande ssh-keygen telle qu'elle est présentée ci-dessus, elle crée les clés publique et privée sous forme de fichiers dans le répertoire actuel.

    Votre paire de clés SSH est maintenant prête à être utilisée. Suivez les étapes 3 et 4 pour stocker la clé publique SSH pour les utilisateurs gérés par le service. Ces utilisateurs utilisent les clés lorsqu'ils transfèrent des fichiers sur les terminaux du serveur Transfer Family.

  3. Accédez au key_name.pub fichier et ouvrez-le.

  4. Copiez le texte et collez-le dans la clé publique SSH pour l'utilisateur géré par le service.

    1. Ouvrez la AWS Transfer Family console à l'adresse https://console.aws.amazon.com/transfer/, puis sélectionnez Servers dans le volet de navigation.

    2. Sur la page Serveurs, sélectionnez l'ID du serveur qui contient l'utilisateur que vous souhaitez mettre à jour.

    3. Sélectionnez l'utilisateur pour lequel vous ajoutez une clé publique.

    4. Dans le volet Clés publiques SSH, choisissez Ajouter une clé publique SSH.

      La AWS Transfer Family console, qui affiche les détails de l'utilisateur sélectionné.
    5. Collez le texte de la clé publique que vous avez générée dans la zone de texte de la clé publique SSH, puis choisissez Ajouter une clé.

      La AWS Transfer Family console, qui affiche la page Ajouter une clé pour ajouter une clé publique.

      La nouvelle clé est répertoriée dans le volet des clés publiques SSH.

      La AWS Transfer Family console, qui affiche la clé publique récemment ajoutée dans la section Clés publiques SSH.

Création de clés SSH sous Microsoft Windows

Windows utilise un format de paire de clés SSH légèrement différent. La clé publique doit être au format PUB et la clé privée au format PPK. Sur Windows, vous pouvez utiliser PuTTYgen pour créer une paire de clés SSH dans les formats appropriés. Vous pouvez également utiliser PuTTYgen pour convertir une clé privée générée à l'aide de ssh-keygen en fichier .ppk.

Note

Si vous présentez à WinSCP un fichier de clé privée non formaté, ce client propose de convertir la clé .ppk .ppk en format pour vous.

Pour un didacticiel sur la création de clés SSH à l'aide de PuttyGen sous Windows, consultez le site Web SSH.com.

Convertir une clé publique SSH2 au format PEM

AWS Transfer Family accepte uniquement les clés publiques au format PEM. Si vous avez une clé publique SSH2, vous devez la convertir. Le format d'une clé publique SSH2 est le suivant :

---- BEGIN SSH2 PUBLIC KEY ---- Comment: "rsa-key-20160402" AAAAB3NzaC1yc2EAAAABJQAAAgEAiL0jjDdFqK/kYThqKt7THrjABTPWvXmB3URI : : ---- END SSH2 PUBLIC KEY ----

Le format d'une clé publique PEM est le suivant :

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAA...

Exécutez la commande suivante pour convertir une clé publique au format SSH2 en clé publique au format PEM. Remplacez ssh2-key par le nom de votre clé SSH2 et PEM-key par le nom de votre clé PEM.

ssh-keygen -i -f ssh2-key.pub > PEM-key.pub

Faire pivoter les clés SSH

Pour des raisons de sécurité, nous recommandons la meilleure pratique qui consiste à faire pivoter vos clés SSH. Généralement, cette rotation est spécifiée dans le cadre d'une politique de sécurité et est mise en œuvre de manière automatisée. Selon le niveau de sécurité, pour une communication très sensible, une paire de clés SSH peut être utilisée une seule fois. Cela élimine les risques liés au stockage des clés. Cependant, il est beaucoup plus courant de stocker les informations d'identification SSH pendant un certain temps et de définir un intervalle qui n'impose pas une charge excessive aux utilisateurs. Cette période est souvent de trois mois.

Il existe deux méthodes de rotation de clés SSH :

  • Sur la console, vous pouvez télécharger une nouvelle clé publique SSH et supprimer une clé publique SSH existante.

  • À l'aide de l'API, vous pouvez mettre à jour les utilisateurs existants en utilisant l'DeleteSshPublicKeyAPI pour supprimer la clé publique Secure Shell (SSH) d'un utilisateur et l'ImportSshPublicKeyAPI pour ajouter une nouvelle clé publique Secure Shell (SSH) au compte de l'utilisateur.

Console
Pour effectuer une rotation des touches dans la console
  1. Ouvrez la AWS Transfer Family console à l'adresse https://console.aws.amazon.com/transfer/.

  2. Accédez à la page Serveurs.

  3. Choisissez l'identifiant dans la colonne ID du serveur pour afficher la page de détails du serveur.

  4. Sous Utilisateurs, cochez la case de l'utilisateur dont vous souhaitez faire pivoter la clé publique SSH, puis choisissez Actions, puis choisissez Ajouter une clé pour afficher la page Ajouter une clé.

    or

    Choisissez le nom d'utilisateur pour voir la page des détails de l'utilisateur, puis choisissez Ajouter une clé publique SSH pour afficher la page Ajouter une clé.

  5. Entrez la nouvelle clé publique SSH et choisissez Ajouter une clé.

    Important

    Le format de la clé publique SSH dépend du type de clé que vous avez générée.

    • Pour les clés RSA, le format estssh-rsa string.

    • Pour les clés ED25519, le format est. ssh-ed25519 string

    • Pour les clés ECDSA, la clé commence parecdsa-sha2-nistp256, ou ecdsa-sha2-nistp384ecdsa-sha2-nistp521, selon la taille de la clé que vous avez générée. La chaîne de début est ensuite suivie destring, comme pour les autres types de clés.

    Vous êtes renvoyé à la page des détails de l'utilisateur, et la nouvelle clé publique SSH que vous venez de saisir apparaît dans la section Clés publiques SSH.

  6. Cochez la case correspondant à l'ancienne touche YOU que vous souhaitez supprimer, puis choisissez Supprimer.

  7. Confirmez l'opération de suppression en saisissant le motdelete, puis choisissez Supprimer.

API
Pour effectuer une rotation des clés à l'aide de l'API
  1. Sur les systèmes d'exploitation macOS, Linux ou Unix, ouvrez un terminal de commande.

  2. Récupérez la clé SSH que vous souhaitez supprimer en saisissant la commande suivante. Pour utiliser cette commande, remplacez-la serverID par l'ID de serveur de votre serveur Transfer Family, puis par username votre nom d'utilisateur.

    aws transfer describe-user --server-id='serverID' --user-name='username'

    La commande renvoie des informations sur l'utilisateur. Copiez le contenu du "SshPublicKeyId": champ. Vous devrez saisir cette valeur ultérieurement au cours de cette procédure.

    "SshPublicKeys": [ { "SshPublicKeyBody": "public-key", "SshPublicKeyId": "keyID", "DateImported": 1621969331.072 } ],
  3. Importez ensuite une nouvelle clé SSH pour votre utilisateur. À l'invite , entrez la commande suivante. Pour utiliser cette commande, serverID remplacez-la par l'ID du serveur de votre serveur Transfer Family, username par votre nom d'utilisateur et public-key par l'empreinte digitale de votre nouvelle clé publique.

    aws transfer import-ssh-public-key --server-id='serverID' --user-name='username' --ssh-public-key-body='public-key'

    Si la commande aboutit, aucune sortie n'est renvoyée.

  4. Enfin, supprimez l'ancienne clé en exécutant la commande suivante. Pour utiliser cette commande, remplacez serverID par l'ID de serveur de votre serveur Transfer Family, remplacez par username votre nom d'utilisateur et remplacez par la valeur keyID-from-step-2 d'ID clé que vous avez copiée à l'étape 2 de cette procédure

    aws transfer delete-ssh-public-key --server-id='serverID' --user-name='username' --ssh-public-key-id='keyID-from-step-2'
  5. (Facultatif) Pour confirmer que l'ancienne clé n'existe plus, répétez l'étape 2.

Génération et gestion de clés PGP

Vous pouvez utiliser le décryptage Pretty Good Privacy (PGP) avec les fichiers que Transfer Family traite avec des flux de travail. Pour utiliser le déchiffrement dans une étape du flux de travail, fournissez une clé PGP.

Le blog sur le AWS stockage contient un article qui décrit comment simplement déchiffrer des fichiers sans écrire de code à l'aide des flux de travail Transfer Family Managed, crypter et déchiffrer des fichiers avec PGP et. AWS Transfer Family

Génération de clés PGP

L'opérateur que vous utilisez pour générer vos clés PGP dépend de votre système d'exploitation et de la version du logiciel de génération de clés que vous utilisez.

Si vous utilisez Linux ou Unix, utilisez le programme d'installation de votre package pour l'installergpg. En fonction de votre distribution Linux, l'une des commandes suivantes devrait fonctionner pour vous.

sudo yum install gnupg
sudo apt-get install gnupg

Pour Windows ou macOS, vous pouvez télécharger ce dont vous avez besoin sur https://gnupg.org/download/.

Après avoir installé votre logiciel de génération de clés PGP, vous devez exécuter la gpg --gen-key commande gpg --full-gen-key or pour générer une paire de clés.

Note

Si vous utilisez la GnuPG version 2.3.0 ou une version plus récente, vous devez exécutergpg --full-gen-key. Lorsque vous êtes invité à saisir le type de clé à créer, choisissez RSA ou ECC. Toutefois, si vous choisissez ECC, veillez à choisir l'une ou l'autre de ces options NIST ou BrainPool à choisir la courbe elliptique. Ne choisissez pasCurve 25519.

Algorithmes pris en charge pour les paires de clés PGP

Nous prenons en charge les algorithmes suivants pour les paires de clés PGP :

  • RSA

  • Elgamal

  • ETC. :

    • NIST

    • BrainPool

Note

Nous ne prenons pas en charge les touches CCurve25519.

gpgSous-commandes utiles

Voici quelques sous-commandes utiles pour gpg :

  • gpg --help— Cette commande répertorie les options disponibles et peut inclure quelques exemples.

  • gpg --list-keys— Cette commande répertorie les détails de toutes les paires de clés que vous avez créées.

  • gpg --fingerprint— Cette commande répertorie les détails de toutes vos paires de clés, y compris l'empreinte digitale de chaque clé.

  • gpg --export -a user-name— Cette commande exporte la partie clé publique de la user-name clé utilisée lors de la génération de la clé.

Gérer les clés PGP

Pour gérer vos clés PGP, utilisez AWS Secrets Manager.

Note

Votre nom secret inclut votre identifiant de serveur Transfer Family. Cela signifie que vous devez déjà avoir identifié ou créé un serveur avant de pouvoir y stocker les informations de votre clé PGP. AWS Secrets Manager

Si vous souhaitez utiliser une seule clé et une seule phrase secrète pour tous vos utilisateurs, vous pouvez enregistrer les informations du bloc de clés PGP sous le nom secretaws/transfer/server-id/@pgp-default, où se server-id trouve l'identifiant de votre serveur Transfer Family. Transfer Family utilise cette clé par défaut si aucune clé ne user-name correspond à l'utilisateur qui exécute le flux de travail.

Vous pouvez créer une clé pour un utilisateur spécifique. Dans ce cas, le format du nom du secret est aws/transfer/server-id/user-name le suivant : où user-name correspond à l'utilisateur qui exécute le flux de travail pour un serveur Transfer Family.

Note

Vous pouvez stocker un maximum de 3 clés privées PGP, par serveur Transfer Family, par utilisateur.

Pour configurer les clés PGP à utiliser avec le déchiffrement
  1. Selon la version de GPG que vous utilisez, exécutez l'une des commandes suivantes pour générer une paire de clés PGP qui n'utilise pas l'algorithme de chiffrement Curve 25519.

    • Si vous utilisez la GnuPG version 2.3.0 ou une version plus récente, exécutez la commande suivante :

      gpg --full-gen-key

      Vous pouvez choisirRSA, ou, si vous le souhaitezECC, vous pouvez choisir l'une NIST ou BrainPool l'autre courbe elliptique. Si vous exécutez gpg --gen-key plutôt, vous créez une paire de clés qui utilise l'algorithme de chiffrement ECC Curve 25519, que nous ne prenons actuellement pas en charge pour les clés PGP.

    • Pour les versions GnuPG antérieures à 2.3.0, vous pouvez utiliser la commande suivante, car RSA est le type de chiffrement par défaut.

      gpg --gen-key
    Important

    Pendant le processus de génération des clés, vous devez fournir un mot de passe et une adresse e-mail. Assurez-vous de prendre note de ces valeurs. Vous devez fournir le mot de passe lorsque vous entrez les détails de la clé AWS Secrets Manager plus loin dans cette procédure. Et vous devez fournir la même adresse e-mail pour exporter la clé privée à l'étape suivante.

  2. Exécutez la commande suivante pour exporter la clé privée. Pour utiliser cette commande, private.pgp remplacez-la par le nom du fichier dans lequel vous souhaitez enregistrer le bloc de clé privée et marymajor@example.com par l'adresse e-mail que vous avez utilisée lors de la génération de la paire de clés.

    gpg --output private.pgp --armor --export-secret-key marymajor@example.com
  3. AWS Secrets Manager Utilisez-le pour stocker votre clé PGP.

    1. Connectez-vous à la AWS Secrets Manager console AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/secretsmanager/.

    2. Dans le volet de navigation de gauche, choisissez Secrets.

    3. Sur la page Secrets, choisissez Enregistrer un nouveau secret.

    4. Sur la page Choisir un type de secret, pour Type de secret, sélectionnez Autre type de secret.

    5. Dans la section Paires clé/valeur, choisissez l'onglet clé/valeur.

      • Clé — EntréePGPPrivateKey.

        Note

        Vous devez saisir la PGPPrivateKey chaîne exactement : n'ajoutez aucun espace avant ou entre les caractères.

      • valeur — Collez le texte de votre clé privée dans le champ de valeur. Le texte de votre clé privée se trouve dans le fichier (par exempleprivate.pgp) que vous avez spécifié lors de l'exportation de votre clé au début de cette procédure. La clé commence par -----BEGIN PGP PRIVATE KEY BLOCK----- et se termine par-----END PGP PRIVATE KEY BLOCK-----.

        Note

        Assurez-vous que le bloc de texte contient uniquement la clé privée et ne contient pas également la clé publique.

    6. Sélectionnez Ajouter une ligne et dans la section Paires clé/valeur, choisissez l'onglet clé/valeur.

      • Clé — EntréePGPPassphrase.

        Note

        Vous devez saisir la PGPPassphrase chaîne exactement : n'ajoutez aucun espace avant ou entre les caractères.

      • valeur — Entrez le mot de passe que vous avez utilisé lorsque vous avez généré votre paire de clés PGP.

      La AWS Secrets Manager console, qui affiche les clés et les valeurs que vous entrez pour gérer vos clés PGP.
      Note

      Vous pouvez ajouter jusqu'à 3 jeux de clés et de phrases de passe. Pour ajouter un deuxième ensemble, ajoutez deux nouvelles lignes, entrez PGPPrivateKey2 et PGPPassphrase2 pour les clés, puis collez une autre clé privée et une autre phrase secrète. Pour ajouter un troisième ensemble, les valeurs clés doivent être PGPPrivateKey3 etPGPPassphrase3.

    7. Choisissez Suivant.

    8. Sur la page Configurer le secret, entrez le nom et la description de votre secret.

      • Si vous créez une clé par défaut, c'est-à-dire une clé qui peut être utilisée par n'importe quel utilisateur de Transfer Family, entrezaws/transfer/server-id/@pgp-default. Remplacez server-id par l'ID du serveur qui contient le flux de travail comportant une étape de déchiffrement.

      • Si vous créez une clé destinée à être utilisée par un utilisateur spécifique de Transfer Family, entrezaws/transfer/server-id/user-name. Remplacez server-id par l'ID du serveur qui contient le flux de travail comportant une étape de déchiffrement et remplacez user-name par le nom de l'utilisateur qui exécute le flux de travail. user-nameIl est stocké dans le fournisseur d'identité utilisé par le serveur Transfer Family.

    9. Choisissez Next et acceptez les valeurs par défaut sur la page Configurer la rotation. Ensuite, sélectionnez Suivant.

    10. Sur la page Révision, choisissez Store pour créer et stocker le secret.

La capture d'écran suivante montre les informations relatives à l'utilisateur marymajor pour un serveur Transfer Family spécifique. Cet exemple montre trois clés et les phrases de passe correspondantes.

La AWS Secrets Manager console, qui affiche la page de détails secrète avec trois clés et phrases de passe pour un serveur et un utilisateur de Transfer Family.

Clients PGP pris en charge

Les clients suivants ont été testés avec Transfer Family et peuvent être utilisés pour générer des clés PGP et pour chiffrer des fichiers que vous souhaitez déchiffrer à l'aide d'un flux de travail.

  • GPG4win + Cléopâtre.

    Note

    Lorsque vous sélectionnez Signer/Chiffrer des fichiers, assurez-vous de désactiver la sélection pour Signer en tant que : nous ne prenons actuellement pas en charge la signature pour les fichiers chiffrés.

    Les options de Kleopatra pour signer et chiffrer des fichiers. L'option Signer comme est désactivée et l'option Chiffrer pour moi est sélectionnée.

    Si vous signez le fichier chiffré et tentez de le télécharger sur un serveur Transfer Family avec un flux de déchiffrement, le message d'erreur suivant s'affiche :

    Encrypted file with signed message unsupported
  • Principales versions de GnuPG : 2.4, 2.3, 2.2, 2.0 et 1.4.

Notez que d'autres clients PGP peuvent également fonctionner, mais seuls les clients mentionnés ici ont été testés avec Transfer Family.