読者です 読者をやめる 読者になる 読者になる

IAMでワイルドカード指定のS3バケット名にのみアクセス権限を与える

AWS

タイトルのようなことがしたかったので,実際に自分のアカウントで試してみた.

やりたいこと

以下のような S3 のバケットが存在していた場合に "s3-kakakakakku-hatenablog-com" を含むバケットだけにワイルドカード指定でアクセス権限を与える.

  • s3-kakakakakku-hatenablog-com-1
  • s3-kakakakakku-hatenablog-com-2
  • s3-kakakakakku-no-permissions

IAMでGroupsとUsersを作成する

事前準備として.

  • Group
    • S3-Only
  • User
    • s3-kakakakakku

Policyを設定する(ワイルドカード指定なし)

まずは "s3-kakakakakku-hatenablog-com-1" だけにアクセス権限を与えてみる.

"IAM users sign-in link" から s3-kakakakakku でログインして S3 にアクセスしてみると,"s3-kakakakakku-hatenablog-com-1" にアクセスでき,その他はエラーが出た.

Sorry! You were denied access to do that.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListAllMyBuckets"
      ],
      "Resource": "arn:aws:s3:::*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:*"
      ],
      "Resource": [
        "arn:aws:s3:::s3-kakakakakku-hatenablog-com-1"
      ]
    }
  ]
}

Policyを設定する(ワイルドカード指定あり)

今度はワイルドカード指定をして "s3-kakakakakku-hatenablog-com" を含んだバケットにアクセス権限を与えてみる.

さっきと同じように "IAM users sign-in link" から s3-kakakakakku でログインして S3 にアクセスしてみると,"s3-kakakakakku-hatenablog-com-1" と "s3-kakakakakku-hatenablog-com-2" にアクセスでき,その他はエラーが出た.

Sorry! You were denied access to do that.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListAllMyBuckets"
      ],
      "Resource": "arn:aws:s3:::*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:*"
      ],
      "Resource": [
        "arn:aws:s3:::s3-kakakakakku-hatenablog-com-*"
      ]
    }
  ]
}

問題なくできそうなことがわかって良かった!

関連エントリー

AWS Identity and Access Management (IAM) ドキュメント | アマゾン ウェブ サービス(AWS 日本語)
IAMを使って特定の人に特定のbucketのみ操作を許可する | kirie.net blog
amazon S3 のアクセス制御をIAMポリシーで行うメモ - teketeke_55の日記