キーの管理 - AWS Transfer Family

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

キーの管理

このセクションでは、キーの生成方法やローテーション方法など、SSHキーに関する情報を確認できます。 AWS Lambda で Transfer Family を使用してキーを管理する方法の詳細については、ブログ記事「A AWS Transfer Family と を使用したユーザーセルフサービスキー管理の有効化 AWS Lambda」を参照してください。

注記

AWS Transfer Family は、RSA、ECDSA、および ED25519キーを受け入れます。

このセクションでは、Pretty Good Privacy (PGP) キーを生成および管理する方法も説明します。

ユーザーキーとサーバーキーでサポートされるアルゴリズム

AWS Transfer Family内のユーザーキーペアとサーバーキーペアでは、以下のキーアルゴリズムがサポートされています。

注記

ワークフローのPGP復号に使用するアルゴリズムについては、PGP「キーペア でサポートされているアルゴリズム」を参照してください。

  • の場合ED25519: ssh-ed25519

  • の場合RSA:

    • rsa-sha2-256

    • rsa-sha2-512

  • の場合ECDSA:

    • ecdsa-sha2-nistp256

    • ecdsa-sha2-nistp384

    • ecdsa-sha2-nistp521

注記

古いセキュリティポリシーSHA1ではssh-rsa、 をサポートしています。詳細については、「暗号アルゴリズム」を参照してください。

サービスマネージドユーザーのSSHキーを生成する

サービスマネージド認証方法を使用してユーザーを認証するようにサーバーを設定できます。この方法では、ユーザー名とSSHキーがサービス内に保存されます。ユーザーのパブリックSSHキーは、ユーザーのプロパティとしてサーバーにアップロードされます。このキーは、キーベースの標準認証プロセスの一部としてサーバーによって使用されます。各ユーザーは、個々のサーバーで複数のパブリックSSHキーをファイルに保存できます。ユーザ 1 人あたりに保存できるキー数の制限については、「Amazon Web Services 全般のリファレンス」の「AWS Transfer Family エンドポイントとクォータ」を参照してください。

サービスマネージド認証方法の代わりに、カスタム ID プロバイダー、または を使用してユーザーを認証できます AWS Directory Service for Microsoft Active Directory。詳細については、カスタム ID プロバイダーの使用 または AWS Directory Service ID プロバイダーの使用 を参照してください。

サーバーがユーザー認証に使用できる方法は 1 つのみ (サービスマネージドまたはカスタム ID プロバイダー) であり、サーバーの作成後にそのメソッドを変更することはできません。

macOS 、Linux、または Unix でのSSHキーの作成

macOS 、Linux、または Unix オペレーティングシステムでは、 ssh-keygen コマンドを使用してSSHパブリックキーとSSHプライベートキーを作成し、キーペアとも呼ばれます。

