上次简单说明了下cerbos lite 对于webassembly policy 集成的说明,通过查看lite client 简单说明下
参考处理
- ci/cd 集成处理
这个也比较符合官方hub 的ci/cd 机制,核心是通过git 的repo 管理,集成ci/cd 构建webassembly文件,webassembly 核心exporter 的方法主要是
图片右下方的,之后app 通过lite sdk 加载
- 代码简单说明
如下图
app会调用lite sdk,加载webassembly 文件,当进行check 校验的时候,使用了一个内置实现的简单grpc server,具体的check 方法是在webassembly 中的check 方法中实现的
说明
目前看官方ci/cd 生成webassembly 部分是基于rust 开发的工具,对于实际check 处理是在webassembly 中实现的,在webassembly 中实现看似会造成wasm 文件会大,但是实际上是比较方便的,这样就可以通过ci/cd 进行check 方法的更新,lite 中的处理实际上就类似了一个远程rpc 调用,只是被持久化到本地的一个调用,hub 中的处理是基于http 请求加载wasm 文件的,但是目前还是缺少实际是如何实现的,可以结合rust sdk 以及golang的一些实现尝试自己开发一个类似的实现,核心是提供上边的几个exporter 方法
参考资料
https://docs.cerbos.dev/cerbos-hub/
https://docs.cerbos.dev/cerbos-hub/decision-points-embedded
https://docs.cerbos.dev/cerbos-hub/decision-points-embedded.html
https://github.com/cerbos/cerbos-sdk-javascript/blob/main/docs/lite.lite.md
https://github.com/cerbos/cerbos-sdk-javascript/tree/main/packages/lite
https://github.com/cerbos/cerbos-sdk-javascript/blob/b41a5853b58c8ecfca7d80901efb431a453fa69d/packages/lite/src/server.ts#L115
https://github.com/cerbos/cerbos-sdk-javascript/blob/b41a5853b58c8ecfca7d80901efb431a453fa69d/packages/lite/src/server.ts#L145