ハマログ

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

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日


関連記事

CloudWatch Logsに文字列を送ってみる

アプリケーションのログをCloudWatch Logsに送って、そのログをLam…

GCPでLaravelのログ監視を行う方法

GCPでアプリケーションのログに特定の文字列が出てきたら検知して通知する方法を調…

CloudWatch Alarmの一時停止

CloudWatch Alarmを削除ではなく、一時停止する方法の備忘録です。 …


← 前の投稿

次の投稿 →