# Kubernetes 准入控制器

了解可如何使用准入控制器在 Kubernetes 群集中强制实施项目证明。

## 关于 Kubernetes 准入控制器

[项目证明](/zh/enterprise-cloud@latest/actions/how-tos/secure-your-work/use-artifact-attestations/use-artifact-attestations)使你能够为自己构建的软件创建不可伪造的来源和完整性保证。 反过来，使用软件的人员可以验证软件是在哪里以及如何构建的。

Kubernetes 准入控制器是管理 Kubernetes API 服务器行为的插件。 它们通常用于在 Kubernetes 群集中强制实施安全策略和最佳做法。

使用开源 [Sigstore Policy Controller](https://docs.sigstore.dev/policy-controller/overview/) 项目，你可以向 Kubernetes 群集添加一个准入控制器，以强制实施工件证明。 通过这种方式，可以确保只能部署具有有效证明的项目。

若要[安装控制器](/zh/enterprise-cloud@latest/actions/how-tos/secure-your-work/use-artifact-attestations/enforce-artifact-attestations)，我们提供了[两个 Helm 图表](https://github.com/github/artifact-attestations-helm-charts)：一个用于部署 Sigstore Policy Controller，另一个用于加载 GitHub 信任根和默认策略。

### 关于映像验证

安装策略控制器后，它将截获所有镜像拉取请求，并验证镜像的身份。 证明必须作为 [OCI 附加工件](https://oras.land/docs/concepts/reftypes/)存储在映像注册表中，其中包含一个 [Sigstore 捆绑包](https://docs.sigstore.dev/about/bundle/)，该捆绑包包含证明和用于验证证明的加密材料（例如证书和签名）。 然后执行验证过程，确保映像是使用指定的生成证明生成的，并与群集管理员启用的任何策略匹配。

若要使映像可验证，必须在注册表中具有有效的证明，这可以通过在 `push-to-registry: true` 操作中启用 `actions/attest` 属性来完成。 有关如何为容器映像生成证明的更多详细信息，请参阅“[生成容器映像的生成证明](/zh/enterprise-cloud@latest/actions/how-tos/secure-your-work/use-artifact-attestations/use-artifact-attestations)”。

### 关于信任根和策略

Sigstore Policy Controller 主要配置了信任根和策略，由自定义资源 `TrustRoot` 和 `ClusterImagePolicy` 表示。
`TrustRoot` 表示用于验证证明的公钥材料的受信任分发渠道。
`ClusterImagePolicy` 表示用于对镜像强制实施认证的策略。

`TrustRoot` 可能还包含 [TUF](https://theupdateframework.io/) 存储库根路径，使群集能够持续安全地接收对其受信任公钥材料的更新。 如果未指定，则默认情况下，`ClusterImagePolicy` 将使用开放源代码 Sigstore Public Good Instance 的密钥材料。 验证为专用存储库生成的证明时，`ClusterImagePolicy` 必须引用 GitHub `TrustRoot`。

## 后续步骤

准备好使用准入控制器时，请参阅 [使用 Kubernetes 准入控制器强制实施项目证明](/zh/enterprise-cloud@latest/actions/how-tos/secure-your-work/use-artifact-attestations/enforce-artifact-attestations)。