翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ファイルを復号するためのマネージドワークフローの設定
このチュートリアルでは、復号化ステップを含む管理ワークフローを設定する方法を示します。このチュートリアルでは、暗号化されたファイルを Amazon S3 バケットにアップロードし、同じバケット内の復号化されたファイルを表示する方法も示しています。
注記
AWS ストレージブログには、Transfer Family Managed ワークフロー、PGP と を使用したファイルの暗号化と復号化を使用してコードを記述せずにファイルを単純に復号する方法 AWS Transfer Family
トピック
ステップ 1:実行ロールを設定する
Transfer Family がワークフローの起動に使用できる AWS Identity and Access Management (IAM) 実行ロールを作成します。実行ロールを作成するプロセスについては、ワークフローの IAM ポリシーで説明しています。
注記
実行ロールを作成する際、信頼関係を確立するにはで説明されているように、実行ロールと Transfer Family の間に信頼関係を確立してください。
次の実行ロールポリシーには、このチュートリアルで作成したワークフローを開始するために必要なすべてのアクセス許可が含まれています。このポリシーの例を実行するには、
をユーザー自身の情報に置き換えます。を、暗号化されたファイルをアップロードする Amazon S3 バケットの名前user input placeholders
DOC-EXAMPLE-BUCKET
に置き換えます。
注記
すべてのワークフローに、この例に記載されているすべての権限が必要なわけではありません。特定のワークフローのステップのタイプに基づいてアクセス許可を制限できます。定義済みの各ステップタイプに必要な権限については、事前定義されたステップを使用するで説明しています。カスタムステップに必要な権限については、カスタムステップの IAM 権限で説明しています。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "WorkflowsS3Permissions", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectTagging", "s3:GetObjectVersion", "s3:PutObject", "s3:PutObjectTagging", "s3:ListBucket", "s3:PutObjectTagging", "s3:PutObjectVersionTagging", "s3:DeleteObjectVersion", "s3:DeleteObject" ], "Resource": ["arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "arn:aws:s3:::DOC-EXAMPLE-BUCKET"] "Condition": { "StringEquals": { "s3:RequestObjectTag/Archive": "yes" } } }, { "Sid": "DecryptSecret", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "arn:aws:secretsmanager:
region
:account-id
:secret:aws/transfer/*" } ] }
ステップ 2: マネージドワークフローを作成する
次に、復号化ステップを含むワークフローを作成する必要があります。
復号化ステップを含むワークフローを作成するには
-
https://console.aws.amazon.com/transfer/
で AWS Transfer Family コンソールを開きます。 -
左のナビゲーションペインで「ワークフロー」を選択し、「ワークフローの作成」を選択します。
-
次の詳細情報を入力します。
-
Decrypt workflow example
などの説明を入力します。 -
「ノミナルステップ」セクションで「ステップを追加」を選択します。
-
-
「ステップタイプを選択」で「ファイルを復号化」を選択し、「次へ」を選択します。
-
「パラメータの設定」ダイアログボックスで、以下を指定します。
-
decrypt-step
など、わかりやすいステップ名を入力します。ステップ名にはスペースを使用できません。 -
「復号化されたファイルの宛先」には、Amazon S3 を選択します。
-
「宛先バケット名」には、ステップ 1 で作成した IAM ポリシーで
DOC-EXAMPLE-BUCKET
として指定したのと同じ Amazon S3 バケットを選択します。 -
「「宛先キープレフィクス」には、復号したファイルを保存するプレフィックス(フォルダ)の名前を、保存先バケットに入力します(例:
decrypted-files/
)。注記
プレフィックスの末尾には必ずスラッシュ (
/
) を追加してください。 -
このチュートリアルでは、「既存を上書き」はオフのままにしておきます。この設定をクリアすると、既存のファイルと同じ名前のファイルを復号しようとしても、ワークフロー処理は停止し、新しいファイルは処理されません。
「次へ」を選択して、次の画面に移動します。
-
-
ステップの詳細を確認します。すべてが正しい場合は、「ステップを作成」を選択します。
-
ワークフローに必要な復号化ステップは 1 つだけなので、追加のステップを設定する必要はありません。「ワークフローの作成」を選択して新しいワークフローを作成します。
新しいワークフローのワークフロー ID を書き留めます。この ID は次のステップで必要となります。このチュートリアルでは、ワークフロー ID の例として「
」を使用します。w-1234abcd5678efghi
ステップ 3: サーバーにワークフローを追加してユーザーを作成する
復号化ステップを含むワークフローができたので、そのワークフローを Transfer Family サーバーに関連付ける必要があります。このチュートリアルでは、ワークフローを既存のTransfer Family サーバーに接続する方法を示します。または、ワークフローで使用する新しいサーバーを作成することもできます。
ワークフローをサーバーに接続したら、サーバーに SFTP 接続してワークフローを実行できるユーザーを作成する必要があります。
Transfer Family サーバーを設定してワークフローを実行するには
-
https://console.aws.amazon.com/transfer/
で AWS Transfer Family コンソールを開きます。 -
左ナビゲーションペインで、「サーバ」を選択し、リストからサーバを選択します。このサーバーが SFTP プロトコルをサポートしていることを確認してください。
-
サーバーの詳細ページで下にスクロールして [Additional details] (その他の詳細) セクションで [Edit] (編集) を選択します。
-
「詳細の編集」ページの「マネージドワークフロー」セクションで、ワークフローを選択し、対応する実行ロールを選択します。
-
「ファイルをアップロードするワークフロー」では、ステップ 2: マネージドワークフローを作成するで作成したワークフロー (例:
w-1234abcd5678efghi
) を選択します。 -
「マネージドワークフロー実行ロール」の場合は、ステップ 1:実行ロールを設定するで作成した IAM ロールを選択します。
-
-
ページの最下部までスクロールして、「保存」を選択して変更を保存します。
使用しているサーバーの ID を書き留めます。PGP キーの保存に使用する AWS Secrets Manager シークレットの名前は、サーバー ID に一部基づいています。
ワークフローをトリガーできるユーザーを追加するには
-
https://console.aws.amazon.com/transfer/
で AWS Transfer Family コンソールを開きます。 -
左ナビゲーションペインで、「サーバー」を選択し、復号ワークフローに使用しているサーバーを選択します。
-
サーバーの詳細ページで、「ユーザー」セクションまでスクロールダウンし、「ユーザーの追加」を選択します。
-
新しいユーザーに、次の詳細情報を入力します。
-
[Username] (ユーザーネーム) に、
decrypt-user
と入力します。 -
「ロール」で、サーバーにアクセスできるユーザーロールを選択します。
-
「ホームディレクトリ」には、以前に使用した Amazon S3 バケット (例:
DOC-EXAMPLE-BUCKET
) を選択します。 -
「SSH パブリックキー」の場合は、お持ちのプライベートキーに対応するパブリックキーを貼り付けます。詳細については、「サービス管理ユーザーの SSH キーの生成」を参照してください。
-
-
「追加」を選択して新しいユーザーを保存します。
このサーバーのTransfer Familyユーザーの名前を書き留めます。シークレットの一部はユーザーの名前に基づいています。わかりやすくするために、このチュートリアルではサーバーのどのユーザーも使用できるデフォルトのシークレットを使用しています。
ステップ 4:PGP キーペアを作成する
「サポートされている PGP クライアント」のいずれかを使用して、PGP キーペアを生成します。このプロセスについては、PGP キーを生成する に説明されています。
PGP キーペアを生成するには
-
このチュートリアルでは、
gpg
(GnuPG
) バージョン 2.0.22 クライアントを使用して、RSA を暗号化アルゴリズムとして使用する PGP キーペアを生成できます。このクライアントでは、以下のコマンドを実行して E メールアドレスとパスフレーズを指定します。任意の名前またはメールアドレスを使用できます。使用する値は、チュートリアルの後半で入力する必要があるため、忘れないようにしてください。gpg --gen-key
注記
GnuPG
バージョン 2.3.0 以降を使用している場合は、gpg --full-gen-key
を実行する必要があります。作成する鍵の種類を求められたら、RSA または ECC を選択します。ただし、ECC を選択した場合は、必ず楕円曲線用に NIST または BrainPool を選択してください。Curve 25519 を「選びません」。 -
次のコマンドを実行して、プライベートキーをエクスポートします。
は、キーを生成したときに使用したメールアドレスに置き換えます。user@example.com
gpg --output workflow-tutorial-key.pgp --armor --export-secret-key
user@example.com
このコマンドは秘密鍵を
workflow-tutorial-key.pgp
ファイルにエクスポートします。出力ファイルには任意の名前を付けることができます。プライベートキーファイルは、 AWS Secrets Managerに追加した後で削除することもできます。
ステップ 5: PGP 秘密鍵を AWS Secrets Managerに格納します。
ワークフローがアップロードされたファイルに対して復号化ステップを実行したときにワークフローが秘密鍵を見つけることができるように、秘密鍵を非常に特殊な方法でSecrets Managerに保存する必要があります。
注記
Secrets Manager にシークレットを保存すると、 AWS アカウント に料金が発生します。料金については、「AWS Secrets Manager 料金表
PGP プライベートキーを Secrets Manager に保存するには
-
にサインイン AWS Management Console し、https://console.aws.amazon.com/secretsmanager/
で AWS Secrets Manager コンソールを開きます。 -
左側のナビゲーションペインで [サーバー] を選択します。
-
[シークレット]ページで、[新しいシークレットの保存]を選択します。
-
[シークレットタイプの選択] ページの[シークレットタイプ] で[その他のシークレットタイプ] を選択します。
-
[キー/値のペア] セクションで、[キー/値] タブを選択します。
-
キー —
PGPPrivateKey
と入力します。 -
「値」 — 秘密鍵のテキストを値フィールドに貼り付けます。
-
-
[行を追加] を選択し、[キー/値のペア] セクションで[キー/値] タブを選択します。
-
キー —
PGPPassphrase
と入力します。 -
値 — ステップ 4:PGP キーペアを作成するで PGP キーペアを生成したときに使用したパスフレーズを入力します。
-
-
[次へ] をクリックします。
-
[シークレットの設定] ページで、シークレットの名前と説明を入力します。シークレットは、特定のユーザーに対して作成することも、すべてのユーザーが使用できるシークレットを作成することもできます。サーバー ID が の場合は
、次のようにシークレットに名前を付けます。s-11112222333344445
-
すべてのユーザーのデフォルトのシークレットを作成するには、シークレットに という名前を付けます
aws/transfer/
。s-11112222333344445
/@pgp-default -
前に作成したユーザー専用のシークレットを作成するには、シークレット
aws/transfer/
に名前を付けます。s-11112222333344445
/decrypt-user
-
-
[次へ] を選択し、[ローテーションの設定] ページのデフォルトを受け入れます。次いで、[次へ] を選択します。
-
[レビュー] ページで[ストア] を選択し、シークレットを作成して保存します。
PGP プライベートキーを Secrets Manager に追加する方法の詳細については、「 AWS Secrets Manager を使用して PGP キーを保存する」を参照してください。
ステップ 6: ファイルを暗号化する
gpg
プログラムを使用して、ワークフローで使用するファイルを暗号化します。以下のコマンドを実行してファイルを暗号化する:
gpg -e -r
marymajor@example.com
--openpgp testfile.txt
このコマンドを実行する前に、以下のことに注意する:
-
-r
引数の場合は、
を PGP キーペアの作成時に使用した電子メールアドレスに置き換えます。marymajor@example.com
-
--openpgp
フラグはオプションです。このフラグは、暗号化されたファイルを「OpenPGP RFC4880」標準に準拠させます。 -
このコマンドは、
testfile.txt
と同じ場所にtestfile.txt.gpg
という名前のファイルを作成します。
ステップ 7: ワークフローを実行して結果を表示する
ワークフローを実行するには、ステップ 3 で作成したユーザーを使用して Transfer Family サーバーに接続します。そして、「ステップ2.5、保存先パラメーターの設定」で指定したAmazon S3バケットで、復号化されたファイルを見ることができます。
復号化ワークフローを実行するには
-
コマンドターミナルを開きます。
-
次のコマンドを実行し、
を実際のエンドポイントに、your-endpoint
をユーザーの SSH 秘密鍵に置き換えます。transfer-key
sftp -i
transfer-key
decrypt-user@your-endpoint
たとえば、秘密鍵が
~/.ssh/decrypt-user
に保存されていて、エンドポイントがs-11112222333344445.server.transfer.us-east-2.amazonaws.com
の場合、コマンドは次のようになります。sftp -i ~/.ssh/decrypt-user decrypt-user@s-11112222333344445.server.transfer.us-east-2.amazonaws.com
-
pwd
コマンドを実行します。成功すると、このコマンドは以下を返す:Remote working directory: /
DOC-EXAMPLE-BUCKET
/decrypt-userディレクトリには、Amazon S3 バケットの名前が反映されます。
-
次のコマンドを実行してファイルをアップロードし、ワークフローを実行するようにトリガーします。
put testfile.txt.gpg
-
復号化されたファイルの保存先として、ワークフローを作成したときに
decrypted-files/
フォルダーを指定しました。これで、そのフォルダーに移動して内容を一覧表示できます。cd ../decrypted-files/ ls
成功すると、
ls
コマンドはtestfile.txt
ファイルを一覧表示します。このファイルをダウンロードして、以前に暗号化した元のファイルと同じかどうかを確認できます。