Amazon S3: フェデレーティッドユーザーが自分の S3 ホームディレクトリにプログラムおよびコンソールでアクセスすることを許可する - AWS Identity and Access Management

Amazon S3: フェデレーティッドユーザーが自分の S3 ホームディレクトリにプログラムおよびコンソールでアクセスすることを許可する

この例では、フェデレーティッドユーザーに S3 の自分のホームディレクトリバケットオブジェクトへのアクセスを許可する ID ベースのポリシーを作成する方法を示します。ホームディレクトリは、home フォルダや個々のフェデレーティッドユーザーのフォルダを含むバケットです。このポリシーは、プログラムおよびコンソールアクセスのアクセス許可を定義します。このポリシーを使用するには、サンプルポリシーのイタリック体のプレースホルダーテキストを独自の情報に置き換えます。次に、ポリシーの作成またはポリシーの編集の手順に従います。

このポリシーの ${aws:userid} 変数は、role-id:specified-name に解決されます。フェデレーティッドユーザー ID の role-id の部分は、作成時にこのフェデレーティッドユーザーに割り当てられた一意の識別子です。詳細については、「一意の識別子」を参照してください。specified-name は、フェデレーションユーザーがロールを引き受けたときに AssumeRoleWithWebIdentity リクエストに渡される RoleSessionName パラメータです。

ロール ID を表示するには、AWS CLI コマンド aws iam get-role --role-name specified-name を使用します。たとえば、フレンドリ名を John と指定すると、CLI はロール ID として AROAXXT2NJT7D3SIQN7Z6 を返します。この場合、フェデレーティッドユーザー ID は AROAXXT2NJT7D3SIQN7Z6:John です。このポリシーは、フェデレーティッドユーザー John がプレフィックス AROAXXT2NJT7D3SIQN7Z6:John を使用して Amazon S3 バケットにアクセスすることを許可します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3ConsoleAccess", "Effect": "Allow", "Action": [ "s3:GetAccountPublicAccessBlock", "s3:GetBucketAcl", "s3:GetBucketLocation", "s3:GetBucketPolicyStatus", "s3:GetBucketPublicAccessBlock", "s3:ListAccessPoints", "s3:ListAllMyBuckets" ], "Resource": "*" }, { "Sid": "ListObjectsInBucket", "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::bucket-name", "Condition": { "StringLike": { "s3:prefix": [ "", "home/", "home/${aws:userid}/*" ] } } }, { "Effect": "Allow", "Action": "s3:*", "Resource": [ "arn:aws:s3:::bucket-name/home/${aws:userid}", "arn:aws:s3:::bucket-name/home/${aws:userid}/*" ] } ] }