我想用“钥匙斗篷”的授权系统创建一个相当简单的以角色为基础的存取控制系统。正在替换的系统“钥匙斗篷”允许我们创建一个“用户”,该用户是一个或多个“组”的成员。在这个遗留系统中,用户被赋予“权限”,可以通过组成员关系(其中分配了组的权限)或直接向用户授予权限来访问大约250个“功能”中的每一个。
我想将遗留系统映射到密钥斗篷授权。
对于我来说,将现有系统中的每个“功能”映射到一个密钥斗篷资源和一组密钥斗篷作用域应该很简单。例如,“ viewAccount”功能显然会映射到一个“ account”资源和一个“ view”作用域; 而“ viewTransaction”则映射到一个“ action”资源... ... 但是,只创建一个“ view”作用域并跨多个资源(帐户、事务等)使用它是否是最佳实践呢?或者我应该创建一个“ viewAccount”作用域,一个“ viewTransaction”作用域,等等?
同样,我对权限也有点困惑。对于资源和范围的每个实际组合,通常的做法是创建权限吗?如果有多个权限匹配给定的资源/作用域,那么钥匙斗篷会做什么?我猜想 Keycloak 的意图是允许我配置一个对资源和范围的权限矩阵,例如,我可以有权访问“帐户”和“查看”范围的权限,因此我将有权查看帐户?
我问这个问题是因为所有这一切的结果似乎是我的旧的“ viewAccount”功能最终创建了一个“ Account”资源,具有“ View”作用域和一个“ viewAccount”权限,这似乎让我回到了原来的位置。如果正确的话,也没关系。
最后,显然我需要一组策略来确定是否应该应用 viewAccount。但是,这是否意味着我需要针对用户可能属于的每个遗留组的策略?例如,如果我有一个“ help desk”角色,那么我需要一个“ help desk member”策略,然后我可以将它添加到“ viewAccount”权限中。是这样吗?
谢谢,
马克