ハマログ

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

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日


関連記事

AWS Systems Managerを利用して複数のEC2インスタンスで一括コマンド実行する

AWS Systems Managerの管理下にEC2を置くと、複数のインスタン…

Amazon EventBridgeでAuroraを自動停止する

Auroraクラスターは手動で停止できるのですが、AWSの仕様により7日後に自動…

Amazon Linux 2にSupervisorを設定する

Laravelでキューワーカー(Queue Worker)を実行するために、Am…


← 前の投稿

次の投稿 →