Home > 10月 17th, 2013

2013.10.17

IAMを使ってAWS Management Consoleから特定のBucketのみ操作を許可する方法

前に書いた『IAMを使って特定の人に特定のbucketのみ操作を許可する』は操作だけの話だったんですが
AWS Management Consoleを使おうとしたらハマったのでメモ。

  1. IAMでユーザ作成。
  2. ユーザのポリシーに以下を指定
{
  "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”も追加すると操作できるようになりました。