kubewarden/policy-sdk-js

GitHub: kubewarden/policy-sdk-js

Kubewarden 的 TypeScript SDK,让开发者可以用 TypeScript 编写 Kubernetes 准入控制策略并编译为 WebAssembly 模块运行。

Stars: 2 | Forks: 7

[![Sandbox](https://img.shields.io/badge/status-sandbox-red?style=for-the-badge)](https://github.com/kubewarden/community/blob/main/REPOSITORIES.md#sandbox) [![License: Apache 2.0](https://img.shields.io/badge/License-Apache2.0-brightgreen.svg)](https://opensource.org/licenses/Apache-2.0) # Kubewarden TypeScript Policy SDK 本仓库包含用于编写 Kubewarden 策略的 TypeScript SDK,以及一个演示其用法的示例策略。 该策略使用 TypeScript 编写,然后被转译为 JavaScript, 最后编译为 WebAssembly。 JavaScript 到 WebAssembly 的编译是使用 Bytecode Alliance 的 [Javy](https://github.com/bytecodealliance/javy) 项目完成的。 Kubewarden 策略构建时针对的是 Kubewarden [WASI](https://docs.kubewarden.io/tutorials/writing-policies/wasi/intro-wasi) 策略类型。 该策略演示了在策略评估期间执行验证并使用 [Kubewarden 的主机能力](https://docs.kubewarden.io/reference/spec/host-capabilities/intro-host-capabilities) 是可行的。 ## 项目结构 项目由以下组件构成: - **`js/`**: 核心 TypeScript SDK。 - **`demo-policy/`**: 演示 SDK 功能的示例策略。 - **`javy-plugin-kubewarden/`**: 用于 JavaScript 到 WebAssembly 编译的自定义 Javy 插件 ## 环境要求 策略需要在主机上安装以下工具: - **Rust**: 构建 Kubewarden Javy 插件需要 Rust 编译器。 必须添加 `wasm32-wasip2` 目标。推荐使用 [rustup](https://www.rust-lang.org/tools/install)。 - **TypeScript Compiler (`tsc`)**: 将 TypeScript 文件编译为 JavaScript 所需。 - **npm**: 安装项目依赖所需。 - **[Javy](https://github.com/bytecodealliance/javy/releases)**: 将 JavaScript 代码转换为 WebAssembly 模块的编译器。推荐使用 7.0.0 版本。 - `clang`: 构建 quickjs 相关的 Rust crates 所需。 - **[kwctl](https://github.com/kubewarden/kwctl/)**: 运行 最终策略所需。 - **[`bats`](https://github.com/bats-core/bats-core)**: 运行端到端 测试所需。使用[官方安装说明](https://bats-core.readthedocs.io/en/stable/installation.html)在本地安装 bats - **[`jest`](https://jestjs.io/docs/getting-started)**: 运行单元测试所需。 ## 插件位置 当你在项目中将 SDK 作为依赖项安装时,插件将位于:`node_modules/kubewarden-policy-sdk/js/plugin/` 这是你在构建使用此 SDK 的策略时需要引用的路径。 ## 构建 在 `js` 目录中,运行以下命令: ``` make annotated-policy.wasm ``` 这将生成一个 Kubewarden 策略,随后可以使用以下命令运行: ``` kwctl run annotated-policy.wasm -r demo_policy/test_data/no_privileged_containers.json ``` 端到端测试可以使用以下命令运行: ``` make e2e-tests ```
标签:AI工具, APT组织, Bytecode Alliance, CMS安全, DevSecOps, JavaScript, Javy, Kubewarden, Rust, TypeScript, WASI, WASM, WebAssembly, Web截图, 上游代理, 可视化界面, 子域名突变, 安全插件, 容器安全, 开发工具包, 数据可视化, 暗色界面, 策略即代码, 策略引擎, 编译器, 网络安全挑战, 网络流量审计, 聊天机器人安全, 自动化攻击, 转译器