翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Transfer Family での SSH キーと PGP キーの管理
このセクションでは、SSHキーの生成方法やローテーション方法など、SSHキーに関する情報を見ることができます。で Transfer Family を使用してキー AWS Lambda を管理する方法の詳細については、ブログ記事「A AWS Transfer Family と によるユーザーのセルフサービスキー管理の有効化 AWS Lambda
注記
AWS Transfer Family は RSA、ECDSA、ED25519 キーを受け入れます。
このセクションでは、プリティ・グッド・プライバシー (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 キーを作成するには
-
macOS、Linux、または UNIX でコマンドターミナルを開きます。
-
AWS Transfer Family は、RSA、ECDSA、ED25519-formattedキーを受け入れます。生成するキーペアのタイプに基づいて適切なコマンドを選択してください。
注記
以下の例では、パスフレーズは指定していません。この場合、ツールはパスフレーズの入力を要求し、確認のためもう一度入力するように求めます。パスフレーズを作成すると、秘密鍵の保護が強化され、システム全体のセキュリティも向上する可能性があります。パスフレーズは復元できません。忘れた場合は、新しいキーを作成する必要があります。
ただし、サーバーホスト鍵を生成する場合、Transfer Family サーバーは起動時にパスワードを要求できないため、コマンドで
-N ""
オプションを指定する(またはプロンプトが表示されたらEnter
を 2 回押す)ことで、空のパスフレーズを「必ず」指定する必要があります。-
4096 ビット RSA キーペアを生成する
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
注記
は SSH キーペアファイル名です。key_name
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 サーバーエンドポイントでファイルを転送するときに キーを使用します。
-
-
.ファイルを見つけて開きます。key_name
.pub -
テキストをコピーして、サービス管理対象ユーザーの「SSH 公開鍵」に貼り付けます。
-
https://console.aws.amazon.com/transfer/
で AWS Transfer Family コンソールを開き、ナビゲーションペインからサーバーを選択します。 -
「サーバー」ページで、更新するユーザーを含むサーバーの「サーバー ID」を選択します。
-
パブリックキーを追加するユーザーを選択します。
-
「SSH 公開鍵」ペインで、「SSH 公開鍵を追加」を選択します。
-
生成した公開鍵のテキストを SSH 公開鍵テキストボックスに貼り付け、「鍵の追加」を選択します。
新しい鍵は SSH 公開鍵ペインに一覧表示されます。
-
Microsoft Windows での SSH キーの作成
Windows で使用される SSH キーペア形式は、わずかに異なります。パブリックキーは PUB
形式、プライベートキーは PPK
形式である必要があります。Windows では、PuTTYgen を使用すれば正しい形式の SSH キーペアが作成できます。PuTTYgen を使用して、ssh-keygen
で生成されたプライベートキーを .ppk
ファイルに変換することもできます。
注記
.ppk
形式でないプライベート・キー・ファイルを WinSCP に提示すると、WinSCP クライアントはキーを .ppk
形式に変換します。
Windows で PuTTYgen を使用して 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-キー
」は SSH2 キーの名前に置き換え、「PEM キー
」は PEM キーの名前に置き換えてください。
ssh-keygen -i -f
ssh2-key
.pub >PEM-key
.pub
SSH キーのローテーション
セキュリティ上、ベストプラクティスとして SSH キーのローテーションをお勧めします。通常、このローテーションは、セキュリティポリシーの一部として指定され、自動化した形で実装されます。セキュリティのレベルに応じて、機密性の高い通信では、SSH キーペアが 1 回しか使用されない場合もあります。これにより、キーを保存することのリスクがなくなります。ただし一般的には、SSH 認証情報を一定期間にわたって保存し、その期間をユーザーに過度の負荷がかからないような長さに設定するのが普通です。標準的な設定は 3 か月です。
SSH キーのローテーションを実行するには、2 つの方法があります。
-
コンソールで新しい SSH パブリックキーをアップロードすると既存の SSH 公開キーを削除できます。
-
API を使用すると、 DeleteSshPublicKey API を使用してユーザーの Secure Shell (SSH) パブリックキーを削除し、 ImportSshPublicKey API を使用してユーザーのアカウントに新しい Secure Shell (SSH) パブリックキーを追加することで、既存のユーザーを更新できます。
PGPキーの生成と管理
Transfer Family がワークフローで処理するファイルで、Pretty Good Privacy (PGP) 復号化を使用できます。ワークフローステップで復号を使用するには、PGP キーを指定します。
AWS ストレージブログには、Transfer Family Managed ワークフロー、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
-
注記
cCurve25519 キーはサポートされていません。
役立つgpg
サブコマンド
以下は gpg
に役立つサブコマンドです。
-
gpg --help
— このコマンドには、使用可能なオプションが一覧表示され、例もいくつか含まれている場合があります。 -
gpg --list-keys
– このコマンドは、作成したすべてのキーペアの詳細を一覧表示します。 -
gpg --fingerprint
– このコマンドは、各キーのフィンガープリントを含む、すべてのキーペアの詳細を一覧表示します。 -
gpg --export -a
— このコマンドは、user-name
キーの生成時に使用されたキーの公開キー部分をエクスポートします。user-name
キーペアを管理する
PGP キーを管理するには、 を使用します AWS Secrets Manager。
注記
シークレットネームには、Transfer FamilyのサーバーIDが含まれます。つまり、PGP キー情報を AWS Secrets Manager保存する「前」に、サーバーを特定または作成しておく必要があります。
1つのキーとパスフレーズをすべてのユーザーに使いたい場合は、PGPキーブロック情報を秘密名 aws/transfer/
(server-id
/@pgp-default
はTransfer FamilyサーバーのID)の下に保存することができます。Transfer Family は、 がワークフローを実行しているユーザーserver-id
と一致するキーがない場合、このデフォルトキーを使用します。user-name
特定のユーザーのキーを作成できます。この場合、シークレット名の形式は です。 はaws/transfer/
、Transfer Family サーバーのワークフローを実行しているユーザーserver-id
/user-name
と一致します。user-name
注記
Transfer Family サーバー 1 台につき、1 ユーザーにつき最大 3 つの PGP 秘密鍵を保存できます。
PGP 鍵を復号化に使用するように設定するには
-
使用している GPG のバージョンに応じて、次のいずれかのコマンドを実行して、Curve 25519 暗号化アルゴリズムを使用しない PGP キーペアを生成します。
-
GnuPG
バージョン 2.3.0 以降を使用している場合は、次のコマンドを実行します。gpg --full-gen-key
RSA
を選ぶこともできるし、ECC
を選んだ場合は楕円曲線にNIST
かBrainPool
を選ぶこともできます。代わりにgpg --gen-key
を実行する場合は、ECC Curve 25519 暗号化アルゴリズムを使用するキーペアを作成します。このアルゴリズムは、現在 PGP キーではサポートされていません。 -
バージョン2.3.0より前の
GnuPG
では、RSAがデフォルトの暗号化タイプであるため、次のコマンドを使用できます。gpg --gen-key
重要
キー生成プロセス中に、パスフレーズと E メールアドレスを指定する必要があります。これらの値は必ず書き留めておいてください。この手順の後半で AWS Secrets Manager に鍵の詳細を入力するときに、パスフレーズを提供する必要があります。また、次のステップでプライベートキーをエクスポートする場合も、同じメールアドレスを指定する必要があります。
-
-
以下のコマンドを実行してプライベートキーをエクスポートします。このコマンドを使うには、
を秘密鍵ブロックを保存するファイル名に、private.pgp
をキーペアを生成したときに使った電子メールアドレスに置き換えます。marymajor@example.com
gpg --output
private.pgp
--armor --export-secret-keymarymajor@example.com
-
AWS Secrets Manager を使用して PGP キーを保存します。
-
にサインイン AWS Management Console し、https://console.aws.amazon.com/secretsmanager/
で AWS Secrets Manager コンソールを開きます。 -
左側のナビゲーションペインで [サーバー] を選択します。
-
[シークレット]ページで、[新しいシークレットの保存]を選択します。
-
[シークレットタイプの選択] ページの[シークレットタイプ] で[その他のシークレットタイプ] を選択します。
-
[キー/値のペア] セクションで、[キー/値] タブを選択します。
-
キー —
PGPPrivateKey
と入力します。注記
PGPPrivateKey
文字列は正確に入力する必要があります。文字の前や間にスペースを入れないでください。 -
「値」 — 秘密鍵のテキストを値フィールドに貼り付けます。プライベートキーのテキストは、この手順の前半でキーをエクスポートしたときに指定したファイル (
private.pgp
など) にあります。キーは-----BEGIN PGP PRIVATE KEY BLOCK-----
で始まり、-----END PGP PRIVATE KEY BLOCK-----
で終わります。注記
テキストブロックには秘密鍵のみが含まれ、公開鍵も含まれていないことを確認してください。
-
-
「行を追加」を選択し、「キー/値のペア」セクションで「キー/値」タブを選択します。
-
キー —
PGPPassphrase
と入力します。注記
PGPPassphrase
文字列は正確に入力する必要があります。文字の前や間にスペースを入れないでください。 -
「値」 — PGP キーペアを生成したときに使用したパスフレーズを入力します。
注記
最大 3 セットのキーとパスフレーズを追加できます。2 つ目のセットを追加するには、2 つの新しい行を追加し、キーには
PGPPrivateKey2
とPGPPassphrase2
を入力し、別のプライベートキーとパスフレーズを貼り付けます。3 番目のセットを追加するには、キー値はPGPPrivateKey3
とPGPPassphrase3
でなければなりません。 -
-
[次へ] をクリックします。
-
[シークレットの設定] ページで、シークレットの名前と説明を入力します。
-
デフォルトキー、つまりTTransfer Family ilyのすべてのユーザーが使用できるキーを作成する場合は、
aws/transfer/
と入力します。server-id
/@pgp-default
を、復号化ステップを持つワークフローを含むサーバーの ID に置き換えます。server-id
-
特定のTransfer Family ユーザーが使用するキーを作成する場合は、
aws/transfer/
と入力します。server-id
/user-name
を復号化ステップを持つワークフローを含むサーバーのIDに置き換え、server-id
をワークフローを実行しているユーザー名に置き換えます。user-name
は、Transfer Family サーバーが使用している ID プロバイダーに保存されます。user-name
-
-
「次へ」を選択し、「ローテーションの設定」ページのデフォルトを受け入れます。次いで、[次へ] を選択します。
-
[レビュー] ページで[ストア] を選択し、シークレットを作成して保存します。
-
次のスクリーンショットは、特定の Transfer Family サーバのユーザ marymajor
の詳細を示している。この例では、3 つのキーとそれに対応するパスフレーズが表示されています。
サポートされている PGP クライアント
以下のクライアントはTTransfer Family ilyでテストされており、PGPキーの生成や、ワークフローで復号化するファイルの暗号化に使用できます。
-
GPG4Win + クレオパトラ。
注記
「ファイルの署名/暗号化」を選択した場合は、「名前をつけて署名」の選択が解除されていることを確認してください。現在、暗号化されたファイルへの署名はサポートされていません。
暗号化されたファイルに署名し、復号ワークフローを使用して Transfer Family サーバーにアップロードしようとすると、次のエラーが表示されます。
Encrypted file with signed message unsupported
-
「GnuPG」の主要なバージョン:2.4、2.3、2.2、2.0 および 1.4。
他のPGPクライアントも同様に動作する可能性がありますが、TTransfer Family ilyでテストされたのはここに記載されているクライアントのみであることに注意してください。