Kubernetes ValidatingWebhookConfiguration
Reading time: 4 minutes
このページの元の著者は 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
ValidatingWebhookConfigurationとポリシーの主な違いは:

Kyverno.png
- ValidatingWebhookConfiguration (VWC) : Kubernetesリソースで、受信するKubernetes APIリクエストを一連の事前定義されたルールと制約に対して検証するサーバーサイドコンポーネントである検証ウェブフックを定義します。
- Kyverno ClusterPolicy: Kubernetesリソース(ポッド、デプロイメント、サービスなど)を検証および強制するためのルールと制約のセットを指定するポリシー定義です。
Enumeration
$ kubectl get ValidatingWebhookConfiguration
KyvernoとGatekeeper VWCの悪用
インストールされているすべてのオペレーターには、少なくとも1つのValidatingWebHookConfiguration(VWC)があります。
KyvernoとGatekeeperは、クラスター全体でポリシーを定義および強制するためのフレームワークを提供するKubernetesポリシーエンジンです。
例外は、特定のルールや条件を指し、特定の状況下でポリシーをバイパスまたは変更することを許可しますが、これが唯一の方法ではありません!
kyvernoの場合、検証ポリシーがある限り、ウェブフックkyverno-resource-validating-webhook-cfg
が populatedされます。
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
リストに名前がある名前空間を作成すると、ポリシーは新しい名前空間に適用されません。
この攻撃の目的は、オペレーターの制限を回避し、他の技術で権限を昇格させるために 誤設定 を悪用することです。
Abusing Roles/ClusterRoles in Kubernetes