S3のブロックパブリックアクセスが怖くなくなった【AWS S3】
設定画面の日本語の意味が理解できない
この画面。
S3これから使っていこうというユーザーの心を闇へ引きずり込み、そっとキャンセルボタンへマウスカーソルを誘導する設定画面だと思います。
S3の基礎なのかもしれませんが、すごく分かりづらい。
アクセス許可の種類
ブロックパブリックアクセスの説明の中にいくつか重要な単語が出てきていたかと思います。
- パブリックバケットポリシー
- アクセスポイントポリシー
- アクセスコントロールリスト(ACL)
これらは、S3にはいくつかアクセス許可の手段がありそれらを制御するためのポリシー類になります。
これを絵するときっとこんな感じです。(間違ってたらごめん)
インターネットやVPCなどからアクセスする際には必ずどこかのポリシーを経由しアクセスされるわけです。
ちなみに、AWSのコンソール上からのアクセスはどこ?となるのですが、ACLになります。
デフォルトでACLにはバケットの管理者には読み書きのポリシーが付与されているので、リソースへのアクセスができるわけなんですねー。
ブロックパブリックアクセスは見た目が怖いだけ
もう一回ブロックパブリックアクセスへ戻ってきましょう。
...見た目怖くないですか?
なんかONにしてはいけない設定のようだと最初思いました。
S3に限らない話ですが、AWSリソースへ操作は許可性になっています。
実はこの設定、許可の許可みたいな設定になっていてブロックパブリックアクセスのチェックをすべて外しても、実はバケットの所有者以外誰もアクセスできない状態なのです。
試しにすべてチェックを外すと、アクセス許可の概要に以下の文言が出ます。
「オブジェクトは公開することができます」
だそうです。
つまり、まだ公開されていないということ。
さて、各設定を読み解いていきます。
「任意の...」とは?
まずは4つの設定のうち「新しい」とついていない以下の2つを、先程の絵に当てはめてみます。
- 「任意のアクセスコントロールリスト(ACL)を介して...アクセスをブロックする」
- 「任意のパブリックバケットポリシーまたはアクセスポイントポリシーを介して...アクセスをブロックする」
どうでしょう。
少しシンプルになりましたかね?
3つあるアクセスポリシーの設定自体をブロックするか否かの設定であるということです。言葉にするとよくわかりませんね。設定の設定みたいなニュアンスです。
「新しい...」とは?
次に4つの設定のうち「新しい」とついている以下の2つ見ていきます。
- 「新しいアクセスコントロールリスト (ACL) を介して...アクセスをブロックする」
- 「新しいパブリックバケットポリシーまたはアクセスポイントポリシーを介して...アクセスをブロックする」
絵に当てはめる前に「新しい」って?
こんな説明が書かれています。
S3 は、新しく追加されたバケットまたはオブジェクトに適用されたパブリックアクセス許可をブロックし、既存のバケットおよびオブジェクトに対する新しいパブリックアクセス ACL が作成されないようにします。この設定では、ACL を使用して S3 リソースへのパブリックアクセスを許可する既存のアクセス許可は変更されません。
恐らくこんなフローが想定されているのだと思います。
1.バケット作成
↓
2.「パブリックアクセスブロック」すべてOFF
↓
3.ACLを設定変更(例えば、「AWSアカウントを持つすべてのユーザー」にリスト取得権限付与)
↓
4.バケット所有者が「新しいアクセスコントロールリスト (ACL) を介して付与されたバケットとオブジェクトへのパブリックアクセスをブロックする」をON
↓
5.誰かがACLを追加で設定(例えば、「AWSアカウントを持つすべてのユーザー」にオブジェクト読み込み権限付与)
このケースでは⑤の操作をする際にエラーで設定変更が弾かれます。
これは④の操作でバケットに対する新規ポリシーの付与がブロックされている為に起こる現象です。
つまり「新しい...」でブロックするのはバケットに対するポリシー付与の操作自体になります。
ユースケースとしては意図しない操作を防ぐ場合などでしょうか
これを踏まえて絵に当てはめてみます。
これで少しは謎が解けたのではないでしょうか。
あの複雑怪奇な説明も絵に当てはめてみると意外とシンプルで理にかなった設定だと分かるのではないでしょうか。
まとめ
最初はパブリックアクセスブロックの設定が意味不明すぎて操作したくなかったですが、今はそんなに怖くありません。
恐らくですが、あのコンソール画面の日本語と、4つの設定を一括にするチェックボックスが理解を妨げているのではないかと思います。そもそも、4つの設定は"アクセスに対するブロック"と"ポリシー操作に関するブロック"に分類できますので横並びにすべき設定ではないかと思う次第です。
Discussion