Kubernetes Kyverno バイパス

Reading time: 2 minutes

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

ポリシーの誤設定を悪用する

ルールの列挙

概要を把握することで、どのルールがアクティブで、どのモードで、誰がバイパスできるかを知るのに役立ちます。

bash
$ kubectl get clusterpolicies
$ kubectl get policies

除外の列挙

各 ClusterPolicy および Policy に対して、以下の除外されたエンティティのリストを指定できます。

  • グループ: excludedGroups
  • ユーザー: excludedUsers
  • サービスアカウント (SA): excludedServiceAccounts
  • ロール: excludedRoles
  • クラスターロール: excludedClusterRoles

これらの除外されたエンティティはポリシー要件から免除され、Kyverno はそれらに対してポリシーを強制しません。

1 つの 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/を確認してください。