この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。

これは未公開の文書です Admission Controller 1.34-dev.

脅威モデル

Kubernetesセキュリティ特別興味グループ(SIG)は、KubernetesのためのAdmission Control Threat Modelを定義しました。SUSE Security Admission Controllerチームはこの脅威モデルに対してAdmission Controllerを継続的に評価し、安全なデフォルトを提供するために取り組んでいます。Admission Controller管理者が脅威モデルを読み理解し、必要に応じて自分の状況に特化した脅威モデルを考案することを推奨します。

各脅威の詳細は、https://github.com/kubernetes/sig-security/tree/main/sig-security-docs/papers/admission-control[SIGセキュリティによって公開された文書]にあります。

Kubernetesの脅威

脅威1 - 攻撃者が大量のトラフィックをWebhookに送り込み、その動作を妨げる

場面

ネットワークレベルでWebhookエンドポイントにアクセスできる攻撃者は、大量のトラフィックを送信し、Admission Controllerに対して実質的なサービス拒否を引き起こす可能性があります。

緩和策

Webhookは閉じる設定になっています。Webhookが何らかの理由で時間内に応答しない場合、APIサーバーはリクエストを拒否する必要があります。 これはAdmission Controllerのデフォルトの動作です。

閉じる設定とは、何らかの理由でAdmission Controllerが応答を停止したりクラッシュした場合、APIサーバーがデフォルトでリクエストを拒否することを意味します。 これは、リクエストが通常Admission Controllerによって受け入れられる場合でも同様です。

脅威2 - 攻撃者が複雑な処理を必要とするワークロードを通過させ、タイムアウトを引き起こす

場面

ネットワークレベルでAdmission Controllerにアクセスできる攻撃者は、Admission Controllerに複雑な処理を必要とするリクエストを通過させ、Admission Controllerがワークロードを処理するために計算能力を使用するため、タイムアウトを引き起こします。

緩和策

Webhookは閉じる設定になっており、呼び出し元を認証します。 これはAdmission Controllerのデフォルトの動作です。

脅威3 - 攻撃者がWebhookの誤設定を利用してバイパスします。

場面

クラスター内でワークロードを作成する権限を持つ攻撃者は、誤設定を利用して意図されたセキュリティ制御をバイパスすることができます。

緩和策

Webhookの設定を定期的にレビューすることで、問題を発見するのに役立ちます。

脅威4 - 攻撃者がKubernetesのWebhookオブジェクトを削除または変更する権限を持っています。

場面

Kubernetes APIにアクセスできる攻撃者は、クラスター内のWebhookオブジェクトを削除するのに十分な権限を持っています。

緩和策

RBACの権限は厳格に管理されるべきです。

やること

RBACのほとんどは、現在の議論の範囲外です。しかし、次の内容が順次提供され、Admission Controllerユーザーを支援します:

  • 実装すべき最小限のRBACに関する指示。

  • RBACの変更を検出し、ブロックできるポリシーの提供と文書化。

脅威5 - 攻撃者がWebhookの有効な認証情報にアクセスします。

場面

攻撃者は、Admission Controller Webhookの有効なクライアント認証情報にアクセスします。

緩和策

Webhookは閉じる設定になっています。 これはAdmission Controllerのデフォルトの動作です。

脅威6 - 攻撃者がクラスター管理者の認証情報にアクセスします。

場面

攻撃者は、Kubernetesクラスター内のクラスター管理者レベルの認証情報にアクセスします。

緩和策

N/A

脅威7 - 攻撃者がコンテナネットワークのトラフィックを嗅ぎ取ります。

場面

コンテナネットワークにアクセスできる攻撃者は、APIサーバーとAdmission Controller Webhookの間のトラフィックを嗅ぎ取ることができます。

緩和策

WebhookはすべてのトラフィックにTLS暗号化を使用しているため、Admission Controllerは安全です。

脅威8 - 攻撃者がWebhookに対してMITM攻撃を実施します。

場面

コンテナネットワーク上の攻撃者は、NET_RAW機能にアクセスできる場合、APIサーバーとAdmission Controller Webhookの間のトラフィックを傍受するためにMITMツールを使用しようとすることができます。

緩和

WebhookのためにmTLS認証を使用してクラスターを構成し、Admission ControllerスタックでmTLS機能を有効にしてください。代わりに、ネットワークポリシーをサポートするCNIを使用してmTLSを設定してください。詳細については、"相互TLSによる安全なWebhook"を参照してください。

capabilities-pspポリシーを使用し、NET_RAW機能を削除するように構成してください。

脅威9 - 攻撃者がスプーフィングを通じてWebhookからトラフィックを盗む

場面

攻撃者は、スプーフィングによってAdmission Controller Webhookのための意図されたAPIサーバーからトラフィックをリダイレクトすることができます。

緩和策

WebhookのためにmTLS認証を使用してクラスターを構成し、Admission ControllerスタックでmTLS機能を有効にしてください。代わりに、ネットワークポリシーをサポートするCNIを使用してmTLSを設定してください。詳細については、"相互TLSによる安全なWebhook"を参照してください。

脅威10 - 特権コンテナを作成するために変異ルールを悪用する

場面

攻撃者は、変異アドミッションコントローラーがワークロードを変更するように仕向け、特権コンテナの作成を許可させることができます。

緩和策

すべてのルールをレビューし、テストしてください。

