

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

# ファイルを復号するためのマネージドワークフローの設定
<a name="workflow-decrypt-tutorial"></a>

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

**注記**  
 AWS ストレージブログには、Transfer Family Managed ワークフローを使用してコードを記述せずにファイルを単純に復号する方法、[PGP と を使用してファイルを暗号化および復号する方法 AWS Transfer Family](https://aws.amazon.com/blogs/storage/encrypt-and-decrypt-files-with-pgp-and-aws-transfer-family/)を説明する投稿があります。

**Topics**
+ [ステップ 1：実行ロールを設定する](#create-example-execution-role)
+ [ステップ 2: マネージドワークフローを作成する](#create-example-workflow)
+ [ステップ 3: サーバーにワークフローを追加してユーザーを作成する](#add-workflow-to-server)
+ [ステップ 4：PGP キーペアを作成する](#create-example-pgp-key-pair)
+ [ステップ 5: PGP プライベートキーを に保存する AWS Secrets Manager](#output-private-key-to-secrets)
+ [ステップ 6: ファイルを暗号化する](#encrypt-example-file)
+ [ステップ 7: ワークフローを実行して結果を表示する](#test-decrypt-workflow)

## ステップ 1：実行ロールを設定する
<a name="create-example-execution-role"></a>

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

**注記**  
実行ロールを作成する際、[信頼関係を確立するには](requirements-roles.md#establish-trust-transfer)で説明されているように、実行ロールと Transfer Family の間に信頼関係を確立してください。

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

**注記**  
すべてのワークフローに、この例に記載されているすべての権限が必要なわけではありません。特定のワークフローのステップのタイプに基づいてアクセス許可を制限できます。定義済みの各ステップタイプに必要な権限については、[事前定義されたステップを使用する](nominal-steps-workflow.md)で説明しています。カスタムステップに必要な権限については、[カスタムステップの IAM 権限](custom-step-details.md#custom-step-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:::amzn-s3-demo-bucket/*",
                "arn:aws:s3:::amzn-s3-demo-bucket"
            ]
        },
        {
            "Sid": "DecryptSecret",
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetSecretValue"
            ],
            "Resource": "arn:aws:secretsmanager:us-east-1:123456789012:secret:aws/transfer/*"
        }
    ]
}
```

## ステップ 2: マネージドワークフローを作成する
<a name="create-example-workflow"></a>

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

**復号化ステップを含むワークフローを作成するには**

1. [https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/) で AWS Transfer Family コンソールを開きます。

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

1. 次の詳細情報を入力します。
   + **Decrypt workflow example**などの説明を入力します。
   + **[ノミナルステップ]** セクションで **[ステップを追加]** を選択します。

1. **[ステップタイプを選択]** で **[ファイルを復号]** を選択し、**[次へ]** を選択します。

1. <a name="configure-destination-details"></a>**[パラメータの設定]** ダイアログボックスで、以下を指定します。
   + **decrypt-step**など、わかりやすいステップ名を入力します。ステップ名にはスペースを使用できません。
   + **[復号されたファイルの宛先]** には、Amazon S3 を選択します。
   + **[宛先バケット名]** には、ステップ 1 で作成した IAM ポリシーで`amzn-s3-demo-bucket`として指定したのと同じ Amazon S3 バケットを選択します。
   + **[宛先キープレフィクス]** には、復号したファイルを保存するプレフィックス（フォルダ）の名前を、保存先バケットに入力します（例：**decrypted-files/**）。
**注記**  
プレフィックスの末尾には必ずスラッシュ (**/**) を追加してください。
   + このチュートリアルでは、**[既存を上書き]** はオフのままにしておきます。この設定をクリアすると、既存のファイルと同じ名前のファイルを復号しようとしても、ワークフロー処理は停止し、新しいファイルは処理されません。

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

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

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

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

## ステップ 3: サーバーにワークフローを追加してユーザーを作成する
<a name="add-workflow-to-server"></a>

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

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

**Transfer Family サーバーを設定してワークフローを実行するには**

1. [https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/) で AWS Transfer Family コンソールを開きます。

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

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

1. **[詳細の編集]** ページの **[マネージドワークフロー]** セクションで、ワークフローを選択し、対応する実行ロールを選択します。
   + **[ファイルをアップロードするワークフロー]** では、[ステップ 2: マネージドワークフローを作成する](#create-example-workflow)で作成したワークフロー (例:**w-1234abcd5678efghi**) を選択します。
   + **[マネージドワークフロー実行ロール]** の場合は、[ステップ 1：実行ロールを設定する](#create-example-execution-role)で作成した IAM ロールを選択します。

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

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

**ワークフローをトリガーできるユーザーを追加するには**

1. [https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/) で AWS Transfer Family コンソールを開きます。

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

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

1. 新しいユーザーに、次の詳細情報を入力します。
   + **[Username]** (ユーザーネーム) に、**decrypt-user** と入力します。
   + **[ロール]** で、サーバーにアクセスできるユーザーロールを選択します。
   + **[ホームディレクトリ]** には、以前に使用した Amazon S3 バケット (例:`amzn-s3-demo-bucket`) を選択します。
   + **[SSH パブリックキー]** の場合は、お持ちのプライベートキーに対応するパブリックキーを貼り付けます。詳細については、「[サービス管理ユーザーの SSH キーの生成](sshkeygen.md)」を参照してください。

1. **[追加]** を選択して新しいユーザーを保存します。

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

## ステップ 4：PGP キーペアを作成する
<a name="create-example-pgp-key-pair"></a>

[[サポートされている PGP クライアント]](pgp-key-clients.md) のいずれかを使用して、PGP キーペアを生成します。このプロセスについては、[PGP キーを生成する](generate-pgp-keys.md) に説明されています。

**PGP キーペアを生成するには**

1. このチュートリアルでは、`gpg` (`GnuPG`) バージョン 2.0.22 クライアントを使用して、RSA を暗号化アルゴリズムとして使用する PGP キーペアを生成できます。このクライアントでは、以下のコマンドを実行して E メールアドレスとパスフレーズを指定します。任意の名前またはメールアドレスを使用できます。使用する値は、チュートリアルの後半で入力する必要があるため、忘れないようにしてください。

   ```
   gpg --gen-key
   ```
**注記**  
`GnuPG` バージョン 2.3.0 以降を使用している場合は、`gpg --full-gen-key` を実行する必要があります。作成する鍵の種類を求められたら、RSA または ECC を選択します。**ECC** を選択した場合は、楕円曲線Curve25519の NISTBrainPoolおよび から選択できます。

1. 次のコマンドを実行して、プライベートキーをエクスポートします。`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
<a name="output-private-key-to-secrets"></a>

ワークフローがアップロードされたファイルに対して復号ステップを実行したときにワークフローが秘密鍵を見つけることができるように、秘密鍵を非常に特殊な方法でSecrets Managerに保存する必要があります。

**注記**  
Secrets Manager にシークレットを保存すると、 AWS アカウント に料金が発生します。料金については、「[AWS Secrets Manager 料金](https://aws.amazon.com/secrets-manager/pricing)」を参照してください。

**PGP プライベートキーを Secrets Manager に保存するには**

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/) で AWS Secrets Manager コンソールを開きます。

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

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

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

1. **[キー/値のペア]** セクションで、**[キー/値]** タブを選択します。
   + **キー** — **PGPPrivateKey**と入力します。
   + 「**値**」 — 秘密鍵のテキストを値フィールドに貼り付けます。

1. **[行を追加]** を選択し、**[キー/値のペア]** セクションで **[キー/値]** タブを選択します。
   + **キー** — **PGPPassphrase**と入力します。
   + **値** — [ステップ 4：PGP キーペアを作成する](#create-example-pgp-key-pair)で PGP キーペアを生成したときに使用したパスフレーズを入力します。

1. [**次へ**] を選択します。

1. **[シークレットの設定]** ページで、シークレットの名前と説明を入力します。特定のユーザーのシークレット、またはすべてのユーザーが使用できるシークレットを作成できます。サーバー ID が の場合*`s-11112222333344445`*、次のようにシークレットに名前を付けます。
   + すべてのユーザーのデフォルトのシークレットを作成するには、シークレットに という名前を付けます**aws/transfer/*s-11112222333344445*/@pgp-default**。
   + 前に作成したユーザー専用のシークレットを作成するには、シークレット**aws/transfer/*s-11112222333344445*/decrypt-user**に名前を付けます。

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

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

Secrets Manager に PGP プライベートキーを追加する方法の詳細については、[「 AWS Secrets Manager を使用して PGP キーを保存する](manage-pgp-keys.md#store-pgp-key-details)」を参照してください。

## ステップ 6: ファイルを暗号化する
<a name="encrypt-example-file"></a>

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

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

このコマンドを実行する前に、以下のことに注意する：
+ `-r`引数の場合は、`marymajor@example.com`を PGP キーペアの作成時に使用した電子メールアドレスに置き換えます。
+ `--openpgp` フラグはオプションです。このフラグは、暗号化されたファイルを「[OpenPGP RFC4880](https://www.rfc-editor.org/rfc/rfc4880)」標準に準拠させます。
+ このコマンドは、**testfile.txt**と同じ場所に**testfile.txt.gpg**という名前のファイルを作成します。

**重要**  
 AWS Transfer Family ワークフローで使用するファイルを暗号化する場合は、必ず `-r`パラメータを使用して非匿名受信者を指定してください。匿名暗号化 (受信者を指定しない) では、システムが復号に使用するキーを特定できないため、ワークフローで復号化が失敗する可能性があります。この問題のデバッグ情報は、「」で入手できます[匿名受信者の暗号化問題のトラブルシューティング](workflow-issues.md#workflows-decrypt-anonymous)。

## ステップ 7: ワークフローを実行して結果を表示する
<a name="test-decrypt-workflow"></a>

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

**復号化ワークフローを実行するには**

1. コマンドターミナルを開きます。

1. 次のコマンドを実行し、`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
   ```

1. `pwd` コマンドを実行します。成功すると、このコマンドは以下を返す：

   ```
   Remote working directory: /amzn-s3-demo-bucket/decrypt-user
   ```

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

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

   ```
   put testfile.txt.gpg
   ```

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

   ```
   cd ../decrypted-files/
   ls
   ```

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