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

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

Cloud Logging と Cloud Monitoring

適応型保護を効果的に利用するには、Google Cloud のロギングとアラートの仕組みを理解する必要があります。Cloud Logging、アラート、アラート ポリシーについて理解しておくことをおすすめします。

アラートの構成と調整

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

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

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

  • 信頼度は、トラフィック パターンで観測された変化が異常であると適応型保護モデルが予測する信頼度を示しています。
  • 提案されたルールの影響を受けるベースライン レートは、ルールによって捕捉された既存のベースライン トラフィックの割合を表します。2 つのレートが用意されています。1 つ目は、攻撃対象の特定のバックエンド サービスへのトラフィック量に対する割合です。2 つ目は、セキュリティ ポリシーを通過するすべてのトラフィックに対する割合です。これには、構成されているすべてのバックエンド サービス ターゲット(攻撃対象であるターゲット以外)も含まれます。

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

アラートの使用と解釈

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

攻撃シグネチャについて

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

シグネチャは一連の属性から構成されています。たとえば、送信元 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 UK 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 が重要になります。たとえば、攻撃トラフィックの 60% のトラフィック(proportionInAttack)は、この Referer 値を取得します。すべてのトラフィック(proportionInBaseline)の中で、同じ Referer を持つのはベースライン トラフィックの 1% にすぎません。さらに、この 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
     impactedBaselinePolicyProportion: 0.001
   }
   expression: "evaluateAdaptiveProtection('11275630857957031521')"
  }
 ]
ruleStatus: RULE_GENERATED
attackSize: 5000
}
}
...

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

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

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

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

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

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

ルールのステータス

推奨ルールのデプロイ時にルールが表示されない場合、rule_status フィールドを使用して原因を特定できます。

 ]
ruleStatus: RULE_GENERATED
attackSize: 5000
}

次の表に、フィールドの値として考えられる値とその意味を示します。

ルールのステータス 説明
RULE_GENERATED 使用可能なルールが生成されました。
BASELINE_TOO_RECENT 信頼できるベースライン トラフィックを蓄積するのに十分な時間がありません。ルールを生成するには、最大で 1 時間ほどかかります。
NO_SIGNIFICANT_VALUE_DETECTED ヘッダーに攻撃トラフィックに関連付けられた値の数が少ないため、ルールを生成できませんでした。
NO_USABLE_RULE_FOUND 使用可能なルールを作成できませんでした。
ERROR ルールの作成中に不明なエラーが発生しました。

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

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

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

Google Cloud Armor セキュリティ ポリシーで適応型保護を有効にすると、[ネットワーク セキュリティ] > [Cloud Armor] パネルに次のページが表示されます。選択したセキュリティ ポリシーとバックエンド サービスについて、一定期間のトラフィック量が表示されます。適応型保護によって警告される可能性のある攻撃のインスタンスは、グラフにアノテーションが付き、グラフの下に表示されます。特定の攻撃イベントをクリックすると、そのタブに攻撃のシグネチャと提案ルールが表形式で表示されます。これは、Cloud Logging のエントリ仕様で説明されている Cloud Logging ログエントリの情報と同じです。[適用] ボタンをクリックして、提案されたルールを同じセキュリティ ポリシーに追加します。

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

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

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

適応型保護テレメトリーは、Cloud Logging と Security Command Center に送信されます。Cloud Logging に送信される適応型保護ログのメッセージについては、このドキュメントの前のセクションで説明しています。適応型保護によって潜在的な攻撃が検出され、各エントリに信頼度スコアが追加されます。各エントリの信頼度スコアは、観測されたトラフィックが異常である可能性の高さを示しています。アラートを微調整するには、Cloud Logging でアラート ポリシーを構成します。アラートは、適用型保護のログメッセージとユーザー指定しきい値に信頼スコアがある場合にのみできます。潜在的な攻撃に対する警告が表示されないように、最初は信頼度を 0.5 よりも高く設定することをおすすめします。アラートのしきい値が時間の経過とともに合わなくなってきた場合は、アラート ポリシーの信頼度しきい値を上げることができます。

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

Cloud Logging エントリの仕様

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

  • アラートの信頼度: 観測されたイベントが攻撃であることを適応型保護が信頼する度合い。
  • 攻撃シグネチャ
    • 属性名: 特定のリクエスト ヘッダーや地理的位置などの属性の名前。
    • 属性値: 悪意のあるトラフィックで観測された属性値。
    • 攻撃の可能性: 指定されたリクエストが関連属性について上記の値を持っている場合、指定されたリクエストに悪意がある可能性。
    • 攻撃における割合: この属性値を含む潜在的な攻撃トラフィックの割合。
    • ベースラインにおける割合: この属性値を含む通常の正常なベースライン トラフィックの割合。
  • 推奨ルール
    • 一致条件: 悪意のあるトラフィックを特定するために条件に一致するルールで使用される式。
    • 影響を受けるベースライン レート: 推奨ルールによってキャプチャされた、攻撃対象の特定のバックエンド サービスに対する正常なトラフィックの予測割合。
    • ポリシー全体で影響を受けるベースライン レート: 推奨ルールによってキャプチャされた、同じセキュリティ ポリシー内のすべてのバックエンド サービスに対する正常なトラフィックの予想割合。
    • 影響を受ける攻撃率: 推奨ルールによってキャプチャされた攻撃トラフィックの予想割合。
  • ルールのステータス: ルール生成に関するその他の詳細情報。

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

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

次のステップ