kubewarden/opa-policy-template

GitHub: kubewarden/opa-policy-template

将现有 Open Policy Agent 的 Rego 策略无缝迁移为 Kubewarden WebAssembly 策略的模板仓库,无需重写原有策略代码。

Stars: 3 | Forks: 2

[![稳定版](https://img.shields.io/badge/status-stable-brightgreen?style=for-the-badge)](https://github.com/kubewarden/community/blob/main/REPOSITORIES.md#stable) # opa-policy-template 这是一个模板仓库,可用于轻松将针对 Open Policy Agent 框架的现有 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. 策略评估必须返回一个 `AdmissionReview` 响应对象。这 已经是所有旨在与 Kubernetes 配合使用的 Open Policy Agent 策略的一项要求。 2. 策略必须使用 `opa` cli 工具编译为 WebAssembly 模块。 3. 策略必须通过 `kwctl annotate` 进行注解。 此模板仓库包含一个可用作您策略基础的示例策略,以及实现第 2 点和第 3 点所需的所有自动化。 ## 实现细节 实际的策略定义在 `policy.rego` 文件中。此文件定义了 一个 `deny` 对象,该对象随后被嵌入到 `AdmissionReview` 响应中。 `AdmissionReview` 对象定义在 `utility/policy.rego` 文件中。 您可能不需要更改此文件。 ## 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` 标志。 这对您意味着: - 如果您的 Rego 策略遵循 `v0` 语法。您必须使用 `OPA_V0_COMPATIBLE=true make` 命令构建策略。 - 如果您的 Rego 策略遵循 `v1` 语法,您必须在未设置任何环境变量的情况下构建策略。 ## 测试 该策略有一些使用 Rego 编写的单元测试,可以在 `policy_test.rego` 文件中找到。可以通过以下 命令执行单元测试: ``` make test ``` 该仓库还提供了一种针对编译生成的 WebAssembly 模块运行端到端测试的方法。这些测试使用 Kubewarden 的 WebAssembly 运行时执行策略。 端到端测试使用 [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` 分支的事件会触发: - 使用 `:latest` 标签将注解后的 WebAssembly 模块推送到 GitHub Container Registry。 - git 标签的创建会触发: - 创建 GitHub Release,其中包含注解后的 WebAssembly 模块 - 使用 `:` 标签将注解后的 WebAssembly 模块推送到 GitHub Container Registry。
标签:AI工具, DevSecOps, Groq API, K8s安全, Kubewarden, kwctl, LNA, OPA, Rego, WASM, WebAssembly, 上游代理, 代码移植, 模板库, 策略即代码, 策略引擎, 结构化提示词, 网络安全挑战, 聊天机器人安全, 靶场