2013.10.17
前に書いた『IAMを使って特定の人に特定のbucketのみ操作を許可する』は操作だけの話だったんですが
AWS Management Consoleを使おうとしたらハマったのでメモ。
- IAMでユーザ作成。
- ユーザのポリシーに以下を指定
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:ListAllMyBuckets"
],
"Sid": "Stmt1382001691000",
"Resource": [
"*"
],
"Effect": "Allow"
},
{
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Sid": "Stmt1382001709000",
"Resource": [
"arn:aws:s3:::hoge-bucket"
],
"Effect": "Allow"
},
{
"Action": [
"s3:*"
],
"Sid": "Stmt1382001730000",
"Resource": [
"arn:aws:s3:::hoge-bucket/*"
],
"Effect": "Allow"
}
]
}
以上。
ハマったところは
“arn:aws:s3:::hoge-bucket”に対する操作に”s3:ListBucket”を指定するよう書いてるサイトが多いんですが
試したところ、これだけだとバケットを開こうとすると
“Sorry! You were denied access to do that.”
とエラーメッセージが出ます。
AWS Management Consoleでアクセスできるようにするには
“s3:GetBucketLocation”も追加すると操作できるようになりました。
2012.03.19
S3を使う時に特定の人に特定のbucketだけを許可したい場合。
- AWS Management Consoleにログイン
- IAMタブを開く
- Groupsで「Create New Group」をクリックしWizardを開く
- Select Policy Templateで「Amazon S3 Full Access」を「Select」
- 下記の内容にPolicy Documentを修正
- 「Continue」をクリック「Create Group」でグループを作成
- 作成したグループに権限を割り当てたいユーザを加えて完了
Pollcy Documentはこんな感じ
{
“Statement”: [
{
“Effect”: “Allow”,
“Action”: “s3:*”,
“Resource”: “arn:aws:s3:::hoge.bucket.hoge”
},
{
“Effect”: “Allow”,
“Action”: “s3:*”,
“Resource”: “arn:aws:s3:::hoge.bucket.hoge/*”
}
]
}
デフォルトではs3の全てのアクションが全てのリソースに対して許可されたものが作成されます。
そこでテンプレのResourceを修正して特定のbucketのみに変更。
ARNはAmazon Resource Nameの略でリソースを指定していることを表してるようです。
続いてawsのs3を指定しています。
そのあと:を3つ続けbucketを指定します。
ここで一つ目には
arn:aws:s3:::hoge.bucket.hoge
を指定。
これはbucket内のファイルリストの表示などbucketを指定しての操作を許可してます。
続いてコピペでもうひとつ作って修正。
変更点は
arn:aws:s3:::hoge.bucket.hoge/*
とResourceに bucket/* を指定することで
bucket内のオブジェクト全てに対する操作を許可してます。
これでダウンロードやアップロードが可能になるみたい。
何ができるか、についてはActionを指定するらしい(やってない)。