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

Cloud Armor の概要
Google Cloud の Cloud Armor は、ウェブアプリケーションやサービスを様々なセキュリティ脅威から保護するためのツールです。DDoS 攻撃の緩和からウェブアプリケーションファイアウォール(WAF)機能まで、包括的なセキュリティソリューションを提供します。
主な機能
- DDoS 攻撃対策
- IPアドレスフィルタリング
- 地理的制限
- カスタムルールの作成
- プリセットルールの適用
Cloud Armor の設定手順
1. セキュリティポリシーの作成
Google Cloud Console から Cloud Armor のセクションに移動し、新しいセキュリティポリシーを作成します。以下の手順で行います:
- Google Cloud Console にログインし、ナビゲーションメニューから「ネットワークセキュリティ」>「Cloud Armor」を選択します。
- 「セキュリティポリシーを作成」をクリックします。
- ポリシーの名前、説明を入力し、適用するネットワークを選択します。
- デフォルトルールのアクションを設定します(通常は「許可」)。
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の脆弱性に対応するプリセットルールが用意されています。
- セキュリティポリシーの編集画面で「ルールを追加」>「プリセットルール」を選択します。
- 適用したいプリセットルールを選択します。例:
- SQL インジェクション対策
- クロスサイトスクリプティング対策
- リモートファイルインクルージョン対策
- 各ルールの設定(感度レベルなど)を調整します。
- ルールの優先順位を設定します。
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. バックエンドサービスとの関連付け
作成したセキュリティポリシーを保護したいバックエンドサービスに関連付けます。
- Google Cloud Console で「ネットワークサービス」>「負荷分散」に移動します。
- 保護したいバックエンドサービスを選択し、編集モードに入ります。
- 「セキュリティ」セクションで、作成したCloud Armorセキュリティポリシーを選択します。
- 変更を保存します。
この設定により、選択したバックエンドサービスへのすべてのトラフィックがCloud Armorポリシーによってフィルタリングされます。
Cloud Armor の監視とログ分析
Cloud Armor は、詳細なログをCloud Loggingに送信します。これらのログを分析することで、セキュリティイベントの詳細な情報を得ることができます。
- Cloud Logging のダッシブルールーを開きます。
- 以下のフィルタを適用して Cloud Armor のログを表示します:
resource.type="http_load_balancer" jsonPayload.enforcedSecurityPolicy.name="your-policy-name"
- ログエントリを分析し、拒否されたリクエストやポリシーのヒット数を確認します。
さらに、Cloud Monitoring を使用してカスタムダッシュボードを作成し、Cloud Armor の効果を視覚化することもできます。
Cloud Armorの料金体系
Cloud Armorの料金体系は複雑に見えますが、主に以下の要素から構成されています:
- ポリシー料金
- リクエスト料金
- ルール評価料金
1. ポリシー料金
各Cloud Armorセキュリティポリシーに対して月額の固定料金が発生します。
- 標準ポリシー:$5/月
- Plusポリシー:$100/月
Plusポリシーは、アダプティブプロテクションや高度なレートリミットなどの追加機能を提供します。
2. リクエスト料金
保護されたアプリケーションに届くリクエストの数に応じて課金されます。
- 最初の100万リクエスト/月:無料
- それ以降のリクエスト:$0.75/100万リクエスト
3. ルール評価料金
セキュリティポリシー内のルールの数と複雑さに基づいて課金されます。
- プリセットWAFルール:$1/ルール/月
- カスタムルール:
- 単純なルール:$1/ルール/月
- 複雑なルール:$5/ルール/月
料金の最適化のヒント
- 必要最小限のルールを使用し、不要なルールは削除する
- 複雑なカスタムルールの使用を最小限に抑える
- トラフィックパターンを分析し、必要な保護レベルを見極める
- 小規模なアプリケーションでは標準ポリシーを使用し、大規模で高度な保護が必要な場合にのみPlusポリシーを検討する
Cloud Armorの料金は、使用量に応じて変動します。正確な見積もりには、Google Cloud の料金計算ツールを使用することをおすすめします。
セキュリティと予算のバランスを取りながら、アプリケーションに最適な保護を設定することが重要です。
まとめ
Cloud Armor は、ウェブアプリケーションを様々な脅威から保護する強力なツールです。適切に設定することで、アプリケーションのセキュリティを大幅に向上させることができます。
Cloud Armor を含むGoogle Cloudのセキュリティ機能を活用し、安全なウェブアプリケーション環境を構築しましょう。