在系统中实现访问控制

Rah*_*ora 2 access-control xacml

我在系统中遇到了许多不同的访问控制模型.在任何系统中实现访问控制模型时,我们通常通过为访问控制创建单独的表来对数据库中的规则/权限进行硬编码(考虑RDBMS).此外,这些规则/权限可以存储在XML数据库中.我想知道在RDBMS和XML数据库上存储规则之间有什么区别?此外,我们何时应该使用XACML在系统中实现访问控制模型?我的意思是,如何决定是否应该对数据库中的规则/权限进行硬编码,还是应该使用XACML策略语言?

谢谢.

Dav*_*ard 6

免责声明:我为Axiomatics工作,这是XACML的供应商实现

如果按照自己的方式存储授权逻辑,可以在RDBMS或XML数据库中完成.没关系.我怀疑XML为您带来了任何附加功能.

现在,如果您想要一个能够满足RDBMS系统和其他类型应用程序(CRM,.NET,Java ......)的授权系统,那么您希望使用与其保护的应用程序类型无关的解决方案.这就是可扩展访问控制标记语言XACML的目标.

XACML提供基于属性的,基于策略的访问控制(ABAC和PBAC).这使您能够编写极具表现力的授权策略,并在单个存储库中集中管理它们.然后,中央授权引擎(称为策略决策点或PDP)将为您的不同应用程序提供决策.

正如Bell指出的那样,您需要的最小属性集通常是关于用户(主题),资源和操作的属性.XACML还允许您添加环境属性.这意味着您可以编写以下类型的策略:

医生可以查看他们被分配到的患者的医疗记录.

  • 医生描述了用户/主题
  • view描述了该动作
  • 医疗记录描述了目标资源
  • 患者也描述了目标资源.它是关于资源的元数据
  • 他们被分配是一个有趣的案例.这是一个定义医生和患者之间关系的属性.在ABAC中,这实现为doctor.id == patient.assignedDoctorId.这是使用XACML的主要好处之一.

XACML的优点包括: - 如Bell所述,外部化授权逻辑的能力 - 无需经历开发/部署生命周期即可更新授权逻辑 - 能够以相同的方式为许多不同的应用程序实现细粒度授权 - 能够对授权逻辑进行可见性和审计

HTH