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
ConstraintTemplate と Constraint は、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