macOS 、Linux、または Unix オペレーティングシステムでSSHキーを作成するには
  1. macOS、Linux、または UNIX でコマンドターミナルを開きます。

  2. AWS Transfer Family は、RSA-、ECDSA-、および ED25519形式のキーを受け入れます。生成するキーペアのタイプに基づいて適切なコマンドを選択してください。

    注記

    以下の例では、パスフレーズは指定していません。この場合、ツールはパスフレーズの入力を要求し、確認のためもう一度入力するように求めます。パスフレーズを作成すると、秘密鍵の保護が強化され、システム全体のセキュリティも向上する可能性があります。パスフレーズは復元できません。忘れた場合は、新しいキーを作成する必要があります。

    ただし、サーバーホスト鍵を生成する場合、Transfer Family サーバーは起動時にパスワードを要求できないため、コマンドで -N "" オプションを指定する(またはプロンプトが表示されたら Enter を 2 回押す)ことで、空のパスフレーズを「必ず」指定する必要があります。

    • RSA 4096 ビットキーペアを生成するには:

      ssh-keygen -t rsa -b 4096 -f key_name
    • ECDSA 521 ビットキーペアを生成するには (ECDSA のビットサイズは 256、384、521 です)。

      ssh-keygen -t ecdsa -b 521 -f key_name
    • ED25519 キーペアを生成するには:

      ssh-keygen -t ed25519 -f key_name
    注記

    key_name はSSHキーペアファイル名です。

    ssh-keygen 出力の例を以下に示します。

    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]-----+
    注記

    上記の ssh-keygen コマンドを実行すると、現在のディレクトリにパブリックキーとプライベートキーが作成されます。

    これで、SSHキーペアを使用する準備が整いました。ステップ 3 と 4 に従って、サービスマネージドユーザーのSSHパブリックキーを保存します。これらのユーザーは、Transfer Family サーバーエンドポイントでファイルを転送するときに キーを使用します。

  3. key_name.pub.ファイルを見つけて開きます。

  4. テキストをコピーし、サービスマネージドユーザーのSSHパブリックキーに貼り付けます。

    1. で AWS Transfer Family コンソールを開きhttps://console.aws.amazon.com/transfer/、ナビゲーションペインからサーバーを選択します。

    2. [サーバー] ページで、更新するユーザーを含むサーバーの [サーバー ID] を選択します。

    3. パブリックキーを追加するユーザーを選択します。

    4. SSH パブリックキーペインで、SSHパブリックキーの追加 を選択します。

      選択したユーザーのユーザーの詳細を示す AWS Transfer Family コンソール。
    5. 生成したパブリックキーのテキストをSSHパブリックキーテキストボックスに貼り付け、キーの追加 を選択します。

      パブリックキーを追加するためのキーの追加ページを示す AWS Transfer Family コンソール。

      新しいキーはSSHパブリックキーペインに表示されます。

      AWS Transfer Family コンソール。新しく追加されたパブリックキーがSSHパブリックキーセクションに表示されます。

Microsoft Windows でのSSHキーの作成

Windows では、若干異なるSSHキーペア形式が使用されます。パブリックキーは PUB 形式、プライベートキーは PPK 形式である必要があります。Windows では、P uTTYgen を使用して適切な形式でSSHキーペアを作成できます。P を使用して、 を使用して生成されたプライベートキーssh-keygen.ppk ファイルuTTYgen に変換することもできます。

注記

プライベートキーファイルを .ppk 形式ではない状態で WinSCP を提示すると、そのクライアントはキーを .ppk形式に変換することを提案します。

Windows uTTYgen で P を使用してSSHキーを作成するチュートリアルについては、SSH.com ウェブサイト を参照してください。

SSH2 パブリックキーをPEM形式に変換する

AWS Transfer Family は、フォーマットPEMされたパブリックキーのみを受け入れます。SSH2 パブリックキーがある場合は、変換する必要があります。SSH2 パブリックキーの形式は次のとおりです。

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

PEM パブリックキーの形式は次のとおりです。

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAA...

次のコマンドを実行して、SSH2フォーマットされたパブリックキーをPEMフォーマットされたパブリックキーに変換します。置換 ssh2-key SSH2 キーの名前、および PEM-key PEM キーの名前。

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

SSH キーのローテーション

セキュリティのために、SSHキーをローテーションするベストプラクティスをお勧めします。通常、このローテーションは、セキュリティポリシーの一部として指定され、自動化した形で実装されます。セキュリティのレベルによっては、機密性の高い通信では、SSHキーペアを 1 回だけ使用できます。これにより、キーを保存することのリスクがなくなります。ただし、SSH認証情報を一定期間保存し、ユーザーに過度の負担をかけない間隔を設定する方がはるかに一般的です。標準的な設定は 3 か月です。

SSH キーローテーションを実行するには、次の 2 つの方法を使用します。

  • コンソールで、新しいSSHパブリックキーをアップロードし、既存のSSHパブリックキーを削除できます。

  • を使用してAPI、 を使用してユーザーの Secure Shell (SSH) パブリックキーDeleteSshPublicKeyAPIを削除し、 ImportSshPublicKeyAPIを使用してユーザーのアカウントに新しい Secure Shell (SSH) パブリックキーを追加することで、既存のユーザーを更新できます。

