

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

# IAM ポリシーとロールを作成する
<a name="requirements-roles"></a>

このトピックでは、 で使用できるポリシーとロールのタイプについて説明し AWS Transfer Family、ユーザーロールを作成するプロセスについて説明します。また、セッション ポリシーがどのように機能するかについて説明し、ユーザー ロールの例を示します。

AWS Transfer Family は、次のタイプのロールを使用します。
+ **ユーザーロール** – サービスマネージドユーザーが必要な Transfer Family リソースにアクセスできるようにします。 は、Transfer Family ユーザー ARN のコンテキストでこのロールを AWS Transfer Family 引き受けます。
+ 「**アクセスロール**」 — 転送中の Amazon S3 ファイルのみへのアクセスを提供します。インバウンド AS2 転送の場合、アクセスロールは契約の Amazon リソースネーム (ARN) を使用します。アウトバウンド AS2 転送の場合、アクセスロールはコネクタの ARN を使用します。
+ 「**呼び出しロール**」 — Amazon API Gateway でサーバーのカスタム ID プロバイダーとして使用します。Transfer Family は、Transfer Family サーバー ARN のコンテキストでこの役割を引き受けます。
+ 「**ロギングロール**」 — Amazon CloudWatch にエントリを記録するために使用されます。Transfer Family はこのロールを使用して、成功と失敗の詳細をファイル転送に関する情報とともに記録します。Transfer Family は、Transfer Family サーバー ARN のコンテキストでこの役割を引き受けます。アウトバウンドAS2転送では、ログロールはコネクタARNを使用する。
+ 「**実行ロール**」 — Transfer Family ユーザーがワークフローを呼び出して起動できるようにします。Transfer Family は、Transfer Family のワークフローARNのコンテキストにおいて、この役割を引き受ける。

これらのロールに加えて、セッション ポリシーを使用することもできます。セッション ポリシーは、必要に応じてアクセスを制限するために使用されます。これらのポリシーはスタンドアロンであることに注意してください。つまり、これらのポリシーをロールに追加することはできません。代わりに、セッション ポリシーを Transfer Family ユーザーに直接追加します。

