kubewarden/gatekeeper-policy-template

GitHub: kubewarden/gatekeeper-policy-template

用于将现有 Gatekeeper Rego 策略无缝转换为 Kubewarden WebAssembly 模块的自动化模板仓库。

Stars: 0 | Forks: 1

[![稳定版](https://img.shields.io/badge/status-stable-brightgreen?style=for-the-badge)](https://github.com/kubewarden/community/blob/main/REPOSITORIES.md#stable) # gatekeeper-policy-template 这是一个模板仓库,可用于轻松将针对 Gatekeeper 框架的现有 Rego 策略转换为 Kubewarden 策略。 别忘了查看 Kubewarden 的[官方文档](https://docs.kubewarden.io)以获取有关编写策略的更多信息。 ## 要求 要充分利用此模板,您需要以下工具: - [opa](https://github.com/open-policy-agent/opa/releases):用于将代码构建为 wasm 的工具。预期版本为 `v1.0.0` 或更高版本 - [kwctl](https://github.com/kubewarden/kwctl/releases):用于准备和运行 Kubewarden WebAssembly 模块的工具 - [bats](https://github.com/bats-core/bats-core):用于运行端到端测试的工具。如果您决定编写此类测试 ## 介绍 **注意:** 现有的 Rego 代码无需重写。 您只需满足以下要求: 1. 策略评估必须返回一个 `violation` 响应对象。这已经是所有 Gatekeeper 策略的要求。 2. 策略必须使用 `opa` cli 工具编译成 WebAssembly 模块。 3. 策略必须通过 `kwctl annotate` 进行注解。 此模板仓库包含一个示例策略,可用作您策略的基础,以及实现第 2 点和第 3 点所需的所有自动化。 ## 实现细节 实际的策略定义在 `policy.rego` 文件中。该文件定义了一个 `violation` 对象。 ## Rego 策略代码与 OPA v1.0.0 兼容性 随着 OPA (Open Policy Agent) [v1.0.0](https://github.com/open-policy-agent/opa/releases/tag/v1.0.0) 于 2024 年 12 月的发布,关于 Rego 策略语法引入了一项重大变更。 此前,所有规则定义的 `if` 和多值规则的 `contains` 是可选的;现在,它们是强制性的。此变更影响大多数较旧的策略。 以下是您需要了解的摘要: - OPA v1.0.0 语法:OPA v1.0.0 强制要求所有规则定义使用 `if`,多值规则使用 `contains`。不遵守此语法的策略将出错。 - 向后兼容性:如果您需要构建不使用新版 v1.0.0 语法的旧策略,则必须在 `opa build` 命令中提供 `--v0-compatible` 标志。 - Gatekeeper 集成:Gatekeeper 在其 [v3.19.0 版本](https://github.com/open-policy-agent/gatekeeper/releases/tag/v3.19.0) 中将其 OPA 依赖项更新为 v1.0.0。 - Gatekeeper 模板中的 Rego 版本:除非模板在 `code.engine: Rego` 下的 `source` 字段中明确指定 `version: "v1"`,否则 Gatekeeper 假定使用 `v0` 语法。 请查看 Gatekeeper 文档的[此部分](https://open-policy-agent.github.io/gatekeeper/website/docs/constrainttemplates/#enable-opa-rego-v1-syntax-in-constrainttemplates),以获取有关如何处理 Rego 的 `v0` 和 `v1` 版本的更多详细信息。 这对您意味着什么: - 如果 Gatekeeper CR 未指定 Rego 版本,则意味着将使用 `v0`。您必须使用 `OPA_V0_COMPATIBLE=true make` 命令构建策略。 - 如果 Gatekeeper CR 明确指定 `version: "v1"`,则必须在未设置任何环境变量的情况下构建策略。 ## 测试 该策略包含一些使用 Rego 编写的单元测试,可以在 `policy_test.rego` 文件中找到。可以通过以下命令执行单元测试: ``` make test ``` 该仓库还提供了一种针对编译生成的 WebAssembly 模块运行端到端测试的方法。这些测试使用 Kubewarden 的 WebAssembly 运行时执行策略。 e2e 测试使用 [bats](https://github.com/bats-core/bats-core) 实现:Bash 自动化测试系统。WebAssembly 运行时由 [kwctl](https://github.com/kubewarden/kwctl) cli 工具提供。 端到端测试定义在 `e2e.bats` 文件中,可以通过以下命令运行: ``` make e2e-tests ``` ## 自动化 该项目包含 [GitHub Actions](https://docs.github.com/en/actions) 工作流。 它们负责以下自动化任务: - 执行 Rego 测试套件 - 将 Rego 文件构建为单个 WebAssembly 模块 - 使用 Kubewarden 的元数据注解 WebAssembly 模块 - 执行端到端测试 - 推送到 `main` 分支的事件会导致: - 将注解后的 WebAssembly 模块推送到 GitHub Container Registry,使用 `:latest` 标签。 - git 标签的创建会导致: - 创建 GitHub Release,包含注解后的 WebAssembly 模块 - 将注解后的 WebAssembly 模块推送到 GitHub Container Registry,使用 `:` 标签。
标签:AI工具, DevSecOps, EC2, Groq API, IaC, Kubewarden, kwctl, OPA, Rego, WASM, WebAssembly, Web截图, 上游代理, 人工智能安全, 合规性, 容器安全, 模板仓库, 策略即代码, 策略引擎, 策略迁移, 结构化提示词, 网络安全挑战, 网络调试, 聊天机器人安全, 自动化, 靶场