Google Cloud Armor 適応型保護の概要

Google Cloud Armor 適応型保護を使用すると、HTTP flood やその他の高頻度レイヤ 7(アプリケーション レベル)の悪意のあるアクティビティなど、L7 分散型サービス拒否(DDoS)攻撃から、Google Cloud アプリケーション、ウェブサイト、サービスを保護できるようになります。適応型保護では、次の処理を行う機械学習モデルを構築します。

  1. 異常なアクティビティを検出してアラートを出す
  2. 潜在的な攻撃を記述するシグネチャを生成する
  3. カスタムの Google Cloud Armor WAF ルールを生成し、シグネチャをブロックする

セキュリティ ポリシーの基準ごとに適応型保護を有効または無効にできます。

異常なトラフィック(潜在的な攻撃)に関するアラート(その攻撃のシグネチャを含む)が、Cloud Logging に送信されたイベントログとともに適応型保護イベント ダッシュボードに表示されます。Cloud Logging では、イベントログが直接分析されるか、ダウンストリーム ログまたはセキュリティ イベントのモニタリング ワークフローに転送されます。潜在的な攻撃のアラートは、Security Command Center で検出結果として生成されます。

適応型保護の利用

Google Cloud Armor 適応型保護はプレビュー版ですが、Google Cloud Armor のお客様は、適応型保護用に個別のセキュリティ ポリシーを構成できます。ただし、Managed Protection が一般提供になった後に、Google Cloud Armor Managed Protection Plus に登録されたお客様のみ、適応型保護をご利用いただけます。

プロジェクトがまだ Managed Protection Plus に登録されていない場合は、登録方法の情報について、Managed Protection の使用をご覧ください。

Cloud Logging と Cloud Monitoring

適応型保護を効果的に使用するには、Google Cloud のロギングとアラートの仕組みを理解する必要があるため、Cloud Logging、アラート、アラートのポリシーについてよく理解することをおすすめします。詳細については、Cloud Logging のドキュメントアラートに関する Cloud Monitoring ドキュメントをご覧ください。

アラートの構成と調整

Google Cloud Armor セキュリティ ポリシーで、すでにアプリケーションを保護しているプロジェクトでは、適応型保護を有効することが可能です。特定のセキュリティ ポリシーに対して適応型保護を有効にすると、セキュリティ ポリシーが関連付けられているすべてのバックエンド サービスに対して適応型保護が有効になります。

適応型適応を有効にしてから、適応型保護が信頼できるベースラインを確立し、トラフィックのモニタリングやアラートの生成を開始するまでには、少なくとも 1 時間のトレーニング期間があります。トレーニング期間中、適応型保護は各バックエンド サービスに固有のトラフィックと使用パターンをモデル化し、各バックエンド サービスのベースラインを作成します。トレーニング期間が終了すると、セキュリティ ポリシーに関連するバックエンド サービスのいずれかに転送されるトラフィックで、高頻度または大量の異常が適応型保護により特定された場合に、リアルタイムのアラートを受け取ります。

適応型保護のアラートは、複数の指標に基づいて調整できます。Cloud Logging に送信されるアラートには、信頼度レベル、推奨ルールと、その推奨ルールに関連付けられ、影響を受けたベースライン レートの予測が含まれます。

  • 信頼度は、トラフィック パターンで観測された変化が異常であると適応型保護モデルが予測する信頼度を示しています。
  • 推奨ルールに関連付けられた、影響を受けたベースライン レートは、ルールによってキャプチャされた既存のベースライン トラフィックの割合を表しています。

Cloud Logging では、信頼度と影響を受けたベースライン レートのいずれかまたは両方に基づいてアラートをフィルタリングできます。アラートの調整の詳細については、アラート ポリシーの管理をご覧ください。

アラートの消費と解釈

適応型保護により疑わしい攻撃が検出されると、適応型保護イベント ダッシュボードにイベントが生成され、Cloud Logging にログ項目が生成されます。このアラートはログ項目の JSON ペイロード内にあります。ログ項目は、Cloud Logging のネットワーク セキュリティ ポリシーリソースの下に生成されます。ログメッセージには、攻撃を受けたバックエンド サービスを特定し、特定したトラフィック パターンの変化を、適応型保護がどの程度の強さの異常として評価するかを示す信頼度スコアが含まれます。ログメッセージには、攻撃トラフィックの特性を示す攻撃シグネチャと、攻撃を軽減するために適用可能な推奨 Google Cloud Armor ルールも含まれています。

攻撃シグネチャについて

適応型保護アラートには攻撃シグネチャが含まれます。これは潜在的な攻撃のトラフィック属性の説明です。シグネチャを使用して攻撃を特定し、場合によっては攻撃をブロックします。シグネチャには、ユーザーが読み取り可能なテーブルとしてと、関連するセキュリティ ポリシーでデプロイ可能な事前構築済みの Google Cloud Armor WAF ルールとしての 2 つの形式があります。