Console
コンソールでキーローテーションを実行するには
  1. で AWS Transfer Family コンソールを開きますhttps://console.aws.amazon.com/transfer/

  2. [Servers] (サーバー) ページに移動します。

  3. [Server ID] (サーバー ID) 列で ID を選択すると、[Server Configuration] (サーバーの構成) ページが表示されます。

  4. ユーザー で、SSHパブリックキーをローテーションするユーザーのチェックボックスを選択し、アクション を選択し、キーの追加 を選択してキーの追加ページを表示します。

    または

    ユーザー名を選択してユーザーの詳細ページを表示し、SSHパブリックキーの追加を選択してキーの追加ページを表示します。

  5. 新しいSSHパブリックキーを入力し、キーの追加 を選択します。

    重要

    SSH パブリックキーの形式は、生成したキーのタイプによって異なります。

    • RSA キーの場合、形式は ですssh-rsa string

    • ED25519 キーの場合、形式は ですssh-ed25519 string

    • ECDSA キーの場合、キーは、生成したキーのサイズに応じてecdsa-sha2-nistp256ecdsa-sha2-nistp384ecdsa-sha2-nistp521、、または で始まります。他のキータイプと同様に、最初の文字列の後には string が続きます。

    ユーザーの詳細ページに戻り、先ほど入力した新しいSSHパブリックキーがSSHパブリックキーセクションに表示されます。

  6. 削除したい古いキーのチェックボックスをオンにしてから [Delete] (削除) を選択します。

  7. delete という語を入力して削除オペレーションを確認してから [Delete] (削除) を選択します。

API
を使用してキーローテーションを実行するには API
  1. macOS、Linux、または UNIX でコマンドターミナルを開きます。

  2. 次のコマンドを入力して、削除するSSHキーを取得します。このコマンドを使用するには、serverID を Transfer Family サーバーのサーバー ID に、username をユーザー名に置き換えます。

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

    このコマンドは、ユーザーについての詳細を返します。"SshPublicKeyId": フィールドの内容をコピーします。この手順の後半で、この値を入力する必要があります。

    "SshPublicKeys": [ { "SshPublicKeyBody": "public-key", "SshPublicKeyId": "keyID", "DateImported": 1621969331.072 } ],
  3. 次に、ユーザーの新しいSSHキーをインポートします。 プロンプトで次のコマンドを入力します。このコマンドを使用するには、serverID を Transfer Family サーバーのサーバー ID に、username をユーザー名に、public-key を新しい公開鍵のフィンガープリントに置き換えます。

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

    コマンドが成功した場合、出力は返りません。

  4. 最後に、次のコマンドを実行して、古いキーを削除します。このコマンドを使用するには、serverID を Transfer Family サーバーのサーバー ID に、username をユーザー名に、keyID-from-step-2 をこの手順のステップ 2 でコピーしたキー ID 値に置き換えます。

    aws transfer delete-ssh-public-key --server-id='serverID' --user-name='username' --ssh-public-key-id='keyID-from-step-2'
  5. (オプション) 古いキーがもう存在しないことを確認するには、ステップ 2 を繰り返します。

PGP キーの生成と管理

Transfer Family がワークフローで処理するファイルでは、Pretty Good Privacy (PGP) 復号を使用できます。ワークフローステップで復号を使用するには、 PGP キーを指定する必要があります。

AWS ストレージブログには、ファイルの暗号化と復号化、ファイルの暗号化と復号化を PGPと で AWS Transfer Family行う方法を説明する投稿があります。

PGP キーの生成

PGP キーの生成に使用する方法は、オペレーティングシステムと使用しているキー生成ソフトウェアのバージョンによって異なります。

Linux または Unix を使用している場合は、パッケージインストーラーを使用して gpg をインストールします。お使いの Linux ディストリビューションに応じて、以下のコマンドのいずれかが動作するはずです。

sudo yum install gnupg
sudo apt-get install gnupg

Windows または macOS の場合は、「https://gnupg.org/download/」から必要なものをダウンロードできます。

