# Kubernetes OPA Gatekeeper bypass

{{#include ../../../banners/hacktricks-training.md}}

**このページの元の著者は** [**Guillaume**](https://www.linkedin.com/in/guillaume-chapela-ab4b9a196)

## 誤設定の悪用

### ルールの列挙

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

#### 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」です。

<figure><img src="../../../images/05-constraints.png" alt=""><figcaption></figcaption></figure>

公開されているサービスを検索します：
```bash
$ kubectl get services -A | grep gatekeeper
$ kubectl get services -A | grep 'gatekeeper-policy-manager-system'
```
### 除外されたネームスペース

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

### バイパス

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

{{#ref}}
../abusing-roles-clusterroles-in-kubernetes/
{{#endref}}

## ValidatingWebhookConfigurationの悪用

制約をバイパスするもう一つの方法は、ValidatingWebhookConfigurationリソースに焦点を当てることです：

{{#ref}}
../kubernetes-validatingwebhookconfiguration.md
{{#endref}}

## 参考文献

- [https://github.com/open-policy-agent/gatekeeper](https://github.com/open-policy-agent/gatekeeper)
- [https://github.com/sighupio/gatekeeper-policy-manager](https://github.com/sighupio/gatekeeper-policy-manager)

{{#include ../../../banners/hacktricks-training.md}}
