はじめに
AWS S3では、バケットポリシーを使用することで、S3バケットに対するアクセス制御を細かく設定できます。
個人の備忘録程度の走り書きとなっておりますが、温かい目で見守っていただければ幸いです。
本記事では、バケット内のファイルを誰でも読み取れるようにするポリシーの例と、その意味について解説します。
ポリシー内容
以下は、dev-s3-content
という名前のS3バケット内のすべてのオブジェクトに対して、誰でも(匿名ユーザーを含む)読み取りを許可するバケットポリシーです。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::dev-s3-content/*"
}
]
}
各項目の解説
-
Version
: ポリシー言語のバージョン。通常は"2012-10-17"を指定。 -
Statement
: アクセス制御の定義ブロック。-
Sid
: 任意の識別子。ログや管理目的に使える。 -
Effect
: "Allow"は許可、"Deny"は拒否を意味する。 -
Principal
:"*"
はすべてのユーザー(匿名を含む)を指す。 -
Action
:s3:GetObject
はオブジェクトの取得(ダウンロード)を許可。 -
Resource
: アクセスを許可するリソース。/*
はバケット内のすべてのファイルを対象とする。
-
注意点
- この設定を行うと、インターネット上の誰でもバケット内のオブジェクトにアクセスできるようになります。
- 静的ウェブサイトホスティング用途などでよく使われますが、機密情報や個人情報を含むデータには絶対に使わないようにしましょう。
まとめ
このポリシーは、静的ファイルを公開する場合などに便利ですが、セキュリティリスクも伴います。
用途を明確にしたうえで、アクセス制御を慎重に設定することが重要です。
個人の備忘録として、S3のアクセス制御の理解を深める一助となれば幸いです!