ファイルを復号するためのマネージドワークフローの設定 - AWS Transfer Family

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

ファイルを復号するためのマネージドワークフローの設定

このチュートリアルでは、復号化ステップを含む管理ワークフローを設定する方法を示します。このチュートリアルでは、暗号化されたファイルを Amazon S3 バケットにアップロードし、同じバケット内の復号化されたファイルを表示する方法も示しています。

注記

AWS ストレージブログには、Transfer Family Managed ワークフロー、PGP と を使用したファイルの暗号化と復号化を使用してコードを記述せずにファイルを単純に復号する方法 AWS Transfer Familyを説明する投稿があります。

ステップ 1:実行ロールを設定する

Transfer Family がワークフローの起動に使用できる AWS Identity and Access Management (IAM) 実行ロールを作成します。実行ロールを作成するプロセスについては、ワークフローの IAM ポリシーで説明しています。

注記

実行ロールを作成する際、信頼関係を確立するにはで説明されているように、実行ロールと Transfer Family の間に信頼関係を確立してください。

次の実行ロールポリシーには、このチュートリアルで作成したワークフローを開始するために必要なすべてのアクセス許可が含まれています。このポリシーの例を実行するには、user input placeholders をユーザー自身の情報に置き換えます。を、暗号化されたファイルをアップロードする Amazon S3 バケットの名前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: マネージドワークフローを作成する

次に、復号化ステップを含むワークフローを作成する必要があります。

復号化ステップを含むワークフローを作成するには
  1. https://console.aws.amazon.com/transfer/ で AWS Transfer Family コンソールを開きます。

  2. 左のナビゲーションペインで「ワークフロー」を選択し、「ワークフローの作成」を選択します。

  3. 次の詳細情報を入力します。

    • Decrypt workflow exampleなどの説明を入力します。

    • ノミナルステップ」セクションで「ステップを追加」を選択します。

  4. ステップタイプを選択」で「ファイルを復号化」を選択し、「次へ」を選択します。

  5. パラメータの設定」ダイアログボックスで、以下を指定します。

    • decrypt-stepなど、わかりやすいステップ名を入力します。ステップ名にはスペースを使用できません。

    • 復号化されたファイルの宛先」には、Amazon S3 を選択します。

    • 宛先バケット名」には、ステップ 1 で作成した IAM ポリシーでDOC-EXAMPLE-BUCKETとして指定したのと同じ Amazon S3 バケットを選択します。

    • 「「宛先キープレフィクス」には、復号したファイルを保存するプレフィックス(フォルダ)の名前を、保存先バケットに入力します(例:decrypted-files/)。

      注記

      プレフィックスの末尾には必ずスラッシュ (/) を追加してください。

    • このチュートリアルでは、「既存を上書き」はオフのままにしておきます。この設定をクリアすると、既存のファイルと同じ名前のファイルを復号しようとしても、ワークフロー処理は停止し、新しいファイルは処理されません。

    次へ」を選択して、次の画面に移動します。

  6. ステップの詳細を確認します。すべてが正しい場合は、「ステップを作成」を選択します。

  7. ワークフローに必要な復号化ステップは 1 つだけなので、追加のステップを設定する必要はありません。「ワークフローの作成」を選択して新しいワークフローを作成します。

新しいワークフローのワークフロー ID を書き留めます。この ID は次のステップで必要となります。このチュートリアルでは、ワークフロー ID の例として「w-1234abcd5678efghi」を使用します。

ステップ 3: サーバーにワークフローを追加してユーザーを作成する

復号化ステップを含むワークフローができたので、そのワークフローを Transfer Family サーバーに関連付ける必要があります。このチュートリアルでは、ワークフローを既存のTransfer Family サーバーに接続する方法を示します。または、ワークフローで使用する新しいサーバーを作成することもできます。

ワークフローをサーバーに接続したら、サーバーに SFTP 接続してワークフローを実行できるユーザーを作成する必要があります。

Transfer Family サーバーを設定してワークフローを実行するには
  1. https://console.aws.amazon.com/transfer/ で AWS Transfer Family コンソールを開きます。

  2. 左ナビゲーションペインで、「サーバ」を選択し、リストからサーバを選択します。このサーバーが SFTP プロトコルをサポートしていることを確認してください。

  3. サーバーの詳細ページで下にスクロールして [Additional details] (その他の詳細) セクションで [Edit] (編集) を選択します。

  4. 詳細の編集」ページの「マネージドワークフロー」セクションで、ワークフローを選択し、対応する実行ロールを選択します。

  5. ページの最下部までスクロールして、「保存」を選択して変更を保存します。

使用しているサーバーの ID を書き留めます。PGP キーの保存に使用する AWS Secrets Manager シークレットの名前は、サーバー ID に一部基づいています。

