sse-secure-systems/connaisseur
GitHub: sse-secure-systems/connaisseur
一个 Kubernetes 准入控制器,通过验证容器镜像签名来确保集群中仅部署可信且未被篡改的镜像。
Stars: 470 | Forks: 63
[](https://github.com/sse-secure-systems/connaisseur/blob/master/LICENSE)
[](https://artifacthub.io/packages/search?repo=connaisseur)
[](https://github.com/sse-secure-systems/connaisseur/actions/workflows/02_push.yml)
[](https://github.com/sse-secure-systems/connaisseur/actions/workflows/05_nightly.yaml)
[](https://codecov.io/gh/sse-secure-systems/connaisseur)

一个用于将容器镜像签名验证和信任锚定集成到集群中的 Kubernetes admission controller。
**:point_right: 完整文档可在[此处](https://sse-secure-systems.github.io/connaisseur/)获取 :book:**
**:point_right: 欢迎通过 [GitHub Discussions](https://github.com/sse-secure-systems/connaisseur/discussions) 联系我们 :speech_balloon:**
## 什么是 Connaisseur?
Connaisseur 确保 Kubernetes 集群中容器镜像的完整性和来源。
为此,它会拦截发送到 Kubernetes 集群的资源创建或更新请求,识别所有容器镜像,并根据预配置的公钥验证其签名。
根据验证结果,它会接受或拒绝这些请求。
Connaisseur 基于三个核心价值观开发:*安全性*、*易用性*、*兼容性*。
它的构建旨在可扩展,目前旨在支持以下签名解决方案:
- [Notary V1](https://github.com/theupdateframework/notary) / [Docker Content Trust](https://docs.docker.com/engine/security/trust/)
- [Sigstore](https://sigstore.dev/) / [Cosign](https://github.com/sigstore/cosign)
- [Notary V2](https://github.com/notaryproject/nv2) (计划中)
它提供了若干附加功能,例如:
- [告警](docs/features/alerting.md):*根据验证结果发送告警*
- [检测模式](docs/features/detection_mode.md):*警告但不阻止无效镜像*
- [命名空间验证](docs/features/namespaced_validation.md):*将验证限制在特定的命名空间*
## 快速开始
开始验证镜像签名仅需几分钟时间:

Connaisseur 预配置了其自身仓库和 [Docker 官方镜像](https://docs.docker.com/docker-hub/official_images/)的公钥(官方镜像可在[此处](https://hub.docker.com/search?q=&type=image&image_filter=official)找到)。
可以通过 `helm/values.yaml` 对其进行完全配置。
为了快速开始,请克隆 Connaisseur 仓库:
```
git clone https://github.com/sse-secure-systems/connaisseur.git
```
接下来,通过 [Helm](https://helm.sh) 安装 Connaisseur:
```
helm install connaisseur helm --atomic --create-namespace --namespace connaisseur
```
安装完成后,您就可以开始了。
可以通过官方 Docker 镜像(如 `hello-world`)来测试成功的验证:
```
kubectl run hello-world --image=docker.io/hello-world
```
或者使用我们签名的 `testimage`:
```
kubectl run demo --image=docker.io/securesystemsengineering/testimage:signed
```
两者都会返回 `pod/ created`。然而,当尝试部署未签名的镜像时:
```
kubectl run demo --image=docker.io/securesystemsengineering/testimage:unsigned
```
Connaisseur 会拒绝该请求并返回错误 `(...) Unable to find signed digest (...)`. 由于上述镜像是使用 Docker Content Trust 签名的,您可以使用 `docker trust inspect --pretty ` 检查信任数据。
要卸载 Connaisseur,请使用:
```
helm uninstall connaisseur --namespace connaisseur
```
恭喜 :tada: 您刚刚验证了集群中的首批镜像!
要开始配置和验证您自己的镜像与签名,请遵循我们的[安装指南](https://sse-secure-systems.github.io/connaisseur/latest/getting_started/)。
## 讨论、支持与反馈
我们希望根据社区的需求来指导 Connaisseur 的开发,我们期待您的反馈,并在您需要支持时乐于提供帮助!因此,请随时通过 [GitHub Discussions](https://github.com/sse-secure-systems/connaisseur/discussions) 与我们联系。
## 安全政策
我们感谢任何关于漏洞报告的社区支持!如何提交报告在我们的[安全政策](docs/SECURITY.md)中进行了描述。
## 联系方式
您可以通过电子邮件 [connaisseur@securesystems.dev](mailto:connaisseur@securesystems.dev) 联系我们。
标签:Apache-2.0, DCT, DevSecOps, Docker, EVTX分析, EVTX分析, Lerna, Notary, PyVis, Web截图, XML注入, 上游代理, 准入控制器, 子域名突变, 安全防御评估, 完整性校验, 容器安全, 文本排版, 策略执行, 请求拦截, 逆向工具, 透明加密, 镜像来源, 镜像签名验证