業務で使っているインフラ (AWS) に対して、たまに日本のリソースに対して海外の IP からスパムリクエストや明らかな攻撃が来ることがある。リクエスト元 IP が分散していない場合は IP ベースでブロックで十分である。ブロックするレイヤーはいくつかあるが、最近だと VPC の NACL で ban することが多い。NACL の操作を誤ると事故になりかねないので、業務ではセカンドオピニオンも取り入れつつ操作している。攻撃が判明する度に VPC のコンソールを開きつつチャットで誰かの意見を求めるというのは非効率なので、なんらかのソフトウェアを書くことでいい感じにしたいと思っていた。
そこで昨年末に banacle を書いた。雰囲気は README で分かってもらえると思う。Slack の Slash Command と Interactive Message を利用して、セカンドオピニオンを取り入れる仕組みになっている。先日業務で実際に導入してみて結構便利そうだったので記事にした。Approve するユーザを制限する拡張を用意しており、リクエストは誰でもできる一方で SRE 以外は approve できないロジックを足している。