前回のポストから3ヶ月も空いてしまいました。花粉症のせいで生産性が大変落ちているyuku_tasです。
家の中にいれば心も穏やか。甜茶が効くらしいのでよろしければお試しください。
プログラマーの皆様はこの頃、いかがお過ごしでしょうか。
概要
Web制作において簡単な画像置き場を作成する。
クラウドストレージとしてAWS S3を利用しますが、その際のセキュリティ設定手順を解説する。
要件
あるサイトを作成するにあたり、S3を画像置き場にする必要が生じました。
画像を設置するにあたっては、AWSのマネジメントコンソールを経由するのではなく、作業者(非エンジニア)の方に ツールを使って設置を行っていただく想定です。
このような場合、 IAMユーザー を用途ごとに作成し適切なセキュリティ設定を行う必要があります。
S3バケットを作成
まずS3バケットを作成します。Amazon S3 コンソール こちらから作成します(東京リージョン・大阪の場合は右上から切り替えてください)
「バケットを作成」をクリック
バケット名: (任意のお名前) 重複する名称は許可されないので、誰が作ったバケットとも被らない名前を指定してください
オブジェクト所有者: ACL無効(推奨)

で進めます。
パブリックアクセスを一部外す
このバケットのブロックパブリックアクセス設定: パブリックアクセスをすべて ブロック が初期設定になっているかと思いますが、こちらのうち、下2つを外します。

下の2つは、部分的にアクセスを許可する設定をできるようにするために、厳しすぎるガードを一部緩める 設定になります。
あとはデフォルトのままページ下部に進み、「バケットを作成」を押します。

S3バケットに設定を行うところを確認
S3のトップページ => バケットを選択し、その画面で「アクセス許可」タブをクリックします。
すると、下記のような画面となります。

このページのうち、
- バケットポリシー
- Cross-Origin Resource Sharing (CORS)
の2つを後で変更するので、一旦はこのページから離れても大丈夫です。
IAMユーザーを作成
IAMユーザーの設定画面に移動します。

右上「ユーザーの作成」に移動します。
ユーザー名は任意のものを。次の画面の許可設定ですが、
何もポリシーを与えず、そのまま次の画面に進んでください。 後ほど、先ほど作成したS3バケットのみ許可をする設定を、json形式というテキストにより設定することで対応できますので 安心してください。

そのままでOK
次の画面で 「ユーザーの作成」 をクリック

許可ポリシーを事後的に追加
一覧に戻ってくるので、作成したばかりのユーザーをクリック。

この画面で、 「許可を追加」 をクリックします。

クリックした直後に 「インラインポリシーを追加」 を選択。
この画面で次は、「ビジュアル」=> 「JSON」 にタブを動かし、添付のように設定を行います。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:ListAllMyBuckets",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:ListBucket",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::[yourbucketname]",
"arn:aws:s3:::[yourbucketname]/*"
]
}
]
}

「次へ」を押し、さらにその次の名前で ポリシー名 を設定します。私は、ユーザー名に加えて 「moldspoon-test-static-files-policy」のように名称をつけています。

設定が終わると現時点ではこのようになっているはずです。

まとめ
少し長くなったので、第2回の記事に分割しようと思います。恐れ入りますが少々お待ちをいただければと...。
弊社ではこのような新しい技術を通じたWebサービスの開発・保守・運営を承っておりますので 御用の際にはぜひお申し付けくださいませ。
参考URL: モルドスプーン株式会社
この記事が何かのお役に立てれば幸いです。
最後までお読みいただきありがとうございました!