kubewarden/policy-sdk-js
GitHub: kubewarden/policy-sdk-js
Kubewarden 的 TypeScript SDK,让开发者可以用 TypeScript 编写 Kubernetes 准入控制策略并编译为 WebAssembly 模块运行。
Stars: 2 | Forks: 7
[](https://github.com/kubewarden/community/blob/main/REPOSITORIES.md#sandbox)
[](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截图, 上游代理, 可视化界面, 子域名突变, 安全插件, 容器安全, 开发工具包, 数据可视化, 暗色界面, 策略即代码, 策略引擎, 编译器, 网络安全挑战, 网络流量审计, 聊天机器人安全, 自动化攻击, 转译器