PGP キージェネレーターソフトウェアをインストールしたら、 gpg --full-gen-key または gpg --gen-key コマンドを実行してキーペアを生成します。

注記

GnuPG バージョン 2.3.0 以降を使用している場合は、gpg --full-gen-key を実行する必要があります。作成するキーのタイプの入力を求められたら、 RSAまたは を選択しますECC。ただし、 を選択した場合はECC、必ず次のいずれかを選択してください。NIST または BrainPool 楕円曲線。選択しない Curve 25519.

PGPキーペアでサポートされているアルゴリズム

PGP キーペアでは、次のアルゴリズムがサポートされています。

  • RSA

  • エルガマル

  • ECC:

    • NIST

    • BrainPool

注記

Curve25519 キーはサポートされていません。

役立つgpg サブコマンド

以下は gpg に役立つサブコマンドです。

  • gpg --help — このコマンドには、使用可能なオプションが一覧表示され、例もいくつか含まれている場合があります。

  • gpg --list-keys — このコマンドは、作成したすべてのキーペアの詳細を一覧表示します。

  • gpg --fingerprint — このコマンドは、各キーのフィンガープリントを含む、すべてのキーペアの詳細を一覧表示します。

  • gpg --export -a user-name — このコマンドは、user-nameキーの生成時に使用されたキーの公開キー部分をエクスポートします。

PGP キーの管理

PGP キーを管理するには、 を使用する必要があります AWS Secrets Manager。

注記

シークレットネームには、Transfer FamilyのサーバーIDが含まれます。つまり、PGPキー情報を に保存する前に、サーバーを既に識別または作成しておく必要があります AWS Secrets Manager。

すべてのユーザーに 1 つのキーとパスフレーズを使用する場合は、PGPキーブロック情報をシークレット名 に保存できます。ここでaws/transfer/server-id/@pgp-defaultserver-idは Transfer Family サーバーの ID です。このデフォルト・キーは、user-name がワークフローを実行するユーザと一致するキーがない場合に使用されます。

または、特定のユーザーのキーを作成できます。この場合、シークレットネームのフォーマットは aws/transfer/server-id/user-name となり、user-name は Transfer Family サーバーのワークフローを実行しているユーザーと一致します。

注記

Transfer Family サーバーごとに、ユーザーごとに最大 3 つのPGPプライベートキーを保存できます。

