Amazon S3 バケットのセッションポリシーの作成 - AWS Transfer Family

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

Amazon S3 バケットのセッションポリシーの作成

セッションポリシーは、ユーザーを Amazon S3 バケットの特定の部分に制限する AWS Identity and Access Management (IAM) ポリシーです。 Amazon S3 そのために、リアルタイムでアクセスが評価されます。

注記

セッションポリシーは Amazon S3 でのみ使用されます。Amazon EFS では、POSIX ファイルパーミッションを使用してアクセスを制限します。

Amazon S3 バケットの特定の部分への同じアクセス権をユーザーのグループに付与する必要がある場合は、セッションポリシーを使用できます。たとえば、あるユーザーのグループが home ディレクトリのみにアクセスする必要があるとします。そのユーザーのグループは同じ IAM ロールを共有します。

注記

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

セッションポリシーを作成するには、以下の IAM ポリシーのポリシー変数を使用します。

  • ${transfer:HomeBucket}

  • ${transfer:HomeDirectory}

  • ${transfer:HomeFolder}

  • ${transfer:UserName}

重要

管理ポリシーで先に表示されている変数を先に表示することはできません。IAM ロールの定義のリストでこれらをポリシー変数として使用することもできません。このような変数は、IAM ポリシーで作成してから、ユーザーの設定時に直接指定します。また、セッションポリシーの ${aws:Username} 変数を使用することはできません。この変数は IAM ユーザー名を指し、 AWS Transfer Familyが要求するユーザー名ではありません。

次のコードは、セッションポリシーの例を示しています。

{ "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:DeleteObjectVersion", "s3:DeleteObject", "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" は、ユーザーの put およびその同じパス /home/bob/amazon/stuff/ への get アクセスを制限します。

前述のポリシーが使用されている場合、ユーザーがログインすると、ユーザーはホームディレクトリにあるオブジェクトにのみアクセスできます。接続時に、 はこれらの変数をユーザーに適した値 AWS Transfer Family に置き換えます。これによって、同じポリシードキュメントを複数のユーザーに簡単に適用できます。この方法により、IAM ロールのオーバーヘッドおよび Amazon S3 バケットへのユーザーのアクセスを管理するためのポリシー管理が軽減されます。

セッションポリシーを使用すると、業務要件に基づいて、ユーザーごとにアクセス権をカスタマイズすることもできます。詳細については、「IAM ユーザーガイド」の AssumeRole「、 AssumeRoleWithSAML、および のアクセス許可 AssumeRoleWithWebIdentity」を参照してください。

注記

AWS Transfer Family は、ポリシーの Amazon リソースネーム (ARN) の代わりにポリシー JSON を保存します。したがって、IAM コンソールでポリシーを変更する場合、 AWS Transfer Family コンソールに戻り、最新のポリシーコンテンツでユーザーを更新する必要があります。[ユーザー設定] セクションの[ポリシー情報] タブでユーザーを更新できます。

を使用している場合は AWS CLI、次のコマンドを使用してポリシーを更新できます。

aws transfer update-user --server-id server --user-name user --policy \ "$(aws iam get-policy-version --policy-arn policy --version-id version --output json)"