シグネチャは、送信元 IP アドレス、地理的リージョン、Cookie、ユーザー エージェント、リファラー、その他の HTTP リクエスト ヘッダーなどの一連の属性と、潜在的な攻撃トラフィックに関連すると考えられた、それらの属性の値のセットで構成されます。属性のセットは、ユーザーでは構成できません。この属性値は、バックエンド サービスへの受信トラフィックに含まれる値によって異なります。

適応型保護が信頼する各属性値が、潜在的な攻撃を示している場合、適応型保護は以下の情報を表示します。

  • 攻撃の可能性。
  • 攻撃における属性の割合。これは、攻撃が検出された時点での、この値を含む潜在的な攻撃トラフィックの割合です。
  • ベースラインにおける属性の割合。これは、攻撃が検出された時点での、この属性値を含むベースライン トラフィックの割合です。

Cloud Logging のエントリ仕様には、各アラートの情報についての詳細が含まれています。

以下は、潜在的な攻撃のシグネチャを含むユーザー読み取り可能なテーブルの例です。

属性名 属性の値 攻撃の可能性 攻撃の割合 ベースラインの割合
UserAgent "foo" 0.7 0.85 0.12
UserAgent "bar" 0.6 0.7 0.4
ソース IP "a.b.c.d" 0.95 0.1 0.01
ソース IP a.b.c.e 0.95 0.1 0.01
ソース IP a.b.c.f 0.05 0.1 0.1
RegionCode 英国 0.64 0.3 0.1
RegionCode IN 0.25 0.2 0.3

適応型保護アラートと関連する Cloud Logging イベントログには、次の情報が含まれます。

  • 固有のアラート ID(alertID)。これは、ユーザーのフィードバックを報告する際に、特定のアラートを参照するために使用されます(詳細は後述)。
  • 攻撃を受けているバックエンド サービス(backendService)。
  • 信頼度スコア(confidence)。これは、0 から 1 までの数値で、適応型保護システムによって検出されたイベントがどの程度悪意のある攻撃として評価されたかを示します。

また、検出された攻撃を特徴付ける一連のシグネチャとルールを受け取ります。具体的には、このセットは、それぞれ 1 つの HTTP ヘッダーに対応し、特定のヘッダーの significantValues のリストを含む headerSignatures のリストを提供します。

以下にシグネチャの例を示します。

...
headerSignatures: [
  0: {
   name: "Referer"
   significantValues: [
    0: {
     value: "foo.attacker.com"
     attackLikelihood: 0.95
     proportionInAttack: 0.6
     proportionInBaseline: 0.01
    }
   ]
  }
...

このアラートは、ヘッダー Referer の値 foo.attacker.com がこの攻撃を特徴付けるうえで重要であることを示しています。具体的には、攻撃トラフィック(proportionInAttack)の 60% にはこの Referer 値があり、全トラフィックの中の 1% のベースライン トラフィック(proportionInBaseline)にしか、同じ Referer 値がありません。さらに、この Referer 値に一致するすべてのトラフィックのうち、95% は攻撃トラフィック(attackLikelihood)です。

これらの値は、名前が foo.attacker.com で値 Referer を含むトラフィックをすべてブロックした場合は、攻撃トラフィックの 60% を正常にブロックするとともに、ベースライン トラフィックの 1% もブロックすることになることを示しています。

推奨ルールのデプロイ

適応型保護アラートは、カスタムルール言語で表される推奨の Google Cloud Armor ルールも提供します。このルールは、攻撃を軽減するために、Google Cloud Armor セキュリティ ポリシーでルールを作成するのに使用できます。シグネチャに加えて、ルールのデプロイの影響を評価できるように、影響を受けるベースライン トラフィックのレートをアラートに含めます。影響を受けるベースライン トラフィックのレートは、適応型保護によって特定された攻撃シグネチャに一致するベースライン トラフィックの割合を予測したものです。

アラートのシグネチャの一部や、影響を受けるベースライン レートは、Cloud Logging に送信されるログメッセージで確認できます。次に、サンプル アラートの JSON ペイロードを示します。

...
@type: "type.googleapis.com/dos.ml.pb.CloudArmorAlert"
 alertId: "11275630857957031521"
 backendService: "test-service"
 confidence: 0.71828485
 headerSignatures: [

  0: {
   name: "RequestUri"
   significantValues: [
    0: {
     attackLikelihood: 0.88
     proportionInAttack: 0.85
     proportionInBaseline: 0.01
     value: "/"
    }
   ]
  }
  1: {
   name: "RegionCode"
   significantValues: [
    0: {
     attackLikelihood: 0.08
     proportionInAttack: 0.17
     proportionInBaseline: 0.28
     value: "US"
    }
    1: {
     attackLikelihood: 0.68
     proportionInAttack: 0.09
     proportionInBaseline: 0.01
     value: "DE"
    }
    2: {
     attackLikelihood: 0.74
     proportionInAttack: 0.05
     proportionInBaseline: 0
     value: "MD"
    }
   ]
  }
   2: {
   name: "UserAgent"
   significantValues: [
    0: {
     attackLikelihood: 0.92
     proportionInAttack: 0.85
     proportionInBaseline: 0
     value: "Unusual browser"
    }
    1: {
     attackLikelihood: 0.87
     proportionInAttack: 0.7
     proportionInBaseline: 0.1
     missing: true
    }
   ]
  }
 ]
 suggestedRule: [
  0: {
   action: "DENY"
   evaluation: {
     impactedAttackProportion: 0.95
     impactedBaselineProportion: 0.001
   }
   expression: "evaluateAdaptiveProtection('11275630857957031521')"
  }
 ]
Attack_size: 5000
}
}
...

