ハマログ

株式会社イーツー・インフォの社員ブログ

Cloud Armorの設定とロギング

Google Cloud PlatformのWAFマネージド・サービスであるGoogle Cloud Armorを設定します。設定だけだとルールでブロックされたときにどのルールに抵触したのか調査することができないため、Google Cloud Loggingにログ出力されるようにしておきます。

Google Cloud Armor の事前構成済みのルール

事前に構成されたルールは、以下のURLに記載があります。
Google Cloud Armor WAF ルールのチューニング
SQLインジェクション対策のsqli-stable、XSS対策のxss-stableなどがあります。また、ルールには”stable”と”canary”という名前の2種類があります。stableは安定版、canaryは最新版です。

WAFの設定

Cloud Armor設定画面に移動します。

ルールを追加

モードを詳細モードに変更した後、ルールに以下のように入力します。
evaluatePreconfiguredExpr('【適用するルール名】')
例:xss-canaryを設定する
evaluatePreconfiguredExpr('xss-canary')
設定例
1つのルールに複数のマネージドルールを指定する場合は、ルールを||で区切ります。

evaluatePreconfiguredExpr('xss-canary') || evaluatePreconfiguredExpr('cve-canary')
想定通り拒否されました。

ログの設定と確認

ログ出力の設定をします。
Cloud Load Balancing→バックエンド→サービスを選択
ロギングを有効にします。ここではサンプルレートは1に設定しますが、本番運用時はサービスの特性に合わせた数字を設定します。
ログを見ます。Cloud Armorの画面から、ログ→ポリシーログを表示を選択。
ログが出力されました。
以下のクエリが指定されています。
resource.type:(http_load_balancer) AND jsonPayload.enforcedSecurityPolicy.name:(cloud-armor-staging)
ブロックログのみ絞り込みます。
以下のページを参照
クエリ
resource.type:(http_load_balancer) AND jsonPayload.enforcedSecurityPolicy.name:(cloud-armor-staging) AND jsonPayload.statusDetails="denied_by_security_policy"
owasp-crs-v030001-id942420-sqli
でブロックされていることがわかりました。
除外する場合
evaluatePreconfiguredExpr('sqli-stable', [
 'owasp-crs-v030001-id942200-sqli'
])
まとめ
WAFはかなり便利だけど、運用が大変。
Cloud ArmorFirewallGCEGCPload balancerWAFロードバランサー

  kaneko tomo   2022年1月22日


関連記事

Let’s EncryptのCertbotを アップデートする(ACMEv1の無効化対応)

Let’s Encryptからメールがきました。ACMEv1というプ…

AWSでnginxを使う

こんにちは池島です。またもやご無沙汰です。 最近はAWSの環境設定ばかり見ていま…

Savings Plansってなんだんねん。

これまでインフラに乗っかるものを作成しておまんまの種にしてきましたが、E2inf…


← 前の投稿

次の投稿 →