「アクセス」がどの程度の操作まで許容するかわかりませんが、単に特定のバケットにアクセスを絞るならIAMユーザに下記のようなポリシーを設定すればいいのではないでしょうか。(bucket-name
は設定したいバケットの名前に変更)
json
1
2{
3 "Version": "2012-10-17",
4 "Statement": [
5 {
6 "Action": "s3:*",
7 "Effect": "Allow",
8 "Resource": "arn:aws:s3:::bucket-name"
9 }
10 ]
11}
ドキュメントに記載してある例はS3上に各ユーザごとのディレクトリが作成してあって、各ユーザが自分のディレクトリにしかアクセスできないように制限するためにユーザ名を使っています。
単にバケットにアクセスを絞るならResourceに該当のバケットのARNを設定すればOKです。
Resourceに記載したARNのものに対してActionに記載した権限がAllow(許可)されます(Effectのところをdenyにした場合は逆にdeny(拒否)されます)
操作を絞るならActionのところを適切に設定してください。
参考までに記載のURLにあるポリシーを解説しておくと
Statementの1つ目でListAllMyBuckets(バケットの一覧取得)、GetBucketLocation(バケットのリージョン取得)を全てのリソースに対して許可しています。
2つ目でbucket-name
バケットに対してListBucket(バケットの中身の一覧取得)を許可しています。ConditionのところでS3prefixの条件を指定し、さらに特定のディレクトリ(※)に絞っています。
※便宜上ディレクトリと記載しますが、実際にはディレクトリという概念とは異なります。
参考サイト
3つ目でS3の全ての操作を、bucket-name
バケットの各ユーザのディレクトリに対して許可しています。
json
1{
2 "Version": "2012-10-17",
3 "Statement": [
4 {
5 "Effect": "Allow",
6 "Action": [
7 "s3:ListAllMyBuckets",
8 "s3:GetBucketLocation"
9 ],
10 "Resource": "*"
11 },
12 {
13 "Effect": "Allow",
14 "Action": "s3:ListBucket",
15 "Resource": "arn:aws:s3:::bucket-name",
16 "Condition": {
17 "StringLike": {
18 "s3:prefix": [
19 "",
20 "home/",
21 "home/${aws:username}/*"
22 ]
23 }
24 }
25 },
26 {
27 "Effect": "Allow",
28 "Action": "s3:*",
29 "Resource": [
30 "arn:aws:s3:::bucket-name/home/${aws:username}",
31 "arn:aws:s3:::bucket-name/home/${aws:username}/*"
32 ]
33 }
34 ]
35}
参考になりましたら幸いです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。