こんにちは!サーバーワークスの松井です!
今回は、Amazon S3のパブリックアクセスブロックを有効化するとどうなるのかを検証してみたいと思います。
AWS公式ドキュメントには、以下の機能であると記載がありますが、実際にどのように制限がかかるサービスなのかイメージがつかない方もいるのでは?と思い実際に有効になる前と後を検証したいと思います。
すべての S3 バケットとオブジェクトへのパブリックアクセスを確実にブロックするには、「すべてのパブリックアクセスをブロック」を有効化します。
これらの設定は、アカウント全体の既存および将来作成するバケットに適用されます。
S3 マネジメントコンソールでの数回のクリックで、S3 パブリックアクセスブロックをアカウント内のあらゆるバケット (既存のバケットと今後作成する新しいバケットの両方) に対して適用でき、オブジェクトにパブリックアクセスが発生しないよう設定できます。
パブリックアクセスブロックの概要
Amazon S3のパブリックアクセスブロックは、ざっくり言うとバケットポリシーが不正に書き換えられ、バケット内のオブジェクトが公開されることを防ぐ機能です。
有効にする前
マネージメントコンソール上でAmazon S3は、以下のようになっていることを確認してください。 この状態でパブリックアクセスが出来るように設定するバケットポリシーを記載します。
バケットポリシー
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PublicRead", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::{BucketName}/*" } ] }
すると、バケットポリシーは正常に保存でき、「アクセス許可の概要」という項目が公開に変わります。
バケットが公開できるようになったことがわかります。
有効にした後
バケットポリシーは一度削除します。 その状態で、パブリックアクセスブロックを有効にします。
バケットポリシーを編集して、有効にする前と同じバケットポリシーを入力して変更ボタンを押します。
すると以下のようにアクセス許可がありませんとエラーが出力されます。
まとめ
以上より、不正にバケットポリシーが書き換えられてバケットが公開されることを防ぐのが、パブリックアクセスブロックの機能であるということがわかるかと思います。
パブリックアクセスブロックの設定を書き換えられるユーザーのみがAWSアカウントを管理している際には自制の意味しか持ちませんが、書き換えられないユーザーにバケットポリシーを変更してもらう際には有効だと思います。
こちら2018年のアップデートになりますので、もし現在パブリックアクセスブロックが無効になっており、当記事を読んで必要性を感じた方は是非有効にしてみてください。