推奨ルールをデプロイするには、ルールのシグネチャから CEL 式をコピーして、新しく作成したルールの一致条件にその式を貼り付けるか、Google Cloud Armor UI にある適応型保護ダッシュボードの [適用] ボタンをクリックします。

ルールをデプロイするには、アラートによって特定された対象のバックエンド サービスを保護する、Google Cloud Armor セキュリティ ポリシーに新しいルールを作成します。次に、ルールの構成中に、アラートの CEL 式をコピーして、ルールの [一致条件] フィールドに貼り付け、ルールのアクションを deny に設定します。上記の例では、アラートの suggestedRule セクションから式 evaluateAdaptiveProtection('11275630857957031521') をコピーします。

最初にプレビュー モードでルールをデプロイして、本番環境トラフィックに対するルールの影響を評価することを強くおすすめします。これを行うと、ルールがトリガーされたときに、Google Cloud Armor によりアクションと関連するトラフィックがログに記録されますが、一致したトラフィックに対するアクションは何も行われません。

さらに、セキュリティ ポリシーが複数のバックエンド サービスに接続されている場合、新しいルールの影響がどのバックエンド サービスにも望ましくない影響をもたらしていないかどうかに注意してください。もし望ましくない影響をもたらしている場合は、新しいセキュリティ ポリシーを構成して望ましくない影響を軽減し、正しいバックエンド サービスに接続します。

推奨の適応型保護ルールのデプロイ
推奨の適応型保護ルールのデプロイ(クリックして拡大)

新しいルールの優先度を、許容するアクション セットを含むどのルールよりも高く設定することをおすすめします。これは、予測される影響を与え、攻撃の低減に最大の効果を発揮するには、ルールによって一致するすべてのトラフィックがブロックされることを確保するため、ルールが最も論理優先度が高い位置でデプロイされる必要があるためです。Google Cloud Armor セキュリティ ポリシー内のルールは、最初に一致したルールがトリガーされ、関連するルールのアクションが行われた後、評価が終了し、優先度の順番に評価されます。一部のトラフィックまたは特定のクライアントに対し、このルールから例外を適用する必要がある場合は、優先度の高い(つまりより小さな数値を持つ)「許可」ルールを作成できます。ルールの優先度の詳細については、ルールの評価順序をご覧ください。

モニタリング、フィードバック、イベント エラーの報告

適応型保護ダッシュボードを表示または操作するには、次の権限が必要です。

  • compute.securityPolicies.list
  • compute.backendServices.list
  • logging.logEntries.list

Google Cloud Armor セキュリティ ポリシーで適応型保護を有効にすると、[ネットワーク セキュリティ] > [Google Cloud Armor] パネルの下に、以下のページが表示されます。選択したセキュリティ ポリシーとバックエンド サービスについて、選択した一定期間のトラフィック ボリュームが、時間経過とともに表示されます。適応型保護によってアラートが出された潜在的な攻撃のインスタンスは、グラフにアノテーションが付けられ、グラフの下に表示されます。特定の攻撃イベントをクリックすると、攻撃シグネチャと推奨ルールが表形式で表されたサイド ウィンドウが表示されます。これは、Cloud Logging のエントリ仕様で説明されている Cloud Logging ログエントリの情報と同じです。[適用] ボタンをクリックして、推奨ルールを同じセキュリティ ポリシーに追加します。

適応型保護ダッシュボード
適応型保護ダッシュボード(クリックして拡大)
適応型保護アラートの詳細
適応型保護ダッシュボード(クリックして拡大)

