kubewarden/kubewarden-controller
GitHub: kubewarden/kubewarden-controller
基于 WebAssembly 的 Kubernetes 动态准入控制器,支持使用多种编程语言编写策略来管理和审计集群资源。
Stars: 225 | Forks: 44
[](https://github.com/kubewarden/community/blob/main/REPOSITORIES.md#core-scope)
[](https://github.com/kubewarden/community/blob/main/REPOSITORIES.md#stable)
[](https://artifacthub.io/packages/search?repo=kubewarden&kind=0&verified_publisher=true&official=true&cncf=true&sort=relevance&page=1)
[](https://www.bestpractices.dev/projects/6502)
[](https://app.fossa.com/projects/custom%252B25850%252Fgithub.com%252Fkubewarden%252Fkubewarden-controller?ref=badge_shield)
[](https://scorecard.dev/viewer/?uri=github.com/kubewarden/kubewarden-controller)
[](https://clomonitor.io/projects/cncf/kubewarden)
Kubewarden 是一个 Kubernetes Dynamic Admission Controller,它使用
WebAssembly 编写的策略。
欲了解更多信息,请参阅 [Kubewarden 官方网站](https://kubewarden.io/)。
# Kubewarden Admission Controller - Monorepo
本仓库是一个 monorepo,包含 Kubewarden Admission Controller 所有不同
组件的源代码:
- **kubewarden-controller**:一个 Kubernetes controller,允许您动态注册 Kubewarden 准入策略,并将其与部署它的集群中的 Kubernetes webhooks 进行协调
- **policy-server**:评估用 WebAssembly 编写的准入策略的运行时组件
- **audit-scanner**:根据注册的策略扫描集群中现有资源的组件
- **kwctl**:用于测试和管理 Kubewarden 策略的 CLI 工具
## 文档
完整详尽的文档可在 [docs.kubewarden.io](https://docs.kubewarden.io) 获取。
[`docs/`](./docs) 文件夹包含每个组件的 README 文件:
- [Controller](./docs/controller)
- [Policy Server](./docs/policy-server)
- [Audit Scanner](./docs/audit-scanner)
- [kwctl](./docs/kwctl)
- [CRDs](./docs/crds)
## 安装
kubewarden-controller 可以使用 Helm chart 进行部署。有关说明,
请参阅 https://charts.kubewarden.io。
请参阅我们的[快速入门](https://docs.kubewarden.io/quick-start)以了解更多详情。
# 软件物料清单 & 来源
所有 Kubewarden 组件在每次发布时都会发布其软件物料清单 (SBOM) 和构建
[Provenance](https://slsa.dev/spec/v1.0/provenance) 信息。它遵循 [SPDX](https://spdx.dev/) 格式和
[SLSA](https://slsa.dev/provenance/v0.2#schema) 来源模式。
这两个文件均由 [Docker
buildx](https://docs.docker.com/build/metadata/attestations/) 在构建
过程中生成,并与容器镜像一起存储在容器注册表中,
同时也上传到发布页面。
您可以在[发布资产](https://github.com/kubewarden/kubewarden-controller/releases)中找到它们以及用于签名它的签名和证书,
并且它们作为遵循 [in-toto SPDX
predicate](https://github.com/in-toto/attestation/blob/main/spec/predicates/spdx.md)
格式的 JSON 编码文档附加到镜像中。您可以使用
[`crane`](https://github.com/google/go-containerregistry/blob/main/cmd/crane/README.md)
或 [`docker buildx imagetools
inspect`](https://docs.docker.com/reference/cli/docker/buildx/imagetools/inspect) 获取它们。
您可以使用以下命令验证容器镜像:
```
cosign verify-blob --certificate-oidc-issuer=https://token.actions.githubusercontent.com \
--certificate-identity="https://github.com/kubewarden/kubewarden-controller/.github/workflows/attestation.yml@" \
--bundle kubewarden-controller-attestation-amd64-provenance.intoto.jsonl.bundle.sigstore \
kubewarden-controller-attestation-amd64-provenance.intoto.jsonl
```
要验证证明清单及其层签名:
```
cosign verify --certificate-oidc-issuer=https://token.actions.githubusercontent.com \
--certificate-identity="https://github.com/kubewarden/kubewarden-controller/.github/workflows/attestation.yml@" \
ghcr.io/kubewarden/kubewarden-controller@sha256:1abc0944378d9f3ee2963123fe84d045248d320d76325f4c2d4eb201304d4c4e
```
该 sha256 哈希值是证明清单或其层的摘要。
因此,您需要使用 UI 或 `crane` 等工具在注册表中找到此哈希值。
例如,以下命令将显示 `latest` 标签的所有
证明清单:
```
crane manifest ghcr.io/kubewarden/kubewarden-controller:latest | jq '.manifests[] | select(.annotations["vnd.docker.reference.type"]=="attestation-manifest")'
{
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"digest": "sha256:fc01fa6c82cffeffd23b737c7e6b153357d1e499295818dad0c7d207f64e6ee8",
"size": 1655,
"annotations": {
"vnd.docker.reference.digest": "sha256:611d499ec9a26034463f09fa4af4efe2856086252d233b38e3fc31b0b982d369",
"vnd.docker.reference.type": "attestation-manifest"
},
"platform": {
"architecture": "unknown",
"os": "unknown"
}
}
{
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"digest": "sha256:e0cd736c2241407114256e09a4cdeef55eb81dcd374c5785c4e5c9362a0088a2",
"size": 1655,
"annotations": {
"vnd.docker.reference.digest": "sha256:03e5db83a25ea2ac498cf81226ab8db8eb53a74a2c9102e4a1da922d5f68b70f",
"vnd.docker.reference.type": "attestation-manifest"
},
"platform": {
"architecture": "unknown",
"os": "unknown"
}
}
```
然后您可以使用 `digest` 字段来验证证明清单及其
层签名。
```
cosign verify --certificate-oidc-issuer=https://token.actions.githubusercontent.com \
--certificate-identity="https://github.com/kubewarden/kubewarden-controller/.github/workflows/attestation.yml@" \
ghcr.io/kubewarden/kubewarden-controller@sha256:fc01fa6c82cffeffd23b737c7e6b153357d1e499295818dad0c7d207f64e6ee8
crane manifest ghcr.io/kubewarden/kubewarden-controller@sha256:fc01fa6c82cffeffd23b737c7e6b153357d1e499295818dad0c7d207f64e6ee8
{
"schemaVersion": 2,
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"config": {
"mediaType": "application/vnd.oci.image.config.v1+json",
"digest": "sha256:eda788a0e94041a443eca7286a9ef7fce40aa2832263f7d76c597186f5887f6a",
"size": 463
},
"layers": [
{
"mediaType": "application/vnd.in-toto+json",
"digest": "sha256:563689cdee407ab514d057fe2f8f693189279e10bfe4f31f277e24dee00793ea",
"size": 94849,
"annotations": {
"in-toto.io/predicate-type": "https://spdx.dev/Document"
}
},
{
"mediaType": "application/vnd.in-toto+json",
"digest": "sha256:7ce0572628290373e17ba0bbb44a9ec3c94ba36034124931d322ca3fbfb768d9",
"size": 7363045,
"annotations": {
"in-toto.io/predicate-type": "https://spdx.dev/Document"
}
},
{
"mediaType": "application/vnd.in-toto+json",
"digest": "sha256:dacf511c5ec7fd87e8692bd08c3ced2c46f4da72e7271b82f1b3720d5b0a8877",
"size": 71331,
"annotations": {
"in-toto.io/predicate-type": "https://spdx.dev/Document"
}
},
{
"mediaType": "application/vnd.in-toto+json",
"digest": "sha256:594da3e8bd8c6ee2682b0db35857933f9558fd98ec092344a6c1e31398082f4d",
"size": 980,
"annotations": {
"in-toto.io/predicate-type": "https://spdx.dev/Document"
}
},
{
"mediaType": "application/vnd.in-toto+json",
"digest": "sha256:7738d8d506c6482aaaef1d22ed920468ffaf4975afd28f49bb50dba2c20bf2ca",
"size": 13838,
"annotations": {
"in-toto.io/predicate-type": "https://slsa.dev/provenance/v0.2"
}
}
]
}
cosign verify --certificate-oidc-issuer=https://token.actions.githubusercontent.com \
--certificate-identity="https://github.com/kubewarden/kubewarden-controller/.github/workflows/attestation.yml@" \
ghcr.io/kubewarden/kubewarden-controller@sha256:594da3e8bd8c6ee2682b0db35857933f9558fd98ec092344a6c1e31398082f4d
```
请注意,每个证明清单(针对每个架构)都有自己的层。
每一层都是 Docker Buildx 在多阶段构建过程中生成的不同 SBOM SPDX 或
provenance 文件。您也可以使用 `crane` 下载证明文件:
```
crane blob ghcr.io/kubewarden/kubewarden-controller@sha256:7738d8d506c6482aaaef1d22ed920468ffaf4975afd28f49bb50dba2c20bf2ca
```
## 安全披露
请参阅 kubewarden/community 仓库中的 [SECURITY.md](https://github.com/kubewarden/community/blob/main/SECURITY.md)。
# 变更日志
参见 [GitHub Releases 内容](https://github.com/kubewarden/kubewarden-controller/releases)。
标签:AI工具, CNCF, DevSecOps, Go, Helm Charts, Kubewarden, PyVis, Ruby工具, Rust, WASM, WebAssembly, Web截图, web渗透, 上游代理, 准入控制器, 动态准入控制, 可视化界面, 子域名突变, 安全策略管理, 容器安全, 提示注入, 日志审计, 策略即代码, 策略引擎, 网络安全挑战, 网络流量审计, 聊天机器人安全, 软件供应链安全, 远程方法调用, 通知系统, 集群管理