AWSでSlackへのPOST先を制限しようとする素人の物語 第1章 ~失敗こそ学び~
0. はじめに
今年の7月にAWSアソシをギリで取得した初心者が、AWSでそれっぽいことをする奮闘記である。
言いたいことは、AWS初心者でも調べる&触るを繰り返せば、それっぽいこと出来ちゃうよ、やってみよう!ってこと。
ちなみに、これはうまくいかなかった失敗ルートです。
失敗ルートを歩んだけど、HPが0になってゲームオーバーになったわけじゃないから、そこで得た経験値はありがたく自分のものになったので、セーブしとこう。
1. やりたいこと
情報流出を防ぐために、みんなで作るLambdaのPOST先をSlackだけにシステム的に絞りたい。
ただし、いくつかの条件がある。(この条件も調べてから知った)
条件
・SlackのIPアドレスの範囲は非公開のため、L4レイヤによる
IPアドレスのフィルタリングでは難しい。
・現在、AWSサービスでWebフィルタリングする機能はない。(出口側)
2. 絵にする
いきなりこれが出来たわけではないけど、こんな構成図を考えました。
3. 歩んだ道
やりたいことと「LambdaをVPCに入れたら出来るんじゃない」っていう
話を聞いてから、どんな道を歩んだのか、ってのを絵を交えてダラダラと
書きます。
① 誕生 : day1
誕生である、さぁ道を進もう、、いえいえ生まれたて。
なんとなく出来そうってのは分かってたけど、概念レベル。
セキュリティグループで簡単に出来るんじゃない?って、生まれたて。ようこそ!
そもそも、LambdaをVPC内に入れて、やりたいことがなんで出来るんだっけ?っていう状態。
上の構成図のPoint1の部分。
その時のメモたち:まずLambdaってデフォルトはVPCの外にあるんだ!そんなところから。
APIのエンドポイントタイプをリージョン ⇒ プライベートにするのかな?
ん?違う?VPCからアクセスしたいわけではないよな。。。つまり最初はパブリックで良い。で、その連携Lambdaもパブリック。
LambdaもAPIGWもDyanamoも全部VPCの外にいる・・・から?
ん?VPCでの制御云々ではないはず。
https://qiita.com/saitotak/items/d2ede050e7a2224da46d
色々とメモが長すぎて、ここにはやっぱり貼らない!
② 産声:day2
生まれたので、何しよう。よし、泣こう!おぎゃぁおぎゃぁ。
プロキシサーバってヒントを得たので、そこを中心的に調べてみる。
上の構成図のPoint.2の部分。ようやくちょっと霧が晴れた。
フィルタリングの仕組みもないか調査したり(Amazon GuardDuty使ってみる?とか)と、
ここまでは、ひたすらググってメモに残してく活動って感じ。
利用してるのは、タスク管理ツールとTypora。
その時のメモたち:Webフィルタリングをなんとなーく理解
疑問点
・プロキシサーバを用意する理由は?
・NATインスタンスなどでは、L7レイヤのURL制御ができない。
・プロキシサーバなら…??? ← ここが??
・⇒ URLフィルタリングはProxyサーバにSquidを用いて実装
・Webフィルタリングしたいけど…
・AWSサービスでWebフィルタリングする機能はない
https://dev.classmethod.jp/articles/web-filtering-on-workspaces/
> また、AWS が提供する他のサービスでも Web フィルタリングを行うためのサービスはありません
今思うと、ここをもっとちゃんと調べりゃよかったっていう話もあるけど、それは過去の話。
③ 絵を書く:day3
さーて、進むべき絵でも描くか。急成長である。
今までの内容を図にすることで頭の整理と、俯瞰することで気付きを見つけようの期間。
利用してるのは、draw.io。
意外とここはdraw.ioのおかげだなって思った。
勿論、AWSのサービスの図があるから、とても楽ちん。ってのはあるけど、
サービスの図を選ぶときに、「え?2つあるけど、どっちを選べば良いんだ?」ってなり、そこから調査して理解するっていう流れが数度あった。
俯瞰してみると、やっぱりSlack側のIPさえ分かれば、別にこの仕組みいらないよなー。って思い、調べる。が、やはり進むべきは間違ってなさそう、そんな結論になった。
④ 実際に進んでみる:day4~6
もう歩いちゃう。さーさー、いざ参らん。
構成もある程度決まったので、構築を始める。きゅきゅっとまとめると3日間くらい?
実際は他のことをやったり、待ちだったりとで、8日間くらいはこの状態かな。
・VPC足りない問題(上限:リージョンあたり5)
・ Elastic-IP足りない問題(上限:リージョンあたり5)
・ カスタムルートテーブルとか、そもそも何を設定したらいいんだ?
進め方のポイントは、満足ポイントを如何に早め&定期的に得るかってとこ。
・ざっと全体にモノを配置していって、満足ポイントを獲得する。
・部分的に疎通していって、設定があってそうかってのを確認していく。
この期間が一番スキルとしては収穫デカいところ。
VPCのIPアドレス体系どうしようかな…とか基本的なところから、
実際にモノ触って初めて分かること多すぎる。これ、ググれる環境ないとマジ無理だ。
⑤ もっと良い道を知る:day7,8
なんとなーく感づいてたけど、行く先に大きな石ころが転がってた!さて、どうしよう。
そう、一番大事な箇所であるWebフィルタリングの部分。
ネットワーク周りは苦手…うまくいかない…これは厳しい…。
でも、きっと、こっちから見たら大きいけど実は薄ーい石なんでしょ?って思いつつ、調査。
ん?httpsでは、URLフィルタリングできない?
https://milestone-of-se.nesuke.com/sv-advanced/server-software/https-url-filter/
暗号化によりhttpヘッダの中身を見ることができません。
なるほど、、、確かに他のURLフィルタリングの記事を見ると、httpのことしか書いてない。
UTMっていう「ぎんがのつるぎ」※を入手するってのも1つの手だけど、いかんせんそこには色んなハードルがある。
ドラクエをまともにやったことがないので、こういう時に大変。
ということで、相談をして、他の道を推奨。
ってことで、そちらの道を歩むことにした。
それはまた、別のお話で。
あわあわ…どうしよう