Kubernetes ValidatingWebhookConfiguration

このページの元の著者は Guillaume

定義

ValidatingWebhookConfigurationは、Kubernetesリソースであり、受信するKubernetes APIリクエストを一連の事前定義されたルールと制約に対して検証するサーバーサイドコンポーネントである検証ウェブフックを定義します。

目的

ValidatingWebhookConfigurationの目的は、受信するKubernetes APIリクエストに対して一連の事前定義されたルールと制約を強制する検証ウェブフックを定義することです。ウェブフックは、設定で定義されたルールと制約に対してリクエストを検証し、リクエストがルールに準拠していない場合はエラーを返します。

以下はValidatingWebhookConfigurationの例です:

apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
name: example-validation-webhook
namespace: default
webhook:
name: example-validation-webhook
clientConfig:
url: https://example.com/webhook
serviceAccountName: example-service-account
rules:
- apiGroups:
- ""
apiVersions:
- "*"
operations:
- CREATE
- UPDATE
resources:
- pods

The main difference between a ValidatingWebhookConfiguration and policies :

  • ValidatingWebhookConfiguration (VWC) : Kubernetesリソースで、受信するKubernetes APIリクエストを一連の事前定義されたルールと制約に対して検証するサーバーサイドコンポーネントである検証Webhookを定義します。

  • Kyverno ClusterPolicy: Kubernetesリソース(ポッド、デプロイメント、サービスなど)を検証および強制するためのルールと制約のセットを指定するポリシー定義です。

Enumeration

$ kubectl get ValidatingWebhookConfiguration

KyvernoとGatekeeper VWCの悪用

インストールされているすべてのオペレーターには、少なくとも1つのValidatingWebHookConfiguration(VWC)があります。

KyvernoGatekeeperは、クラスター全体でポリシーを定義し、強制するためのフレームワークを提供するKubernetesポリシーエンジンです。

例外は、特定のルールや条件を指し、特定の状況下でポリシーをバイパスまたは変更することを許可しますが、これが唯一の方法ではありません!

kyvernoの場合、検証ポリシーがある限り、ウェブフックkyverno-resource-validating-webhook-cfgがポピュレートされます。

Gatekeeperの場合、gatekeeper-validating-webhook-configuration YAMLファイルがあります。

どちらもデフォルト値で提供されますが、管理者チームがこれら2つのファイルを更新する可能性があります。

ユースケース

$ kubectl get validatingwebhookconfiguration kyverno-resource-validating-webhook-cfg -o yaml

現在、次の出力を特定してください:

namespaceSelector:
matchExpressions:
- key: kubernetes.io/metadata.name
operator: NotIn
values:
- default
- TEST
- YOYO
- kube-system
- MYAPP

ここで、kubernetes.io/metadata.name ラベルは名前空間の名前を指します。values リストに名前がある名前空間はポリシーから除外されます:

名前空間の存在を確認します。自動化や誤設定により、一部の名前空間が作成されていない場合があります。名前空間を作成する権限がある場合、values リストに名前がある名前空間を作成すると、ポリシーは新しい名前空間に適用されません。

この攻撃の目的は、誤設定を利用してVWC内のオペレーターの制限を回避し、他の技術を使って権限を昇格させることです。

Abusing Roles/ClusterRoles in Kubernetes

参考文献

Last updated