復号で使用するPGPキーを設定するには
  1. GPG 使用している のバージョンに応じて、次のいずれかのコマンドを実行して、Curve 25519 暗号化アルゴリズムを使用しないPGPキーペアを生成します。

    • GnuPG バージョン 2.3.0 以降を使用している場合は、次のコマンドを実行します。

      gpg --full-gen-key

      RSA を選ぶこともできるし、ECC を選んだ場合は楕円曲線に NISTBrainPool を選ぶこともできます。gpg --gen-key 代わりに を実行する場合は、ECCCurve 25519 暗号化アルゴリズムを使用するキーペアを作成します。現在、PGPキーはサポートされていません。

    • 2.3.0 GnuPGより前のバージョンでは、 RSAがデフォルトの暗号化タイプであるため、次のコマンドを使用できます。

      gpg --gen-key
    重要

    キー生成プロセス中に、パスフレーズと E メールアドレスを指定する必要があります。これらの値は必ず書き留めておいてください。この手順の後半で AWS Secrets Manager に鍵の詳細を入力するときに、パスフレーズを提供する必要があります。また、次のステップでプライベートキーをエクスポートする場合も、同じメールアドレスを指定する必要があります。

  2. 以下のコマンドを実行してプライベートキーをエクスポートします。このコマンドを使うには、private.pgp を秘密鍵ブロックを保存するファイル名に、marymajor@example.com をキーペアを生成したときに使った電子メールアドレスに置き換えます。

    gpg --output private.pgp --armor --export-secret-key marymajor@example.com
  3. AWS Secrets Manager を使用してPGPキーを保存します。

    1. にサインイン AWS Management Console し、 で AWS Secrets Manager コンソールを開きますhttps://console.aws.amazon.com/secretsmanager/

    2. 左側のナビゲーションペインで [サーバー] を選択します。

    3. [シークレット]ページで、[新しいシークレットの保存]を選択します。

    4. [シークレットタイプの選択] ページの[シークレットタイプ] で[その他のシークレットタイプ] を選択します。

    5. [キー/値のペア] セクションで、[キー/値] タブを選択します。

      • キーPGPPrivateKeyと入力します。

        注記

        PGPPrivateKey 文字列は正確に入力する必要があります。文字の前や間にスペースを入れないでください。

      • 」 — 秘密鍵のテキストを値フィールドに貼り付けます。プライベートキーのテキストは、この手順の前半でキーをエクスポートしたときに指定したファイル (private.pgp など) にあります。キーは -----BEGIN PGP PRIVATE KEY BLOCK----- で始まり、-----END PGP PRIVATE KEY BLOCK----- で終わります。

        注記

        テキストブロックには秘密鍵のみが含まれ、公開鍵も含まれていないことを確認してください。

    6. [行を追加] を選択し、[キー/値のペア] セクションで [キー/値] タブを選択します。

      • キーPGPPassphraseと入力します。

        注記

        PGPPassphrase 文字列は正確に入力する必要があります。文字の前や間にスペースを入れないでください。

      • value – PGPキーペアの生成時に使用したパスフレーズを入力します。

      AWS Secrets Manager コンソール。キーを管理するために入力したPGPキーと値を表示します。
      注記

      最大 3 セットのキーとパスフレーズを追加できます。2 つ目のセットを追加するには、2 つの新しい行を追加し、キーには PGPPrivateKey2PGPPassphrase2 を入力し、別のプライベートキーとパスフレーズを貼り付けます。3 番目のセットを追加するには、キー値は PGPPrivateKey3PGPPassphrase3 でなければなりません。

    7. [Next (次へ)] を選択します。

    8. [シークレットの設定] ページで、シークレットの名前と説明を入力します。

      • デフォルトキー、つまり Transfer Family のすべてのユーザーが使用できるキーを作成する場合は、aws/transfer/server-id/@pgp-default と入力します。server-idを、復号ステップを持つワークフローを含むサーバーの ID に置き換えます。

      • 特定の Transfer Family ユーザーが使用するキーを作成する場合は、aws/transfer/server-id/user-name と入力します。server-id を復号ステップを持つワークフローを含むサーバーの ID に置き換え、user-name をワークフローを実行しているユーザー名に置き換えます。user-name は、Transfer Family サーバーが使用している ID プロバイダーに保存されます。

    9. [次へ] を選択し、[ローテーションの設定] ページのデフォルトを受け入れます。次いで、[次へ] を選択します。

    10. [レビュー] ページで [ストア] を選択し、シークレットを作成して保存します。

次のスクリーンショットは、特定の Transfer Family サーバのユーザ marymajor の詳細を示している。この例では、3 つのキーとそれに対応するパスフレーズが表示されています。

Transfer Family サーバーとユーザーの 3 つのキーとパスフレーズを含むシークレットの詳細ページを表示する AWS Secrets Manager コンソール。

サポートされているPGPクライアント

次のクライアントは Transfer Family でテストされており、PGPキーの生成や、ワークフローで復号するファイルの暗号化に使用できます。

  • GPG4Win + クレオパトラ。

    注記

    [ファイルの署名/暗号化] を選択した場合は、[名前をつけて署名] の選択が解除されていることを確認してください。現在、暗号化されたファイルへの署名はサポートされていません。

    ファイルの署名と暗号化のための Kleopatra オプション。[名前を付けて署名] のオプションはクリアされ、[自分用に暗号化] のオプションが選択されます。
  • GnuPG」の主要なバージョン:2.4、2.3、2.2、2.0 および 1.4。

他のPGPクライアントも機能する可能性がありますが、ここで言及されているクライアントのみが Transfer Family でテストされていることに注意してください。