IAM ポリシーとロールを作成する - AWS Transfer Family

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

IAM ポリシーとロールを作成する

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

AWS Transfer Family は次のタイプのロールを使用します。

  • ユーザーロール」 — サービス管理ユーザーが必要な Transfer Family リソースにアクセスできるようにします。AWS Transfer Family は、Transfer Family ユーザー ARN のコンテキストでこの役割を引き受けます。

  • アクセスロール」 — 転送中の 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 ユーザーを作成する場合は、[ホーム フォルダーに基づいてポリシーを自動生成] を選択できます。これは、ユーザーのアクセスを自分のフォルダーに制限する場合に便利なショートカットです。また、セッション ポリシーの詳細と例を で確認できますセッションポリシーの仕組み。セッションポリシーの詳細については、IAM ユーザーガイドの「セッションポリシー」 を参照してください。

ユーザーロールの作成

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

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

ユーザーロールの作成
  1. AWS Transfer Family 用の IAM ポリシーを作成するには これについては、「AWS Transfer Family の IAM ポリシーを作成するには」で説明しています。

  2. IAM ロールを作成して、新しいポリシーをアタッチします。例については「読み書きアクセスポリシーの例」を参照してください。

  3. AWS Transfer Family と IAM ロールの間に信頼関係を確立します。これについては、「信頼関係を確立するには」で説明しています。

以下の手順では、IAM ポリシーおよびロールを作成する方法について説明します。

AWS Transfer Family の IAM ポリシーを作成するには
  1. https://console.aws.amazon.com/iam/ で IAM コンソール を開きます。

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

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

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

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

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

次に、IAM ロールを作成してそれに新しい IAM ポリシーをアタッチします。

AWS Transfer Family 用に IAM ロールを作成するには
  1. ナビゲーションペインで [Roles] (ロール) を選択してから [Create role] (ロールの作成) を選択します。

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

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

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

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

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

次に、AWS Transfer Family と AWS の間に信頼関係を確立します。

信頼関係を確立するには
注記

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

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

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

  3. [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/*" } }
    注記

    上記の例では、それぞれのユーザー入力プレースホルダーをあなた自身の情報で置き換えます。

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

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

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

以下の資料も参照してください。

セッションポリシーの仕組み

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

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


                セッション ポリシーのアクセス許可のベン図。リソース ベースのポリシー、アイデンティティ ベースのポリシー、およびセッション ポリシーが交差する部分に権限がどのように有効に存在するかを示します。

詳細については、IAM ユーザーガイドの「セッションポリシー」を参照してください。

AWS Transfer Family では、セッションポリシーは、Amazon S3 との間で転送する場合のみサポートされます。以下のサンプルポリシーは、ユーザーのアクセスを home ディレクトリのみに限定するセッションポリシーです。次の点に注意してください。

  • GetObjectACLおよびPutObjectACLステートメントは、クロスアカウントアクセスを有効にする必要がある場合にのみ必要です。つまり、Transfer Family サーバーは、別のアカウントのバケットにアクセスする必要があります。

  • セッションポリシーの最大長は 2048 文字です。詳細については、API リファレンスCreateUser アクションに関する「ポリシーリクエストパラメータ」を参照してください。

  • Amazon S3 バケットが AWS Key Management Service (AWS KMS) を使用する場合、ポリシーで追加のアクセス許可を指定する必要があります。詳細については、「Amazon S3 でのデータ暗号化」を参照してください。

{ "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:HomeFoldertransfer:HomeBucket、およびtransfer:HomeDirectory ポリシーパラメータの使用に注目してください。これらのパラメータは、HomeDirectory「」および「」で説明HomeDirectoryされているように、ユーザー用に設定された に設定されますAPI Gateway メソッドを実装する。これらのパラメータには、次のような定義があります。

  • transfer:HomeBucket パラメータは HomeDirectory の 1 つ目のコンポーネントに置き換わります。

  • transfer:HomeFolder パラメータは HomeDirectory パラメータの残り部分に置き換わります。

  • transfer:HomeDirectory パラメータの先頭に付いていた (/) が削除され、Resource ステートメントで S3 Amazon リソースネーム (ARN) の一部としてこのパラメータを使用できるようになりました。

注記

論理ディレクトリを使用する場合(つまり、ユーザーの homeDirectoryTypeLOGICAL である場合)、これらのポリシーパラメータ(HomeBucketHomeDirectory、および HomeFolder)はサポートされません。

たとえば、Transfer Family ユーザー用に設定された HomeDirectory パラメータは /home/bob/amazon/stuff/ です。

  • transfer:HomeBucket/home に設定されます。

  • transfer:HomeFolder/bob/amazon/stuff/ に設定されます。

  • transfer:HomeDirectoryhome/bob/amazon/stuff/ になります。

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

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

読み書きアクセスポリシーの例

Amazon S3 バケットへの読み書きアクセス権の付与

以下の AWS Transfer Family に関するポリシーの例では、Amazon S3 バケット内のオブジェクトへの読み書きアクセス権を付与します。

次の点に注意してください。

  • DOC−EXAMPLE−BUCKET を Amazon S3 バケットの名前に置き換えます。

  • GetObjectACLおよびPutObjectACLステートメントは、クロスアカウントアクセスを有効にする必要がある場合にのみ必要です。つまり、Transfer Family サーバーは、別のアカウントのバケットにアクセスする必要があります。

  • GetObjectVersion および DeleteObjectVersion ステートメントは、アクセスされている Amazon S3 バケットでバージョニングが有効になっている場合にのみ必要です。

    注記

    バケットのバージョニングを有効にしたことがある場合は、Amazon S3 でバージョニングを停止するだけで、完全にオフにすることはできないため、これらのアクセス許可が必要です。詳細については、「バージョニングなし」、「バージョニングが有効」、「バージョニングが停止されたバケット」を参照してください。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListingOfUserFolder", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET" ] }, { "Sid": "HomeDirObjectAccess", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:GetObjectVersion", "s3:GetObjectACL", "s3:PutObjectACL" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" } ] }
Amazon EFS ファイルシステム内のファイルへのアクセス権を付与する

注記

ポリシーに加えて、POSIX ファイルアクセス許可で適切なアクセス権を付与していることを確認する必要があります。詳細については、Amazon Elastic File System ユーザーガイドの「ネットワークファイルシステム (NFS) レベルでのユーザー、グループ、アクセス許可の操作」を参照してください。

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

注記

次の例では、region をリージョン、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:region:account-id: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:region:account-id:file-system/file-system-id" } ] }