我正在研究构建一个系统的选项,以在基于微服务的架构中提供“实体访问控制”,以根据请求用户限制对某些数据的访问。已经实施了完整的基于角色的访问控制 (RBAC) 系统来限制某些操作(基于 API 端点),但是没有实施任何措施来限制针对一个数据实体的这些操作而不是另一个数据实体。因此需要基于属性的访问控制 (ABAC) 系统。
考虑到系统要求适合用途以及我自己的优先事项,以遵循安全逻辑实现的最佳实践以保持在一个位置,我设计创建了一个外部化的“实体访问控制”API。
我设计的最终结果类似于我看到的下图(我认为来自 axiomatics.com)

问题在于,当您开始谈论以结果列表作为响应的 API 的那一刻,整个事情就失败了。
例如。客户 API 上的 /api/customers 端点,它接受查询过滤器、排序、顺序和限制/偏移值等参数以促进分页,并将客户列表返回到前端。那么,您如何在微服务环境中为每个实体提供 ABAC?
到目前为止测试的上述问题的可怕解决方案:
注意:我测试了 14,000 条记录,因为它是我们当前数据状态的基准。一个 API 可以服务 100,000 或 1m 条记录是完全可行的,因此任何涉及迭代整个数据集或通过网络传输整个数据集的事情都是完全不可持续的。
那么,问题就在这里......你如何在微服务架构中实现一个外部化的 ABAC 系统(如图所示),同时还能够通过查询过滤器、排序、排序和限制来处理响应多个实体的请求/offset 值以方便分页。
有没有办法查看 Lambda 触发器中的密码,该触发器可以通过 AWS Cognito 用户池上的注册或密码更改来触发?
我想获取密码并将其与先前泄露的密码列表(haveibeenpwned 列表)进行比较,以确保密码强度比任意复杂性规则可能达到的水平高得多,这些规则可能会被“密码!23”等垃圾击败