ワークフローをトリガーできるユーザーを追加するには
  1. https://console.aws.amazon.com/transfer/ で AWS Transfer Family コンソールを開きます。

  2. 左ナビゲーションペインで、「サーバー」を選択し、復号ワークフローに使用しているサーバーを選択します。

  3. サーバーの詳細ページで、「ユーザー」セクションまでスクロールダウンし、「ユーザーの追加」を選択します。

  4. 新しいユーザーに、次の詳細情報を入力します。

    • [Username] (ユーザーネーム) に、decrypt-user と入力します。

    • ロール」で、サーバーにアクセスできるユーザーロールを選択します。

    • ホームディレクトリ」には、以前に使用した Amazon S3 バケット (例:DOC-EXAMPLE-BUCKET) を選択します。

    • SSH パブリックキー」の場合は、お持ちのプライベートキーに対応するパブリックキーを貼り付けます。詳細については、「サービス管理ユーザーの SSH キーの生成」を参照してください。

  5. 追加」を選択して新しいユーザーを保存します。

このサーバーのTransfer Familyユーザーの名前を書き留めます。シークレットの一部はユーザーの名前に基づいています。わかりやすくするために、このチュートリアルではサーバーのどのユーザーも使用できるデフォルトのシークレットを使用しています。

ステップ 4:PGP キーペアを作成する

サポートされている PGP クライアント」のいずれかを使用して、PGP キーペアを生成します。このプロセスについては、PGP キーを生成する に説明されています。

PGP キーペアを生成するには
  1. このチュートリアルでは、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 を「選びません」。

  2. 次のコマンドを実行して、プライベートキーをエクスポートします。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 に保存するには
  1. にサインイン AWS Management Console し、https://console.aws.amazon.com/secretsmanager/ で AWS Secrets Manager コンソールを開きます。

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

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

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

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

    • キーPGPPrivateKeyと入力します。

    • 」 — 秘密鍵のテキストを値フィールドに貼り付けます。

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

  7. [次へ] をクリックします。

  8. [シークレットの設定] ページで、シークレットの名前と説明を入力します。シークレットは、特定のユーザーに対して作成することも、すべてのユーザーが使用できるシークレットを作成することもできます。サーバー ID が の場合はs-11112222333344445、次のようにシークレットに名前を付けます。

    • すべてのユーザーのデフォルトのシークレットを作成するには、シークレットに という名前を付けますaws/transfer/s-11112222333344445/@pgp-default

    • 前に作成したユーザー専用のシークレットを作成するには、シークレットaws/transfer/s-11112222333344445/decrypt-userに名前を付けます。

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

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

PGP プライベートキーを Secrets Manager に追加する方法の詳細については、「 AWS Secrets Manager を使用して PGP キーを保存する」を参照してください。

ステップ 6: ファイルを暗号化する

gpgプログラムを使用して、ワークフローで使用するファイルを暗号化します。以下のコマンドを実行してファイルを暗号化する:

gpg -e -r marymajor@example.com --openpgp testfile.txt

このコマンドを実行する前に、以下のことに注意する:

  • -r引数の場合は、marymajor@example.comを PGP キーペアの作成時に使用した電子メールアドレスに置き換えます。

  • --openpgp フラグはオプションです。このフラグは、暗号化されたファイルを「OpenPGP RFC4880」標準に準拠させます。

  • このコマンドは、testfile.txtと同じ場所にtestfile.txt.gpgという名前のファイルを作成します。

ステップ 7: ワークフローを実行して結果を表示する

ワークフローを実行するには、ステップ 3 で作成したユーザーを使用して Transfer Family サーバーに接続します。そして、「ステップ2.5、保存先パラメーターの設定」で指定したAmazon S3バケットで、復号化されたファイルを見ることができます。

復号化ワークフローを実行するには
  1. コマンドターミナルを開きます。

  2. 次のコマンドを実行し、your-endpointを実際のエンドポイントに、transfer-keyをユーザーの SSH 秘密鍵に置き換えます。

    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
  3. pwd コマンドを実行します。成功すると、このコマンドは以下を返す:

    Remote working directory: /DOC-EXAMPLE-BUCKET/decrypt-user

    ディレクトリには、Amazon S3 バケットの名前が反映されます。

  4. 次のコマンドを実行してファイルをアップロードし、ワークフローを実行するようにトリガーします。

    put testfile.txt.gpg
  5. 復号化されたファイルの保存先として、ワークフローを作成したときにdecrypted-files/フォルダーを指定しました。これで、そのフォルダーに移動して内容を一覧表示できます。

    cd ../decrypted-files/ ls

    成功すると、lsコマンドはtestfile.txtファイルを一覧表示します。このファイルをダウンロードして、以前に暗号化した元のファイルと同じかどうかを確認できます。