如何在ALFA(/ XACML)中定义4眼原理?

时间:2014-12-03 17:21:21

标签: policy xacml alfa

我喜欢在ALFA中如何定义 4眼原则。 (希尔伯特)

例如: 银行员工希望为客户创建新帐户。他可以创建它,填写所有客户信息和设置。但他需要无法激活此帐户,除非他的经理已批准他这样做。

因此,当银行员工按下“激活帐户”按钮时,策略需要强制执行其经理必须首先批准此操作。听起来对我有义务,还是有更好的方法来实施这项政策?

有人可以给我一个ALFA示例如何做到这一点吗?

1 个答案:

答案 0 :(得分:1)

这是一个很好的问题。有两种方法可以做到这一点。正如您所指出的,您可以使用义务。您的政策如下:

  • 具有角色==员工的用户可以对类型==银行帐户的资源执行操作==激活当且仅当员工创建了帐户 - > PERMIT +义务"弹出批准对话框,供经理签署激活"。

如果PEP未能履行义务,则无法激活该帐户(该决定将被切换为DENY)。

但是,这样做会给PEP带来很多工作(实施的义务)并且它会创建一个同步流程。

另一种方法是创建要在策略中使用的另一个属性。该属性可以是managerApproved和employeeApproved。这会创建一个异步流,但这意味着您需要将managerApproved和employeeApproved的值保存在某个数据库中。

政策将成为:

  • 具有角色==员工的用户可以对类型==银行帐户的资源执行操作==激活当且仅当员工创建了帐户 - > PERMIT +义务"通过电子邮件向经理发送批准激活的链接"。
  • 当且仅当isManagerApproved == true
  • 时,具有角色==员工的用户才能对类型==银行帐户的资源执行操作==激活
  • 当且仅当创建者位于下属列表中时,具有角色==经理的用户才能对类型==银行帐户的资源执行操作==批准。