使用 Cerbos Hub 和嵌入式 PDP 包进行边缘授权
在之前的文章《Cerbos Hub 入门指南》中,我们介绍了如何使用策略库和 Cerbos PDP 设置 Cerbos Hub 的基础知识。本文将在此基础上,重点介绍嵌入式 PDP,这是管理分布式应用程序授权的关键功能。我们将探讨如何在 Cerbos Hub 中利用嵌入式 PDP 来简化和优化边缘授权。
Cerbos PDP 部署在您自己的基础架构中,而嵌入式 PDP 包则提供了一种在多个 Web 环境中高效运行代码的方法。Cerbos Hub 支持嵌入式 PDP 的使用,使您可以将授权逻辑部署在更靠近用户交互的位置,从而进一步降低延迟并提高性能。
在 Cerbos Hub 中设置嵌入式 PDP 包
每次策略库更新后,Cerbos Hub 都会启动一系列自动化操作。它会启动 CI/CD 流水线,运行测试以检查错误,并在确认无误后将更新后的策略发送到整个系统。
正如我们在引言部分所述,配置中提供的所有标签和选项都会在每次生成构建时被 Cerbos Hub 的自动化流程识别。下面的屏幕截图展示了构建成功后“构建”页面应有的显示效果。
上面显示的是一个功能齐全的 Cerbos PDP,它将在您的基础架构中运行。对于嵌入式构建,请点击Embedded当前选项卡旁边的选项Service卡。
选择Embedded构建版本后,您可以查看所有已成功构建的 Cerbos PDP 嵌入式版本,这些版本可以在设备端或边缘端运行。这就是我们所说的嵌入式 PDP 软件包。
嵌入式策略定义文件 (PDP) 是策略的 WebAssembly (WASM) 编译版本。要在应用程序中使用它,请执行以下操作:
转到Decision points侧边栏中的页面,然后选择选项Embedded卡。
您将看到 cerbos-hub 配置中已配置的标签列表。Cerbos Hub 生成的构建版本会被推送到 CDN(内容分发网络)。下图所示的值Bundle URL代表了生成的构建版本被推送到的位置。
每当 CDN 推送新版本时,原始 URL 都会重定向到新 URL。这意味着您无需在应用程序中更新 URL,因为 Cerbos Hub 会自动处理重定向。
向您的应用程序添加嵌入式 PDP 包
假设你正在开发一个简单的Node.js应用程序,并且你想使用嵌入式PDP来处理你的应用程序权限。
要使用嵌入式 Cerbos PDP Bundles,首先需要将其安装到您的应用程序中。
(更多详情请查看npm 包页面。)
npm install @cerbos/embedded
完成后,返回 Cerbos Hub 的“决策点”页面。选择“嵌入”选项卡,然后复制“捆绑包 URL”。
然后,您可以定义一个文件名,例如cerbos.edge.ts,这将创建一个链接到您刚刚复制的 Bundle URL 的 Cerbos 实例,类似于以下示例:
import { Embedded } from "@cerbos/embedded";
export let cerbos = new Embedded(
fetch("PASTE_THE_BUNDLE_URL_YOU_COPIED_HERE"),
);
我们知道 Cerbos Hub 会自动推送更新。但为了确保您的嵌入式实例始终保持最新状态,请设置您的应用程序定期进行检查。
您可以通过多种方式实现这一点,例如动态轮询、使用 WebSocket 等。
由于这并非本教程的核心部分,我们将使用一个快速的技巧,但我们不建议您在生产应用程序中使用:
setInterval(() => {
cerbos = new Cerbos(fetch(embeddedPdp));
}, 1000 * 30);
现在,无论在应用程序中的哪个位置需要对策略存储库运行权限检查,都可以导入先前导出的cerbos字段。
import { cerbos } from "./cerbos.edge";
然后,您只需调用 Cerbos,传入用户(主体)、正在访问的资源以及用于访问该资源的操作,嵌入式 Cerbos PDP 就会返回 ALLOW 或 DENY 的结果。为了进行权限检查,必须确保客户端能够访问所有相关的资源和主体数据。
await cerbos.isAllowed({
principal: {
id: "user@example.com",
roles: ["USER"],
attr: { tier: "PREMIUM" },
},
resource: {
kind: "document",
id: "1",
attr: { owner: "user@example.com" },
},
action: "view",
}); // => true
搞定了!现在你可以从服务器端的Node.js应用程序和基于浏览器的应用程序检查权限了。
总结
将 Cerbos Hub 的嵌入式 PDP 包集成到您的应用程序架构中,可通过在边缘部署授权流程来增强授权效果。这种方法不仅可以降低延迟、提升性能,还能简化策略管理和执行。通过将 Cerbos Hub 与您的应用程序集成,您可以执行实时权限检查,从而进一步减少后端依赖性并提高应用程序的整体效率。
对于软件工程师而言,Cerbos Hub 嵌入式 PDP 包的实现提供了一种实用高效的解决方案,可以应对复杂的授权挑战。这种方法简化了授权逻辑的部署和更新流程,使开发人员能够将更多精力集中在核心应用程序开发上,而无需过多关注访问控制管理。
文章来源:https://dev.to/cerbos/authorize-on-the-edge-with-cerbos-hub-and-embedded-pdp-bundles-5e6g




