Kubernetes OPA Gatekeeper バイパス

Reading time: 2 minutes

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

誤設定の悪用

ルールの列挙

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

CLIを使用して

bash
$ kubectl api-resources | grep gatekeeper
k8smandatoryannotations                                                             constraints.gatekeeper.sh/v1beta1                  false        K8sMandatoryAnnotations
k8smandatorylabels                                                                  constraints.gatekeeper.sh/v1beta1                  false        K8sMandatoryLabel
constrainttemplates                                                                 templates.gatekeeper.sh/v1                         false        ConstraintTemplate

ConstraintTemplateConstraint は、Open Policy Agent (OPA) Gatekeeper で Kubernetes リソースにルールを強制するために使用できます。

bash
$ kubectl get constrainttemplates
$ kubectl get k8smandatorylabels

GUIを使用して

Gatekeeper Policy Managerを使用してOPAルールにアクセスするためのグラフィカルユーザーインターフェースも利用可能です。これは「Kubernetesクラスター内のOPA Gatekeeperポリシーのステータスを表示するためのシンプルな_読み取り専用_ウェブUI」です。

公開されているサービスを検索します:

bash
$ kubectl get services -A | grep gatekeeper
$ kubectl get services -A | grep 'gatekeeper-policy-manager-system'

除外されたネームスペース

上の画像に示されているように、特定のルールはすべてのネームスペースやユーザーに普遍的に適用されない場合があります。代わりに、ホワイトリスト方式で機能します。例えば、liveness-probe 制約は、指定された5つのネームスペースには適用されません。

バイパス

Gatekeeperの設定を包括的に把握することで、特権を得るために悪用できる可能性のある誤設定を特定することができます。ルールが適用されないホワイトリストまたは除外されたネームスペースを探し、そこで攻撃を実行します。

Abusing Roles/ClusterRoles in Kubernetes

ValidatingWebhookConfigurationの悪用

制約をバイパスする別の方法は、ValidatingWebhookConfigurationリソースに焦点を当てることです :

Kubernetes ValidatingWebhookConfiguration

参考文献