S3の特定バケットにだけアクセスできるユーザーをIAMで作成する

s3_access_limit_top

この記事には広告を含む場合があります。

記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。

特定の Amazon S3 バケットのみ接続を許可する

Amazon S3 を活用していると、このユーザーには指定した S3 バケットだけアクセスさせたい!という話は出てくるのではないでしょうか?

しかし規定されている権限は、全ての S3 バケットに対する機能のみ定義されています。

例えば S3 バケットを操作する機能として、

バケットの権限
・バケット一覧を見る権限「s3:ListAllMyBuckets」
・バケットを作成する権限「s3:CreateBucket」
・バケットを削除する権限「s3:DeleteBucket」

バケット内のファイルに対する権限
・ファイルを閲覧する権限「s3:GetObject」
・ファイルの書き込み権限「s3:PutObject」
・ファイルの削除する権限「s3:DeleteObject」

などがあります。

全体を操作する方法はわかるのですが、ではどうすればバケット単位にアクセスが制限できるかを確認してみたいと思います。

 

特定の S3 バケットのみアクセスできるユーザーを作成する手順

特定の S3 バケットにアクセスできるユーザーは、通常のユーザー作成と同じく IAM を利用します。

先ほど記述したように既定の権限では対応できないので、「既存のポリシーを直接アタッチ」を選択します。
s3_access_limit1

 

ポリシーの作成に遷移するので、JSON の入力欄を開きます。
JSON に設定する内容は下記の通りです。

特定のバケットのみにアクセスできるユーザー

設定を調整したい時は、AWS 公式のバケットポリシーの定義へのリンクを貼っておきますので、確認の上で調整してください。

〇ポリシーでのアクセス許可の指定
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/using-with-s3-actions.html

s3_access_limit2

 

ポリシーの確認画面に遷移した後、作成したポリシーに対する名前を設定します。
s3_access_limit3

 

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

 

Cyberduck でファイルをアップロードするときの注意点

権限を制限した場合の注意点として、Cyberduck などのファイルをアップロードするソフトで、S3 バケットを指定せずアクセスしようとするとエラーが発生します。

「s3:ListAllMyBuckets」権限がないので、下記の赤枠で囲った部分と同じようにパスにバケット名を入力してください。
s3_access_limit_cyberduck

 

Amazon S3 にて特定のフォルダのみ編集権限があるユーザーを作成する

蛇足として
・特定の S3 バケット
・特定のフォルダ
に対してのみ編集できるユーザーを作成する方法も載せておきます。

バケットポリシーを記入する欄に下記を入力すればOKです。

特定のフォルダのみに編集権限があるユーザー

 

 

Linuxの知識については下記の本も参考になるので、スキルアップにお役立てください。

三宅 英明 (著)、大角 祐介 (著)
ページ数: 440ページ
出版社:SBクリエイティブ
発売日:2015/06/06

出典:amazon