Kubernetes Kyverno bypass

Reading time: 1 minute

Оригінальний автор цієї сторінки Guillaume

Зловживання неправильними налаштуваннями політик

Перерахунок правил

Мати огляд може допомогти зрозуміти, які правила активні, в якому режимі і хто може їх обійти

bash
$ kubectl get clusterpolicies
$ kubectl get policies

Перерахувати виключені

Для кожної ClusterPolicy та Policy ви можете вказати список виключених сутностей, включаючи:

  • Групи: excludedGroups
  • Користувачі: excludedUsers
  • Облікові записи служб (SA): excludedServiceAccounts
  • Ролі: excludedRoles
  • Ролі кластера: excludedClusterRoles

Ці виключені сутності будуть звільнені від вимог політики, і Kyverno не буде застосовувати політику до них.

Приклад

Давайте розглянемо один приклад clusterpolicy:

$ kubectl get clusterpolicies MYPOLICY -o yaml

Шукайте виключені сутності:

yaml
exclude:
any:
- clusterRoles:
- cluster-admin
- subjects:
- kind: User
name: system:serviceaccount:DUMMYNAMESPACE:admin
- kind: User
name: system:serviceaccount:TEST:thisisatest
- kind: User
name: system:serviceaccount:AHAH:*

У кластері численні додаткові компоненти, оператори та програми можуть вимагати виключення з політики кластера. Однак це може бути використано шляхом націлювання на привілейовані сутності. У деяких випадках може здаватися, що простір імен не існує або що у вас немає дозволу на наслідування користувача, що може бути ознакою неправильного налаштування.

Зловживання ValidatingWebhookConfiguration

Ще один спосіб обійти політики - зосередитися на ресурсі ValidatingWebhookConfiguration:

Kubernetes ValidatingWebhookConfiguration

Більше інформації

Для отримання додаткової інформації перегляньте https://madhuakula.com/kubernetes-goat/docs/scenarios/scenario-22/securing-kubernetes-clusters-using-kyverno-policy-engine/welcome/