見出し画像

AWS:CloudFormation~S3の書き方1(つまづくとこ)

みなさん、おはようございます!

今日は、S3のcloudformationの書き方をサラサラーっと備忘録としてまとめていこうと思いますが、大抵のSEの方はそんなんしっとるわ!!!ってなると思うんですね汗
で、具体的に書き方というよりは知らずに書いてつまるところっていう意味でマネコンだと詰らないんだけど、IaCだと詰るよ!ってところを書いていこうと思います。

早速ですが、S3に何かしらの制限をかけたいとかアクセスを制御したいとかある場合って概ね選択肢って以下だと思います。
・パブリックアクセスをNGにする(マネコンでチェックを入れる)
・S3バケットポリシーでごりごりに制御する

繰り返しますが、マネコン上だと上記2つの設定を同時並行でかけることって別に造作もなく普通にできちゃうんですが、cloudformationだとそうも行かないってのがポイントです。

では、おさらいですがマネコン上でいうところのパブリックアクセスの設定部分ってこちらになりますが

この部分ってcloudformationでいうところのこのPublicAccessBlockConfigurationセクションに該当します。

この設定単独であれば基本的にどうということはありませんが、心配性の私やクライアントの要望があったりでバケットポリシーとこのパブリックアクセスをNGにしてほしいということがママあったりします。
→両方を同時にコードで再現し、テンプレートをそのまま流すとバケットポリシーのところでNGが出ます。。泣(何度詰まったことか、、、)

そうしたときにIaCでそれをどう表現し、スタックとして成立させるのか?というのがポイントなのですが、やり方は以下です。

①一旦PublicAccessBlockConfigurationの項目を全てfalseにします

⑤その後改めて既存のスタックを更新する
※理由はわからないのですが一度埋め込まれたバケットポリシーがパブリックアクセスNG設定の邪魔をするということはあまりなく、同時並行で実施しようとした際に悪さをするようで結構面倒です。
上記の流れをとっていただければ、バケットポリシーとパブリックアクセスNG設定は両立することが可能となります。

具体的にAWSなどへ確認を行ったことはないのですが、個人的な推測としてバケットポリシーできっちり制御する、もしくは面倒ならパブリックアクセスでアクセスを大まかに制御するの2択の内1択を選んでがんばりなさいよ!ってことなのかな?と考えています。(おそらく両立させると、結構バケットポリシーを作りこんでいるものだと、パブリックアクセス設定が悪さをしはじめる?!からとか思ってます)

あと、よくアルアルというか携わっていたPJとかで有資格者(一応SAP持ち)なんだけど、頭でっかちの方だったり、S3について知らない人なんて言う方がいらっしゃると、時たま聞かれるんですがばけっポリシーを設定していないけど、パブリックアクセス設定もOFFにしちゃってるけど大丈夫?なんていう話を聞くことがあります。
場合によりますが、心配な場合はまずこちらを確認しましょう。

これが意味するところってまんまなんですが、完全なパブリックアクセスのACL設定なんですね。
このキャプチャのバケットは、今だとパブリックアクセス設定OFF、バケットポリシー設定皆無となっていますが、この赤枠の部分に例えば、「オブジェクト:書き込みor読み込み」または、「バケットACL:書き込みor読み込み」なんていう設定は入っていませんよね?

この状態であれば、一応首の皮一枚で完全なパブリックアクセスができる状態にはなっていないのでご安心ください。※単純にインターネット越しにこのバケットを見ることもオブジェクトも触ることもできないという意味で

なのでこういった点に考慮しながら、バケット設計やデプロイを検討していきましょう。

2021年10月10日

以下、宣伝です。
仲間も募集中なので、気になる方は↓の記事を覗いてみてくださいませ。
いい会社だと思いますよ。

いいなと思ったら応援しよう!