Amazon IAM編 S3バケット内特定フォルダだけ操作するIAMポリシー

こんにちは!Narimasaです!

今回は「Amazon IAM編~S3バケット内特定フォルダだけ操作するIAMポリシー~」と題してCloudBerryやCyberduck等からS3バケット内の特定フォルダだけ操作できるIAMポリシーの設定方法を紹介します。

Amazon IAMの基本的な使い方についてはこちらの記事を御覧下さい。

【動画】Amazon IAM編~IAMを使ってみよう!

S3バケット内の特定フォルダへのアクセス

容量がほぼ無制限のS3ですが、1アカウントあたりでバケットが100個しか作れないこともあって、バケット内に多数フォルダを設けて使用している方も多いと思います。

しかし、IAMユーザーを管理する場合、特定のフォルダだけ操作させて、他のフォルダを操作させないようポリシーを設定することが望ましいです。

そこで今回は、CloudBerryやCyberduck等の外部ツールからのアクセスを想定したIAMポリシーを紹介します。

IAMポリシー

今回の構成環境は下図の通りとなっています。

bucket

そして、バケット内のtest1フォルダのみ操作できるIAMポリシーは以下のものになります。

1{2  "Version": "2012-10-17",3  "Statement": [4    {5      "Effect": "Allow",6      "Action": [7        "s3:ListBucket",8        "s3:GetBucketLocation"9      ],10      "Resource": "arn:aws:s3:::recipe-bucket"11    },12    {13      "Effect": "Allow",14      "Action": [15        "s3:PutObject",16        "s3:GetObject",17        "s3:DeleteObject"18      ],19      "Resource": "arn:aws:s3:::recipe-bucket/test1/*"20    },21    {22      "Effect": "Deny",23      "Action": [24        "s3:PutObject",25        "s3:GetObject",26        "s3:DeleteObject"27      ],28      "NotResource": "arn:aws:s3:::recipe-bucket/test1/*"29    }30  ]31}

このIAMポリシーは大きく分けて3つのステートメントで構成されています。

1つ目のステートメントでは、指定されているバケットの情報を取得します。

通常のIAMポリシーであるような、全てのバケットのリストを取得する権限は設定していないため、AWSコンソールから該当のバケットへアクセスするという動作は出来ません。

2つ目のステートメントでは、指定バケットの特定フォルダで行うことができる操作を設定しています。

一方、最後のステートメントで、特定フォルダ外での動作を明示的に拒否しています。

Cyberduckで確認

今回は外部ツールのCyberduckで設定を確認します。

Cyberduckを起動したら下図のように接続設定を行います。

作成したIAMユーザーのキー情報を入力し、パスを入力します。

Cyberduck

なお、パスを指定しなかった場合や他バケットのパスを入力した場合はエラーが表示されます。

error1

接続に成功したら下図のようにバケット内のフォルダ等が表示されます。

success

test1フォルダではファイルのアップロード等の操作が可能です。

test1
一方、test2フォルダでは操作を許可していないため、アップロードも出来ません。

一方、test2フォルダでは操作を許可していないため、アップロードも出来ません。

test2
いかがでしたでしょうか。AWSコンソールにアクセスしないような外部ユーザーにもこのポリシーは有用なので、是非ご利用下さい!次回もお楽しみに!!

この記事を書いた人

aws-recipe-user