この記事には広告を含む場合があります。
記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
目次
特定の Amazon S3 バケットのみ接続を許可する
Amazon S3 を活用していると、このユーザーには指定した S3 バケットだけアクセスさせたい!という話は出てくるのではないでしょうか?
しかし規定されている権限は、全ての S3 バケットに対する機能のみ定義されています。
例えば S3 バケットを操作する機能として、
・バケット一覧を見る権限「s3:ListAllMyBuckets」
・バケットを作成する権限「s3:CreateBucket」
・バケットを削除する権限「s3:DeleteBucket」
〇バケット内のファイルに対する権限
・ファイルを閲覧する権限「s3:GetObject」
・ファイルの書き込み権限「s3:PutObject」
・ファイルの削除する権限「s3:DeleteObject」
などがあります。
全体を操作する方法はわかるのですが、ではどうすればバケット単位にアクセスが制限できるかを確認してみたいと思います。
特定の S3 バケットのみアクセスできるユーザーを作成する手順
特定の S3 バケットにアクセスできるユーザーは、通常のユーザー作成と同じく IAM を利用します。
先ほど記述したように既定の権限では対応できないので、「既存のポリシーを直接アタッチ」を選択します。

ポリシーの作成に遷移するので、JSON の入力欄を開きます。
JSON に設定する内容は下記の通りです。
〇特定のバケットのみにアクセスできるユーザー
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::(バケット名)",
"arn:aws:s3:::(バケット名)/*"
]
}
]
}
設定を調整したい時は、AWS 公式のバケットポリシーの定義へのリンクを貼っておきますので、確認の上で調整してください。
〇ポリシーでのアクセス許可の指定
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/using-with-s3-actions.html
ポリシーの確認画面に遷移した後、作成したポリシーに対する名前を設定します。

ポリシーの一覧に作成したポリシー名が追加されるので、選択すれば設定完了です。

Cyberduck でファイルをアップロードするときの注意点
権限を制限した場合の注意点として、Cyberduck などのファイルをアップロードするソフトで、S3 バケットを指定せずアクセスしようとするとエラーが発生します。
「s3:ListAllMyBuckets」権限がないので、下記の赤枠で囲った部分と同じようにパスにバケット名を入力してください。

Amazon S3 にて特定のフォルダのみ編集権限があるユーザーを作成する
蛇足として
・特定の S3 バケット
・特定のフォルダ
に対してのみ編集できるユーザーを作成する方法も載せておきます。
バケットポリシーを記入する欄に下記を入力すればOKです。
〇特定のフォルダのみに編集権限があるユーザー
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::(バケット名)"
]
},
{
"Effect": "Deny",
"Action": [
"s3:DeleteBucket",
"s3:CreateBucket"
],
"Resource": [
"*"
]
},
{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": [
"arn:aws:s3:::(バケット名)/*"
]
},
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::(バケット名)/(フォルダ名)/*"
]
}
]
}