**注記**  
サービスで管理される Transfer Family ユーザーを作成する場合は、**[ホーム フォルダーに基づいてポリシーを自動生成]** を選択できます。これは、ユーザーのアクセスを自分のフォルダーに制限する場合に便利なショートカットです。また、セッション ポリシーの詳細と例を [セッションポリシーの仕組み](#session-policy) で確認できます。セッションポリシーの詳細については、IAM ユーザーガイドの「[セッションポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)」 を参照してください。

**Topics**
+ [ユーザーロールの作成](#role-create-procedure)
+ [セッションポリシーの仕組み](#session-policy)
+ [読み書きアクセスポリシーの例](#read-write-access)

## ユーザーロールの作成
<a name="role-create-procedure"></a>

ユーザーを作成する際には、ユーザーアクセスについて決定すべきことがいくつもあります。具体的には、ユーザーがどのAmazon S3 バケットまたは Amazon EFS ファイルシステムにアクセスできるようにするか、各 Amazon S3 バケットのどの部分をアクセス可能にするか、ユーザーにどのアクセス許可を与えるか (たとえば、`PUT` または `GET`) などを決定する必要があります。

アクセスを設定するには、そのアクセス情報を提供する ID ベースの AWS Identity and Access Management (IAM) ポリシーとロールを作成します。このプロセスの一環として、ユーザーに、ファイルオペレーションの送信先または送信元である Amazon S3 バケットまたは Amazon EFS ファイルシステムへのアクセス権を提供します。これを行うには以下のような手順を実行します。手順については、後で詳しい説明があります。

**ユーザーロールの作成**

1. の IAM ポリシーを作成します AWS Transfer Family。これについては、「[の IAM ポリシーを作成するには AWS Transfer Family](#iam-policy-procedure)」で説明しています。

1. IAM ロールを作成して、新しいポリシーをアタッチします。例については、[読み書きアクセスポリシーの例](#read-write-access)を参照してください。

1.  AWS Transfer Family と IAM ロールの間に信頼関係を確立します。これについては、「[信頼関係を確立するには](#establish-trust-transfer)」で説明しています。

以下の手順では、IAM ポリシーおよびロールを作成する方法について説明します。<a name="iam-policy-procedure"></a>

**の IAM ポリシーを作成するには AWS Transfer Family**

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

1. ナビゲーションペインで **ポリシー**を選択してから **ポリシーの作成**を選択します。

1. [**Create Policy**] (ポリシーの作成) ページで [**JSON**] タブを選択します。

1. エディタが表示されたら、エディタの内容を IAM ロールにアタッチする IAM ポリシーで置き換えます。

   読み書きアクセス権を付与するか、またはユーザーをホームディレクトリに制限できます。詳細については、「[読み書きアクセスポリシーの例](#read-write-access)」を参照してください。

1. [**Review policy**] (ポリシーの確認) を選択してポリシーの名前と説明を入力し、[**Create policy**] (ポリシーの作成) を選択します。

次に、IAM ロールを作成してそれに新しい IAM ポリシーをアタッチします。<a name="iam-role-procedure"></a>

**の IAM ロールを作成するには AWS Transfer Family**

1. ナビゲーションペインで [**Roles**] (ロール) を選択してから [**Create role**] (ロールの作成) を選択します。

   [**Create role**] (ロールの作成) ページで [**AWS service**] (サービス) が選択されていることを確認します。

1. サービスリストから [**Transfer**] (転送) を選択してから [**Next: Permissions**] (次へ: アクセス許可) を選択します。これにより、 AWS Transfer Family と の間に信頼関係が確立されます AWS。

1. [**Attach permissions policies**] (アクセス許可ポリシーをアタッチする) セクションで、先ほど作成したポリシーを選択して [**Next: Tags**] (次へ: タグ) を選択します。

1. (オプション) タグのキーと値を入力して [**Next: Review**] (次へ: レビュー) を選択します。

1. [**Review**] (レビュー) ページで新しいロールの名前と説明を入力してから [**Create role**] (ロールの作成) を選択します。

次に、 AWS Transfer Family と の間に信頼関係を確立します AWS。<a name="establish-trust-transfer"></a>

**信頼関係を確立するには**
**注記**  
この例では、`ArnLike` と `ArnEquals` の両方を使用しています。これらは機能的には同じなので、ポリシーを作成する際にはどちらを使用してもかまいません。Transfer Family ドキュメントでは、条件にワイルドカード文字が含まれる場合は `ArnLike`を使用し、完全一致の条件を示す場合は `ArnEquals` を使用しています。

1. IAM コンソールで、作成したロールを選択します。

1. [**Summary**] (概要) ページで [**Trust relationships**] (信頼関係) を選択してから [**Edit trust relationship**] (信頼関係の編集) を選択します。

1. [**Edit Trust Relationship**] (信頼関係の編集) エディタで**サービス**が `"transfer.amazonaws.com"` であることを確認します。アクセスポリシーは次のように表示されます。  
****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "transfer.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

   Confused Deputy Problem (混乱した使節の問題) から自分を守るために、`aws:SourceAccount` および `aws:SourceArn` の条件キーを使用することをお勧めします。ソースアカウントはサーバーの所有者であり、ソース ARN はユーザーの ARN です。例えば、次のようになります。

   ```
   "Condition": {
       "StringEquals": {
           "aws:SourceAccount": "account_id"
       },
       "ArnLike": {
           "aws:SourceArn": "arn:aws:transfer:region:account_id:user/*"
       }
   }
   ```

   ユーザー アカウント内のサーバーではなく特定のサーバーに制限したい場合は、`ArnLike` 条件を使用することもできます。例えば、次のようになります。

   ```
   "Condition": {    
       "ArnLike": {
           "aws:SourceArn": "arn:aws:transfer:region:account-id:user/server-id/*"
       }
   }
   ```
**注記**  
上記の例では、それぞれの*ユーザー入力プレースホルダー*をあなた自身の情報で置き換えます。

   混乱した代理人問題の詳細とその他の例については、[サービス間の混乱した代理の防止](confused-deputy.md) を参照してください。

1. [**Update Trust Policy**] (信頼ポリシーの更新) を選択してアクセスポリシーを更新します。

これで、 がユーザーに代わって AWS サービスを呼び出す AWS Transfer Family ことができる IAM ロールが作成されました。ロールには、ユーザーにアクセス権を付与するための IAM ポリシーをアタッチしてあります。「[AWS Transfer Family サーバーエンドポイントの開始方法](getting-started.md)」セクションで、このロールとポリシーを 1 人以上のユーザーに割り当てます。

**以下の資料も参照してください。**
+ IAM ロールの詳細については、*IAM ユーザーガイド*の[「 AWS サービスにアクセス許可を委任するロールの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)」を参照してください。
+ Amazon S3 バケットに関するアイデンティティベースのポリシーの詳細については、*Amazon Simple Storage Service ユーザーガイド*の「[Amazon S3 での Identity and Access Management](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html)」を参照してください。
+ Amazon EFS リソースのアイデンティティベースのポリシーの詳細については、Amazon Elastic File System ユーザーガイドの[「IAM を使用したファイル システム データ アクセスの制御」 ](https://docs.aws.amazon.com/efs/latest/ug/iam-access-control-nfs-efs.html)を参照してください。

## セッションポリシーの仕組み
<a name="session-policy"></a>

管理者がロールを作成する場合、そのロールには、複数のユースケースやチームメンバーをカバーする広範な権限が含まれることがよくあります。[「管理者がコンソール URL」 ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html)を構成すると、セッション ポリシーを使用して、結果として得られるセッションのアクセス許可を減らすことができます。例えば、読み取り/書き込み[「アクセス」](#read-write-access) 権を持つロールを作成する場合、ユーザーのアクセスをホーム ディレクトリのみに制限する URL を設定できます。

セッションポリシーは、ロールまたはユーザーの一時セッションをプログラムで作成する際にパラメータとして渡す高度なポリシーです。セッションポリシーは、ユーザーをロックするのに便利で、オブジェクトのプレフィックスにユーザー名が含まれるバケツの一部だけにアクセスできるようにします。次の図は、セッションポリシーの許可が、セッションポリシーとリソースベースポリシーの交差点、およびセッションポリシーと ID ベースポリシーの交差点であることを示しています。

![\[セッション ポリシーのアクセス許可のベン図。リソース ベースのポリシー、アイデンティティ ベースのポリシー、およびセッション ポリシーが交差する部分に権限がどのように有効に存在するかを示します。\]](http://docs.aws.amazon.com/ja_jp/transfer/latest/userguide/images/EffectivePermissions-session-rbp-id.png)


詳細については、*IAM ユーザーガイド*の「[セッションポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)」を参照してください。

では AWS Transfer Family、セッションポリシーは Amazon S3 との間で転送する場合にのみサポートされます。以下のサンプルポリシーは、ユーザーのアクセスを `home` ディレクトリのみに限定するセッションポリシーです。次の点に注意してください。
+ `GetObjectACL`および`PutObjectACL`ステートメントは、クロスアカウントアクセスを有効にする必要がある場合にのみ必要です。つまり、Transfer Family サーバーは、別のアカウントのバケットにアクセスする必要があります。
+  セッションポリシーの最大長は 2048 文字です。詳細については、*API リファレンス*で `CreateUser` アクションに関する「[ポリシーリクエストパラメータ](https://docs.aws.amazon.com/transfer/latest/APIReference/API_CreateUser.html#API_CreateUser_RequestSyntax)」を参照してください。
+  Amazon S3 バケットが AWS Key Management Service (AWS KMS) を使用して暗号化されている場合は、ポリシーで追加のアクセス許可を指定する必要があります。詳細については、「[データ保護と暗号化](encryption-at-rest.md)」を参照してください。
+ セッションポリシーを使用して、ユーザーごとに個別の IAM ロールを作成せずに、ユーザー属性に基づいてアクセス許可を作成するには、「」を参照してください[動的なアクセス許可管理アプローチ](dynamic-permission-management.md)。

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowListingOfUserFolder",
            "Action": [
                "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::${transfer:HomeBucket}"
            ],
            "Condition": {
                "StringLike": {
                    "s3:prefix": [
                        "${transfer:HomeFolder}/*",
                        "${transfer:HomeFolder}"
                    ]
                }
            }
        },
        {
            "Sid": "HomeDirObjectAccess",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:DeleteObject",
                "s3:DeleteObjectVersion",
                "s3:GetObjectVersion",
                "s3:GetObjectACL",
                "s3:PutObjectACL"
            ],
            "Resource": "arn:aws:s3:::${transfer:HomeDirectory}/*"
        }
    ]
}
```

**注記**  
前述のポリシーの例では、ユーザーのホームディレクトリがディレクトリであることを示すために、末尾のスラッシュを含むように設定されていることを前提としています。一方、ユーザーの `HomeDirectory` の末尾にスラッシュを付けない場合、それをポリシーの一部として含める必要があります。

前のポリシー例では、`transfer:HomeFolder`、`transfer:HomeBucket`、および`transfer:HomeDirectory` ポリシーパラメータの使用に注目してください。これらのパラメータは、「[HomeDirectory](https://docs.aws.amazon.com/transfer/latest/APIReference/API_CreateUser.html#TransferFamily-CreateUser-request-HomeDirectory)」と [API Gateway メソッドを実装する](authentication-api-gateway.md#authentication-api-method) で説明するように、ユーザー用に構成された `HomeDirectory` について設定されています。これらのパラメータには、次のような定義があります。
+ `transfer:HomeBucket` パラメータは `HomeDirectory` の 1 つ目のコンポーネントに置き換わります。
+ `transfer:HomeFolder` パラメータは `HomeDirectory` パラメータの残り部分に置き換わります。
+ `transfer:HomeDirectory` パラメータの先頭に付いていた (`/`) が削除され、`Resource` ステートメントで S3 Amazon リソースネーム (ARN) の一部としてこのパラメータを使用できるようになりました。

**注記**  
 論理ディレクトリを使用する場合（つまり、ユーザーの `homeDirectoryType` が `LOGICAL` である場合）、これらのポリシーパラメータ（`HomeBucket`、`HomeDirectory`、および `HomeFolder`）はサポートされません。

たとえば、Transfer Family ユーザー用に設定された `HomeDirectory` パラメータは `/home/bob/amazon/stuff/` です。
+ `transfer:HomeBucket` は `/home` に設定されます。
+ `transfer:HomeFolder` は `/bob/amazon/stuff/` に設定されます。
+ `transfer:HomeDirectory` は `home/bob/amazon/stuff/` になります。

1 つ目の `"Sid"` は、`/home/bob/amazon/stuff/` から始まるすべてのディレクトリの一覧表示をユーザーに許可します。

2 つ目の `"Sid"` は、ユーザーの `put` と `get` のアクセス権をその同じパスである `/home/bob/amazon/stuff/` に限定します。

## 読み書きアクセスポリシーの例
<a name="read-write-access"></a>

**Amazon S3 バケットへの読み書きアクセス権の付与**  
次の のポリシー例では、Amazon S3 バケット内のオブジェクトへの読み取り/書き込みアクセス AWS Transfer Family を許可します。

次の点に注意してください。
+ `amzn-s3-demo-bucket` をお使いの Amazon S3 バケットの名前に置き換えます。
+ `GetObjectACL`および`PutObjectACL`ステートメントは、クロスアカウントアクセスを有効にする必要がある場合にのみ必要です。つまり、Transfer Family サーバーは、別のアカウントのバケットにアクセスする必要があります。
+ `GetObjectVersion` および `DeleteObjectVersion` ステートメントは、アクセスされている Amazon S3 バケットでバージョニングが有効になっている場合にのみ必要です。
**注記**  
バケットのバージョニングを有効に*したこと*がある場合は、Amazon S3 でバージョニングを停止するだけで、完全にオフにすることはできないため、これらのアクセス許可が必要です。詳細については、[「バージョン管理されていないバケット」、「バージョニングが有効なバケット」、および「バージョニングが停止されたバケット](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html#versioning-states)」を参照してください。

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowListingOfUserFolder",
            "Action": [
                "s3:ListBucket",
                "s3:GetBucketLocation"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket"
            ]
        },
        {
            "Sid": "HomeDirObjectAccess",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:GetObjectTagging",
                "s3:DeleteObject",
                "s3:DeleteObjectVersion", 
                "s3:GetObjectVersion",
                "s3:GetObjectVersionTagging",
                "s3:GetObjectACL",
                "s3:PutObjectACL"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
        }
    ]
}
```

**Amazon EFS ファイルシステム内のファイルへのアクセス権を付与する**  


**注記**  
ポリシーに加えて、POSIX ファイルアクセス許可で適切なアクセス権を付与していることを確認する必要があります。詳細については、*Amazon Elastic File System ユーザーガイド*の「[ネットワークファイルシステム (NFS) レベルでのユーザー、グループ、アクセス許可の操作](https://docs.aws.amazon.com/efs/latest/ug/accessing-fs-nfs-permissions.html)」を参照してください。

次のポリシー例では、Amazon EFS ファイルシステム内のファイルに root ファイルシステムアクセス権を付与します。

**注記**  
以下の例では、*リージョン*をあなたのリージョンに、*account-id*をファイルがあるアカウントに、*file-system-id*をAmazon Elastic File System (Amazon EFS)の ID に置き換えます。

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "RootFileSystemAccess",
            "Effect": "Allow",
            "Action": [
                "elasticfilesystem:ClientRootAccess",
                "elasticfilesystem:ClientMount",
                "elasticfilesystem:ClientWrite"
            ],
            "Resource": "arn:aws:elasticfilesystem:us-east-1:123456789012:file-system/file-system-id"
        }
    ]
}
```

次のポリシー例では、Amazon EFS ファイルシステム内のファイルにユーザーファイルシステムアクセス権を付与します。

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "UserFileSystemAccess",
            "Effect": "Allow",
            "Action": [
                "elasticfilesystem:ClientMount",
                "elasticfilesystem:ClientWrite"
            ],
            "Resource": "arn:aws:elasticfilesystem:us-east-1:123456789012:file-system/file-system-id"
        }
    ]
}
```