保護されたバックエンド サービスの固有のコンテキストと環境要因を考えると、すべての適応型保護の検出結果が攻撃と見なされるわけではありません。アラートに記載された潜在的な攻撃が、正常または許容された動作と判断する場合は、イベント エラーを報告して、適応型保護モデルのトレーニングに役立てることができます。グラフの下に表示される各攻撃イベントの横には、インタラクティブ ウィンドウをポップアップするボタンがあり、オプションのコンテキストとともにイベント エラーを報告できます。イベント エラーを報告すると、将来的に同様のエラーが発生する可能性を減らすことができます。時間の経過とともに、適応型保護の正確性が向上します。

モニタリング、アラート、ロギング

適応型保護テレメトリーは、Cloud Logging と Security Command Center に送信されます。Cloud Logging に送信される適応型保護のログ メッセージについては、このドキュメントの前のセクションで説明しています。適応型保護によって潜在的な攻撃が検出されるたびにログエントリが生成され、各エントリに信頼度スコアが追加されます。この信頼度スコアは、観測されたトラフィックが異常であることを、そのモデルがどのくらい確信しているかを示しています。アラートを微調整するため、適応型保護のログ メッセージの信頼度スコアがユーザー指定しきい値を越える場合にのみ、アラートをトリガーするように、Cloud Logging でアラート ポリシーを構成できます。潜在的な攻撃の警告を逃すことを防ぐために、最初は信頼度を 0.5 よりも高く設定し、低いしきい値から始めることをおすすめします。アラートに受け入れられないくらいの影響を受けるベースライン レートがある場合は、アラート ポリシーの信頼度のしきい値を時間経過とともに上げることができます。

Security Command Center ダッシュボードにも、適応型保護の検出結果が含まれています。これらは、[Application DDoS 攻撃] カテゴリの下にある Google Cloud Armor カード内にあります。各検出結果には、サービスの詳細、攻撃の信頼度、攻撃に関連するシグネチャ、適応型保護ダッシュボードの特定のアラートへのリンクが含まれます。

Cloud Logging エントリの仕様

Cloud Logging に送信される適応型保護アラートは、次の要素を含むログエントリで構成されます。

  • アラートの信頼度: 観測されたイベントが攻撃であることを適応型保護が信頼する信頼度。
  • 攻撃シグネチャ
    • 属性名: 特定のリクエスト ヘッダーや地理的位置などの属性の名前。
    • 属性値: 悪意のあるトラフィックで観測された属性値。
    • 攻撃の可能性: 指定されたリクエストが関連属性について上記の値を持っていると仮定した場合、指定されたリクエストに悪意がある可能性。
    • 攻撃における割合: この属性値を含む潜在的な攻撃トラフィックの割合。
    • ベースラインにおける割合: この属性値を含む通常の正常なベースライン トラフィックの割合。
  • 推奨ルール
    • 一致条件: 悪意のあるトラフィックを特定するために条件に一致するルールで使用される式。
    • 影響を受けるベースライン レート: 推奨ルールによってキャプチャされた良いトラフィックの割合の予測値。
    • 影響を受けた攻撃の割合: 推奨ルールによってキャプチャされた攻撃トラフィックの割合。

機械学習の概要とプライバシー

  • トレーニング データと検出データ
    • 適応型保護は、潜在的な攻撃を検出し、そのシグネチャを特定する複数のモデルを構築します。攻撃が行われているかどうかを判断するため、これらのモデルで使用されるシグナルは、プロジェクトからの受信リクエスト トラフィックで観測されたメタデータから導出されます。このようなメタデータには、ソース IP アドレス、ソースの地理情報、いくつかの HTTP リクエスト ヘッダーの値などが含まれます。
    • モデルで使用される実際の機能は、上記のシグナルから派生した統計プロパティです。つまり、モデルのトレーニング データには、IP アドレスやリクエスト ヘッダー値などのメタデータの実際の値は含まれません。
    • 適応型保護を最初に有効にしたときには、攻撃が行われているかどうかを判断するために、人工データのみを使用してトレーニングされ、共通の検出モデルのセットがすべてのお客様に共有されています。誤検出の攻撃イベントを報告して、プロジェクト固有のトラフィック シグナルを使用してモデルが更新されると、そのモデルはお客様のプロジェクトに限られたものになり、他のお客様には使用されなくなります。
  • シグネチャ生成データ
    • 適応型保護は、潜在的な攻撃が行われていると判断すると、標的が攻撃を早期に軽減するために効果的な攻撃シグネチャを生成します。上記を達成するために、セキュリティ ポリシーで適応型保護を有効にした後、バックエンド サービス(セキュリティ ポリシーに関連付けられている)へのトラフィック指標とリクエスト メタデータが継続的に記録され、ベースライン トラフィックの特性が学習されます。
    • 適応型保護は、ベースライン トラフィックについて学習する必要があるため、適応型保護は、有効になってから 1 時間以上経過後に、潜在的な攻撃のアラートを開始します。

次のステップ