· セキュリティ  · 7 min read

Cloud Armor でウェブアプリケーションを保護する

Google Cloud の Cloud Armor を使用してウェブアプリケーションをセキュリティ脅威から守る方法を解説します

Google Cloud の Cloud Armor を使用してウェブアプリケーションをセキュリティ脅威から守る方法を解説します

Cloud Armor の概要

Google Cloud の Cloud Armor は、ウェブアプリケーションやサービスを様々なセキュリティ脅威から保護するためのツールです。DDoS 攻撃の緩和からウェブアプリケーションファイアウォール(WAF)機能まで、包括的なセキュリティソリューションを提供します。

主な機能

  1. DDoS 攻撃対策
  2. IPアドレスフィルタリング
  3. 地理的制限
  4. カスタムルールの作成
  5. プリセットルールの適用

Cloud Armor の設定手順

1. セキュリティポリシーの作成

Google Cloud Console から Cloud Armor のセクションに移動し、新しいセキュリティポリシーを作成します。以下の手順で行います:

  1. Google Cloud Console にログインし、ナビゲーションメニューから「ネットワークセキュリティ」>「Cloud Armor」を選択します。
  2. 「セキュリティポリシーを作成」をクリックします。
  3. ポリシーの名前、説明を入力し、適用するネットワークを選択します。
  4. デフォルトルールのアクションを設定します(通常は「許可」)。

2. ルールの設定

IP アドレスのブロックや許可、特定の国からのトラフィックの制限など、必要なルールを設定します。以下は主要なルール設定の例です:

IPアドレスフィルタリング

match:
  versionedExpr: 'SRC_IPS_V1'
  config:
    srcIpRanges:
      - '192.0.2.0/24'
      - '198.51.100.0/24'
action: 'deny(403)'
priority: 1000

地理的制限

match:
  expr:
    origin.region_code == 'JP'
action: 'allow'
priority: 2000

レートリミット

match:
  versionedExpr: 'SRC_IPS_V1'
  config:
    srcIpRanges:
      - '*'
action: 'rate_based_ban'
rateLimitOptions:
  enforceOnKey: 'IP'
  rateLimitThreshold:
    count: 100
    intervalSec: 60
banDurationSec: 600
priority: 3000

これらのルールを組み合わせることで、きめ細かなトラフィック制御が可能になります。

3. WAF ルールの適用

SQL インジェクションやクロスサイトスクリプティング(XSS)などの一般的な攻撃に対するプリセットルールを適用します。Cloud Armor には、OWASP Top 10の脆弱性に対応するプリセットルールが用意されています。

  1. セキュリティポリシーの編集画面で「ルールを追加」>「プリセットルール」を選択します。
  2. 適用したいプリセットルールを選択します。例:
    • SQL インジェクション対策
    • クロスサイトスクリプティング対策
    • リモートファイルインクルージョン対策
  3. 各ルールの設定(感度レベルなど)を調整します。
  4. ルールの優先順位を設定します。

4. カスタムルールの作成

ビジネスの特定のニーズに合わせて、カスタムルールを作成します。Cloud Armor のカスタムルールは、Common Expression Language (CEL) を使用して記述します。以下はカスタムルールの例です:

特定のUser-Agentをブロック

match:
  expr:
    has(request.headers['user-agent']) &&
    request.headers['user-agent'].contains('BadBot')
action: 'deny(403)'
priority: 4000

特定のパスへのアクセスを制限

match:
  expr:
    request.path.startsWith('/admin') &&
    !request.headers['X-Admin-Token'].equals('SecretAdminToken')
action: 'deny(401)'
priority: 5000

リクエストボディサイズの制限

match:
  expr:
    int(request.headers['content-length']) > 10000000
action: 'deny(413)'
priority: 6000

これらのカスタムルールを使用することで、アプリケーション固有の脅威に対応できます。

5. バックエンドサービスとの関連付け

作成したセキュリティポリシーを保護したいバックエンドサービスに関連付けます。

  1. Google Cloud Console で「ネットワークサービス」>「負荷分散」に移動します。
  2. 保護したいバックエンドサービスを選択し、編集モードに入ります。
  3. 「セキュリティ」セクションで、作成したCloud Armorセキュリティポリシーを選択します。
  4. 変更を保存します。

この設定により、選択したバックエンドサービスへのすべてのトラフィックがCloud Armorポリシーによってフィルタリングされます。

Cloud Armor の監視とログ分析

Cloud Armor は、詳細なログをCloud Loggingに送信します。これらのログを分析することで、セキュリティイベントの詳細な情報を得ることができます。

  1. Cloud Logging のダッシブルールーを開きます。
  2. 以下のフィルタを適用して Cloud Armor のログを表示します:
    resource.type="http_load_balancer"
    jsonPayload.enforcedSecurityPolicy.name="your-policy-name"
    
  3. ログエントリを分析し、拒否されたリクエストやポリシーのヒット数を確認します。

さらに、Cloud Monitoring を使用してカスタムダッシュボードを作成し、Cloud Armor の効果を視覚化することもできます。

Cloud Armor の監視

Cloud Armorの料金体系

Cloud Armorの料金体系は複雑に見えますが、主に以下の要素から構成されています:

  1. ポリシー料金
  2. リクエスト料金
  3. ルール評価料金

1. ポリシー料金

各Cloud Armorセキュリティポリシーに対して月額の固定料金が発生します。

  • 標準ポリシー:$5/月
  • Plusポリシー:$100/月

Plusポリシーは、アダプティブプロテクションや高度なレートリミットなどの追加機能を提供します。

2. リクエスト料金

保護されたアプリケーションに届くリクエストの数に応じて課金されます。

  • 最初の100万リクエスト/月:無料
  • それ以降のリクエスト:$0.75/100万リクエスト

3. ルール評価料金

セキュリティポリシー内のルールの数と複雑さに基づいて課金されます。

  • プリセットWAFルール:$1/ルール/月
  • カスタムルール:
    • 単純なルール:$1/ルール/月
    • 複雑なルール:$5/ルール/月

Cloud Armor 料金の構成

料金の最適化のヒント

  1. 必要最小限のルールを使用し、不要なルールは削除する
  2. 複雑なカスタムルールの使用を最小限に抑える
  3. トラフィックパターンを分析し、必要な保護レベルを見極める
  4. 小規模なアプリケーションでは標準ポリシーを使用し、大規模で高度な保護が必要な場合にのみPlusポリシーを検討する

Cloud Armorの料金は、使用量に応じて変動します。正確な見積もりには、Google Cloud の料金計算ツールを使用することをおすすめします。

セキュリティと予算のバランスを取りながら、アプリケーションに最適な保護を設定することが重要です。

まとめ

Cloud Armor は、ウェブアプリケーションを様々な脅威から保護する強力なツールです。適切に設定することで、アプリケーションのセキュリティを大幅に向上させることができます。

Cloud Armor を含むGoogle Cloudのセキュリティ機能を活用し、安全なウェブアプリケーション環境を構築しましょう。

Cloud Armor公式ドキュメント

Back to Blog

Related Posts