脅威11 - 攻撃者がアドミッションコントロールから免除されたネームスペースにワークロードをデプロイする

場面

攻撃者は、アドミッションコントローラーの設定から免除されたKubernetesのネームスペースにワークロードをデプロイすることができます。

緩和策

RBAC権限は厳格に管理されています。

やること

この決定に関しては、RBACのほとんどが範囲外です。しかし、Admission Controllerチームは次のことを目指しています:

  • 私たちのドキュメントを通じてユーザーに警告し、_最小限のRBACを使用することを提案_します。

  • RBACの変更を検出し、*おそらく*それらをブロックするポリシーを提供します。

脅威12 - ルールのブロックは、マッチが欠落しているためにバイパスされる可能性があります(例えば、initcontainersが欠落している場合)

場面

攻撃者は、Admission ControllerによってカバーされていないKubernetes APIの機能を使用するワークロードマニフェストを作成しました。

緩和策

すべてのルールをレビューし、テストしてください。ポリシーのデプロイメントにおけるルールを変更するPRをレビューするべきです。

脅威13 - 攻撃者は、ブロックリスト上の不適切な文字列マッチングを利用してルールを回避します。

場面

ワークロードを作成する権限を持つ攻撃者は、不適切な文字列マッチングを利用してルールを回避します。

緩和策

すべてのルールをレビューし、テストしてください。

やること

このルールをカバーするテストを導入してください。 いつものように、ポリシーのデプロイメントにおけるルールを変更するPRをレビューするべきです。

脅威14 - 攻撃者は、ルールがないKubernetes APIの新機能/古い機能を使用します。

場面

ワークロードを作成する権限を持つ攻撃者は、Kubernetes APIの新機能(例えば、変更されたAPIバージョン)を使用してルールを回避します。

緩和策

すべてのルールをレビューし、テストしてください。廃止されたリソースの使用をテストするポリシーがあります。それはhttps://github.com/kubewarden/deprecated-api-versions-policy[廃止されたAPIバージョンポリシー]から入手可能です。

`deprecated-api-versions-policy`は、それに知られているカスタムリソースのみを扱います。脅威は、廃止されたリソースバージョンと、新しい未知のリソースが誤用されることの両方であり、したがってポリシーは問題の一部しかカバーしていません。

脅威15 - 攻撃者はWebhookコントローラーが動作しているノードに特権コンテナをデプロイします。

場面

特権コンテナをクラスターにデプロイする権限を持つ攻撃者は、Admission Controller Webhookが動作しているクラスターのノード上に特権コンテナを作成します。

緩和

アドミッションコントローラーは、特権ワークロードを防ぐために制限的なポリシーを使用します。

脅威16 - 攻撃者はWebhookコントローラーの設定を変更できる特権ノードのホストパスをマウントします。

場面

ワークロードと共にホストパスボリュームをデプロイする権限を持つ攻撃者は、アドミッションコントローラーポッドのファイルにアクセスできるボリュームを作成します。

kubewarden-default Helmチャートをデプロイしてください。推奨ポリシー(`hostpaths-psp`ポリシーを含む)を有効にしてください。このポリシーは、共有ホストパスボリュームを削減するように設定されています。

脅威17 - 攻撃者はアドミッションWebhookが動作しているクラスターのノードに特権SSHアクセスを持っています。

場面

攻撃者は、SSHを介して特権ユーザーとしてクラスターのノードにログインすることができます。

緩和

N/A

脅威18 - 攻撃者はポリシーを使用して、アドミッションリクエストから機密データを外部システムに送信します。

場面

攻撃者は、アドミッションリクエストをリスン(する)し、機密データを外部システムに送信するポリシーを設定することができます。

緩和

  • WebhooksのためにmTLS認証を使用してクラスターを構成し、Admission ControllerスタックでmTLS機能を有効にします。または、ネットワークポリシーをサポートするCNIを使用してmTLSをセットアップします。

  • デフォルトでは、Admission Controllerポリシーはネットワークアクセスを持たず、制限された環境で実行され、Webhooksへの外部アクセスを厳格に制御します。

Admission Controllerの脅威

Admission Controllerの脅威1 - アドミッションコントローラーの信頼確立

場面

信頼できるが新しいKubernetesクラスターを前提とすると、攻撃者はデプロイメント前にAdmission Controllerスタックを侵害し、ポリシーの適用を妨げることができます。

例えば、次のように:

  • 署名されていない悪意のあるイメージを使用して:

    • Admission Controller-コントローラー

    • ポリシーサーバー

    • Admission Controllerの依存関係のいずれか

    • 任意の依存関係(Grafana、Prometheusなど)

  • Helmチャートのペイロードを侵害することによって

緩和

  1. Admission Controllerは、必要なすべてのイメージをリストしたソフトウェア部品表を提供します。これはゼロトラストに役立ちます。Kubernetes管理者は、信頼できる環境でKubernetesクラスターからAdmission Controllerイメージ、その依存関係のイメージ、およびチャートを確認する必要があります。例えば、これは`cosign`を使用して行うことができます。ちなみに、これはエアギャップ(された)インストールに必要な実装の一部です。

  2. 署名済みのHelmチャートを使用し、これらのHelmチャート内のAdmission Controllerイメージにはタグの代わりに検証済みのダイジェストを使用してください。ただし、これでは依存関係を保護することはできません。