sigstore/cosign-gatekeeper-provider

GitHub: sigstore/cosign-gatekeeper-provider

这是一个将 OPA Gatekeeper 与 Cosign 集成的工具,旨在通过验证容器镜像签名,在 Kubernetes 准入控制阶段确保仅允许有效镜像运行。

Stars: 79 | Forks: 22

# cosign-gatekeeper-provider ## 状态 本项目已归档;一个与 Sigstore 公益基础设施(Public Good Infrastructure)互操作的替代项目是 [https://github.com/github/artifact-attestations-opa-provider](https://github.com/github/artifact-attestations-opa-provider)。 ## 概述 将 [OPA Gatekeeper 的新 ExternalData 特性](https://open-policy-agent.github.io/gatekeeper/website/docs/externaldata) 与 [cosign](https://github.com/sigstore/cosign) 集成,通过验证镜像签名来确定镜像是否有效。 ## 安装 - 部署启用 external data 的 Gatekeeper(`--enable-external-data`) ``` helm repo add gatekeeper https://open-policy-agent.github.io/gatekeeper/charts helm install gatekeeper/gatekeeper \ --name-template=gatekeeper \ --namespace gatekeeper-system --create-namespace \ --set enableExternalData=true \ --set controllerManager.dnsPolicy=ClusterFirst,audit.dnsPolicy=ClusterFirst \ --version 3.10.0 ``` _注意:此仓库目前仅适用于 Gatekeeper 3.10 和处于 `alpha` 阶段的 `externalData` 特性。有一个开放的 issue 用于跟踪对 Gatekeeper 3.11 和处于 `beta` 阶段的 `externalData` 特性的支持:https://github.com/sigstore/cosign-gatekeeper-provider/issues/20._ 让我们安装 `cosign-gatekeeper-provider`: - `kubectl apply -f manifest` - `kubectl apply -f manifest/provider.yaml` - `kubectl apply -f policy/template.yaml` - `kubectl apply -f policy/constraint.yaml` ## 验证 为了成功测试,我们应该使用 [cosign](https://github.com/sigstore/cosign#installation) 工具对我们的一张镜像进行签名。所以,让我们先做这一步: 生成密钥对 ``` $ cosign generate-key-pair ``` 我们在 `policy/examples` 下有两个文件,一个包含已签名镜像的有效清单,另一个是无效的。要执行相同的操作,你应该像我这样对你的镜像进行签名: ``` $ crane copy alpine:latest devopps/alpine:signed $ crane copy alpine:3.14 devopps/alpine:unsigned $ cosign sign --key cosign.key devopps/signed:latest ``` 因此,一旦准备就绪,让我们逐一应用这些清单。它应该允许部署 valid.yaml 中的 Pod,并拒绝另一个。
标签:APT组织, Cosign, EVTX分析, ExternalData, Helm, OPA, PyVis, Sigstore, Web截图, 子域名突变, 容器安全, 知识图谱, 策略即代码, 聊天机器人安全, 镜像签名, 靶场