Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

AWSで自作CGIをサーバレス実装してみた ~その2~

2,051 views

Published on

JAWS-UG福岡:また濃い目にAWSの話をしてみよう
LTにて

Published in: Technology
  • Be the first to comment

  • Be the first to like this

AWSで自作CGIをサーバレス実装してみた ~その2~

  1. 1. AWSで自作CGIをサーバレス実装 してみた 〜その2~ 株式会社クリック 夏目 祐樹 (NATSUME YUTA)
  2. 2. 自己紹介 • 夏目 祐樹 (ナツメ ユウタ) • HN: 斗山新一、水菱啓、ルシフ • Twitter: @sinofseven • Facebook: yuta.natsume.5 • もうすぐ新卒二年目になる新人SE • 副業で、音ゲーマーと プロデューサーと提督をやっている
  3. 3. 自作CGIのサーバレス実装 間に合いませんでした
  4. 4. AWS WAF • Web Application Firewall • Webアプリケーション(Cloud Front)を対象とした 悪意あるリクエストを検出しブロックする。 • ACL (Access Control List), Rule, Condition の三つの要素から成り立つ。
  5. 5. WAF 全体イメージ Cloud Front WAF ACL Rule Condition cf01 cf02 cf03 ACL02 ACL01 Rule01 Rule02 Rule03 Condition01 Condition02 Condition03 Condition04
  6. 6. Condition (1/2) • Ruleを構築するための条件(Condition)。 • 種類は次の4つ。 ・IP addresses CIDR形式(172.31.51.22/32 とか) ・SQL injection ・String matching ・Size constrains • 各Conditionの中で複数のFilter(条件)を持つことができる(たぶんOR結合)。 • IP addresses以外は文字列にある程度の変更ができる。 小文字に変換したり、URIデコード
  7. 7. Condition (2/2) String matching & Size constraints < Strimg matching > • 比較する文字列は5つから選択。 ・URI ・HTTP method ・Query string ・Header ・Body • Base64エンコード済みでも使える。 • 文字列の比較は、完全、部分、前方後方一致、単語を含むから選択できる。 < Size constraints > • サイズを確認できる対象は5つ(String matchingと同じ) • サイズの比較は, ==, !=, <, <=, >, >=ができる(基本的な比較演算子はできる)。
  8. 8. Rule • Ruleと言いながら結局は条件だったりする。 来たリクエストが指定したConditionを満たすか満たさないかしか判断できない。 (判断して指定した内容を満たせはTRUEを返すイメージ) • Conditionは種類にかかわらず複数指定できる。 (これはAnd結合される)
  9. 9. ACL • これをCloudFrontに紐付ける • Ruleを満たすリクエストを”Allow”, “Block”, “Count”するか指定する(Action)。 • RuleにはOrderがあって、範囲の広さなどによって順番を調整する、たぶん。 IP addressのブロックは、狭いallow, 広いdenyの順番で書くってどっかにあった。 • Ruleを満たさないリクエストに対するDefault Actionを指定する。 Allow all requests that don‘t match any rules: 満たさないリクエスト許可 Block all requests that don’t match any rules: 満たさないリクエスト拒否 • CloudWathのメトリクスが自動的に登録されるのでログをみることができる。
  10. 10. まとめ • WAFはACLとRuleとConditionで構成される。 • CloudFrontはACLと紐付ける。 • Conditionは複数のFilterで構成され、OR条件で結合する。たぶん。 • Ruleは複数のConditionで構成され、AND条件で結合する。 • ACLは複数のRuleで構成され、オーダーとActionを指定し使用する。 (オーダーの詳細は未検証) • WAFのログはCloudWatchで見れる。たぶん。 • ACL一つにつき$5, ACLのRule一つにつき$1, 1 million Requestにつき$0.6、 個人的にしようするには若干高い。 (ACLに紐付けてないRuleや複数のACLに紐付けたRuleの料金はどうなるんだ?) • 使ってみると、非常に使いやすい。

×