見出し画像

AWSでSlackへのPOST先を制限しようとする素人の物語 第1章 ~失敗こそ学び~

0. はじめに

今年の7月にAWSアソシをギリで取得した初心者が、AWSでそれっぽいことをする奮闘記である。
言いたいことは、AWS初心者でも調べる&触るを繰り返せば、それっぽいこと出来ちゃうよ、やってみよう!ってこと。

ちなみに、これはうまくいかなかった失敗ルートです。
失敗ルートを歩んだけど、HPが0になってゲームオーバーになったわけじゃないから、そこで得た経験値はありがたく自分のものになったので、セーブしとこう。


1. やりたいこと

情報流出を防ぐために、みんなで作るLambdaのPOST先をSlackだけにシステム的に絞りたい。
ただし、いくつかの条件がある。(この条件も調べてから知った)

条件
・SlackのIPアドレスの範囲は非公開のため、L4レイヤによる
 IPアドレスのフィルタリングでは難しい。
・現在、AWSサービスでWebフィルタリングする機能はない。(出口側)


2. 絵にする

いきなりこれが出来たわけではないけど、こんな構成図を考えました。

画像1


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つの手だけど、いかんせんそこには色んなハードルがある。

ドラクエをまともにやったことがないので、こういう時に大変。

ということで、相談をして、他の道を推奨。
ってことで、そちらの道を歩むことにした。

それはまた、別のお話で。

あわあわ…どうしよう