1

I like to how a 4 eyes principle can be defined in ALFA. (Axiomatics)

For example: A bank employee wants to create a new account for a customer. He can create it, fill in all the client information and settings. But he needs to be unable to activate this account, unless his manager has approved him to do so.

So, when the bank employee presses the "activate account" button, a policy needs to enforce that his manager has to approve this first. Sounds like an obligation to me, or are there better ways to enforce this with a policy?

Can somebody give me an ALFA example how to doe this?

4

1 回答 1

1

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

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

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

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

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

政策将变为:

  • 具有角色==员工的用户可以对类型==银行帐户的资源执行操作==激活,前提是且只有员工创建了帐户-> PERMIT + 义务“通过电子邮件向经理发送链接以批准激活”。
  • 当且仅当 isManagerApproved==true 时,具有角色 == 员工的用户可以对类型==银行帐户的资源执行操作==激活
  • 当且仅当创建者在下属列表中时,具有角色==经理的用户才能对类型==银行帐户的资源执行操作==批准。
于 2014-12-04T09:01:56.437 回答