正如 David 所提到的,XACML 可用于数据库级别的过滤。
为数据库实现 XACML
下图适用于 SQL,但可以用作任何数据库技术的一般示例。
让我们看看这是如何工作的:
- SQL 语句被截获。
- 向实现 XACML 的外部授权服务发送查询
- 授权引擎 (PDP) 评估用 XACML 或 ALFA(XACML 的实现)编写的相关策略。
- 它可以查询外部属性源 (PIP) 以获取更多信息。
- 结果:SQL 语句被动态修改为只为用户检索授权数据。
这将如何在应用程序中使用
您选择使用的 XACML 实现理想情况下将具有您选择的语言的 SDK 或支持 XACML REST 配置文件。两者都可以集成到您的应用程序中。
鉴于您正在使用 REST 调用,我认为您不必添加太多代码即可将您的应用程序与 XACML 的实现集成。
为 API 网关实现 XACML
此集成中使用的原则是 API 网关能够调用第三方服务。
在这种情况下,第三方服务是您的 XACML 实现的策略决策点 (PDP)。实现必须支持 REST/JSON。
API 网关被配置为向 PDP 发送细粒度的授权请求。
使用 PDP 公开的 REST/JSON 接口发出请求。PDP 然后返回响应。
XACML 的 JSON 配置文件扩展了请求/响应模式,允许请求和响应都以 JSON 编码而不是传统的 XML 编码。这使得请求和响应更容易阅读,并且尺寸也更小,因此传输的数据更少。
XACML 的实现
有关 XACML 实现的完整列表,您可以在 Wikipedia 上查看此列表。
完全公开 - 我与 David Brossard 一起为 Axiomatics 工作,他为 XACML 设计了 JSON 配置文件以与 REST 配置文件一起使用。
Axiomatics为关系数据库提供Axiomatics 数据访问过滤器,为HADOOP提供SmartGuard。Axiomatics Policy Server 本身支持 JSON 和 REST 配置文件。