Kubernetes Kyverno bypass

Reading time: 1 minute

Mwandishi wa awali wa ukurasa huu ni Guillaume

Kutumia makosa ya usanidi wa sera

Kuorodhesha sheria

Kuwa na muonekano wa jumla kunaweza kusaidia kujua ni sheria zipi zinafanya kazi, katika hali gani na nani anaweza kuzipita

bash
$ kubectl get clusterpolicies
$ kubectl get policies

Enumerate Excluded

Kwa kila ClusterPolicy na Policy, unaweza kubainisha orodha ya viumbe vilivyotengwa, ikiwa ni pamoja na:

  • Makundi: excludedGroups
  • Watumiaji: excludedUsers
  • Akaunti za Huduma (SA): excludedServiceAccounts
  • Majukumu: excludedRoles
  • Majukumu ya Klastasi: excludedClusterRoles

Viumbe vilivyotengwa vitakuwa huru kutoka kwa mahitaji ya sera, na Kyverno haitatekeleza sera kwao.

Example

Hebu tuingie kwenye mfano mmoja wa clusterpolicy:

$ kubectl get clusterpolicies MYPOLICY -o yaml

Tafuta vitu vilivyotengwa:

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:*

Katika klasta, vipengele vingi vilivyoongezwa, waendeshaji, na programu vinaweza kuhitaji kutengwa kutoka kwa sera ya klasta. Hata hivyo, hii inaweza kutumika kwa kulenga viumbe wenye mamlaka. Katika baadhi ya matukio, inaweza kuonekana kwamba jina la nafasi halipo au kwamba huna ruhusa ya kujifanya kuwa mtumiaji, ambayo inaweza kuwa ishara ya usanidi mbaya.

Kutumia ValidatingWebhookConfiguration

Njia nyingine ya kupita sera ni kuzingatia rasilimali ya ValidatingWebhookConfiguration:

Kubernetes ValidatingWebhookConfiguration

Maelezo zaidi

Kwa maelezo zaidi angalia https://madhuakula.com/kubernetes-goat/docs/scenarios/scenario-22/securing-kubernetes-clusters-using-kyverno-policy-engine/welcome/