コンテンツへスキップ

Security-Guardについて

Security-Guardは、ユーザーコンテナとイベントの動作を監視することにより、デプロイされたKnativeサービスのセキュリティステータスを可視化します。Security-Guardは、動作に基づいて、イベントのブロックとユーザーコンテナインスタンスの終了もオプションでサポートしています。

Security-Guardのプロファイルと基準

Security-Guardは、各ユーザーコンテナの動作と各イベントの動作のプロファイルを作成します。次に、動作を事前に定義された基準と比較します。プロファイルが基準を満たしていない場合、Security-Guardは、ユーザー設定に応じて、アラートを記録したり、誤動作しているイベントをブロックしたり、誤動作しているサービスインスタンスを停止したりすることができます。

プロファイルと比較される基準は、一連のマイクロルールで構成されています。これらのルールは、期待される応答を含む、イベントとユーザーコンテナの期待される動作を記述しています。マイクロルールを手動で設定するか、Security-Guardの機械学習機能を使用してマイクロルールの作成を自動化することができます。

ガーディアン

サービスごとのマイクロルールのセットは、KubernetesシステムにGuardianオブジェクトとして保存されます。Knativeでは、Security-Guardはguardians.guard.security.knative.dev CRDを使用してガーディアンを保存します。

すべてのCRDガーディアンを一覧表示するには、以下を使用します。

kubectl get guardians.guard.security.knative.dev

出力例

NAME            AGE
helloworld-go   10h

Security-Guardの使用

Security-Guardは、サービスキュープロキシログにアラートを書き込むことで、状況認識を提供します。キュープロキシを観察してアラートを確認できます。

セキュリティアラートはキュープロキシログファイルに表示され、文字列SECURITY ALERT!で始まります。Security-Guardのデフォルト設定では、報告後に新しいパターンを学習します。デフォルトでは、Security-Guardはイベントをブロックしたり、サービスインスタンスを停止したりすることはありません。

新しいサービスがデプロイされ、アクティブにリクエストを処理している場合、Security-Guardがサービスのリクエストと応答のパターンを学習し、対応するマイクロルールを構築するまでに約30分かかります。初期学習期間後、Security-Guardはサービスガーディアンのマイクロルールを更新し、動作の変化が検出された場合にのみアラートを送信します。

デフォルトの設定では、Security-Guardは新しい動作を学習し続け、そのため、新しい動作が再発した場合にアラートを繰り返し報告することを回避することに注意してください。正しいセキュリティ手順には、Security-Guardによって検出された新しい動作を確認することが含まれます。

Security-Guardは、以下のような他の動作モードで動作するように構成することもできます。

  • 初期学習期間後に、自動学習から手動マイクロルール管理に移行する
  • マイクロルールに準拠していないリクエスト/レスポンスをブロックする

詳細情報またはトラブルシューティングのヘルプについては、Knative Slackの#knative-securityチャンネルを参照してください。

Security-Guardのユースケース

Security-Guardは、セキュリティの観点から、Knativeサービスのライフサイクルの4つの異なる段階をサポートしています。

  • ゼロデイ
  • 脆弱性
  • 悪用可能
  • 誤用

次に、各段階と、その段階でSecurity-Guardを使用してサービスのセキュリティを管理する方法について詳しく説明します。

ゼロデイ

通常の条件下では、サービスを所有するKnativeユーザーは、サービスの既知の脆弱性を認識していません。しかし、サービスには弱点があると想定するのが妥当です。

Security-Guardは、未知のゼロデイのサービスの脆弱性を悪用するために使用される可能性のあるパターンを含む、受信イベントの一部として送信されるパターンを検出/ブロックする機能をKnativeユーザーに提供します。

脆弱性

サービスの脆弱性を記述するCVEが公開されると、サービスを所有するKnativeユーザーは、サービスの新しいリビジョンを導入することにより脆弱性を排除するプロセスを開始する必要があります。既知の脆弱性を除去するこのプロセスには、完了までに数週間かかる場合があります。

Security-Guardにより、Knativeユーザーは、検出された脆弱性を対象とする将来の悪用の一部として使用される可能性のあるパターンを含む受信イベントを検出/ブロックするマイクロルールを設定できます。このようにして、ユーザーはサービスを提供し続けることができますが、サービスには既知の脆弱性があります。

悪用可能

既知の悪用がサービスの侵害に有効であることがわかった場合、サービスを所有するKnativeユーザーは、特定の悪用を含む受信イベントをフィルタリングする方法が必要です。これは通常、動作する悪用がユーザーコンテナを侵害できる成功した攻撃中に発生します。

Security-Guardは、他のイベントがサービスされるようにしながら、特定の悪用を含む受信イベントを検出/ブロックする方法をKnativeユーザーに提供します。

不正使用

攻撃者が、最初に1つ以上の脆弱性を悪用してから、サービスインスタンスの不正使用を開始することにより、サービスインスタンスを乗っ取る攻撃パターンを確立した場合、サービスインスタンスの停止には、攻撃者が攻撃パターンを繰り返す必要があります。いつでも、一部のサービスインスタンスが侵害され、不正に使用されている場合がありますが、他のサービスインスタンスは設計どおりに動作します。

Security-Guardは、他のインスタンスがイベントのサービスを続けることを許可しながら、不正に使用されているサービスインスタンスを検出/削除する方法をKnativeユーザーに提供します。

追加のリソース

Security-Guard GithubリポジトリのREADMEファイルを参照してください。

サイトトラフィックを理解するために、分析とCookieを使用しています。当社のサイトのご利用に関する情報は、その目的のためにGoogleと共有されます。詳細はこちら。