Permissions Key斗篷中的资源、作用域、权限和策略

Permissions Key斗篷中的资源、作用域、权限和策略,permissions,keycloak,Permissions,Keycloak,我想使用Key斗篷的授权系统创建一个相当简单的基于角色的访问控制系统。正在替换的系统keydepeat允许我们创建一个“用户”,该用户是一个或多个“组”的成员。在这个遗留系统中,通过组成员身份(其中组被分配了权限)或直接向用户授予权限,用户被授予“权限”来访问大约250个“功能”中的每一个 我想将遗留系统映射到KeyClope授权 对我来说,将现有系统中的每个“功能”映射到一个keydepot资源和一组keydepot作用域应该很简单。例如,“viewAccount”功能显然会映射到“accou

我想使用Key斗篷的授权系统创建一个相当简单的基于角色的访问控制系统。正在替换的系统keydepeat允许我们创建一个“用户”,该用户是一个或多个“组”的成员。在这个遗留系统中,通过组成员身份(其中组被分配了权限)或直接向用户授予权限,用户被授予“权限”来访问大约250个“功能”中的每一个

我想将遗留系统映射到KeyClope授权

对我来说,将现有系统中的每个“功能”映射到一个keydepot资源和一组keydepot作用域应该很简单。例如,“viewAccount”功能显然会映射到“account”资源和“view”范围;和“viewTransaction”映射到“transaction”资源。。。但最好的做法是只创建一个“视图”范围,并跨多个资源(帐户、事务等)使用它吗?还是应该创建“viewAccount”范围、“viewTransaction”范围等

同样,我对权限也有点困惑。对于资源和范围的每个实际组合,是否通常创建权限?如果有多个权限与给定的资源/作用域相匹配,KeyClope会做什么?我猜keydape的目的是允许我根据资源和作用域配置权限矩阵,因此,例如,我可以有访问“帐户”的权限和查看“范围”的权限,因此我有查看帐户的权限

我这样问是因为所有这些的结果似乎是我以前的“viewAccount”功能最终创建了一个“Account”资源,具有“View”范围和“viewAccount”权限,这似乎让我回到了原来的位置。如果正确的话,这很好

最后,显然我需要一组策略来确定是否应该应用viewAccount。但这是否意味着我需要为用户可能属于的每个遗留组制定一个策略?例如,如果我有一个“帮助台”角色,那么我需要一个“帮助台成员资格”策略,然后我可以将其添加到“viewAccount”权限中。这是正确的吗

谢谢


马克

我知道我晚了2年多,但我想我会与大家分享我所知道的,希望能减轻未来读者的痛苦。完全透明-我绝不是keydape/OAuth/OIDC专家,我所知道的主要是通过阅读文档、书籍、优秀的YouTube和使用该工具

该职位将由两部分组成:

  • 我会尽力回答你所有的问题
  • 我将向您展示如何在keydape中使用策略/作用域/权限,而无需部署单独的应用程序来更好地理解此线程中的一些核心概念。但请注意,这主要是为了让你们都开始。我正在使用
    keydape 8.0.0
  • 第一部分 在我们开始之前,先介绍一些术语:

    • 在KeyClope中,您可以创建两种类型的权限:和
    • 简单地说,对于基于
      资源的
      权限,您可以将其直接应用于您的资源
    • 对于
      基于作用域的
      权限,您可以将其应用于您的一个或多个作用域资源
    只创建一个“视图”范围并跨多个资源(帐户、事务等)使用它是否是最佳做法?还是应该创建“viewAccount”范围、“viewTransaction”范围等

    作用域表示受保护资源上的一组权限。在您的案例中,您有两种资源:
    账户
    交易
    ,因此我倾向于第二种方法

    从长远来看,拥有与您的所有资源(例如,
    账户
    交易
    客户
    结算
    …)相关联的全局
    视图
    范围会使授权难以管理和适应安全需求的变化

    这里有几个例子,你可以看看,以获得设计的感觉

    但请注意——我并不是说您不应该跨资源共享作用域。事实上,
    keydape
    允许对具有相同
    类型的资源执行此操作。例如,您可能需要
    viewcount
    viewTransaction
    范围来读取给定帐户下的事务(毕竟您可能需要访问该帐户才能查看事务)。您的要求和标准将严重影响您的设计

    对于资源和范围的每个实际组合,是否通常创建权限

    抱歉,我不完全理解这个问题,所以我要宽泛一点。要授予/拒绝访问
    资源
    ,您需要:

    • 定义你的
    • 定义你的
    • 将策略应用于您的权限
    • 将您的权限与
      范围
      资源
      (或两者)关联
    使政策执行生效。看

    你如何设置这一切完全取决于你自己。例如,您可以:

    • 定义单个策略,并将每个策略绑定到相应的权限下

    • 更好的方法是定义单个策略,然后将所有相关策略分组到一个
      聚合的
      策略(策略的策略)下,然后将该聚合的策略与基于
      范围的
      权限相关联。您可以将
      基于作用域的
      权限应用于资源及其所有关联的作用域

    • 或者,您可以通过利用这两种不同的类型来进一步分离您的权限。您可以通过基于
      资源的
      权限类型单独为您的资源创建权限,并通过基于
      范围的
      权限类型单独将其他权限与范围关联

    • <
      cd tmp
      wget https://downloads.jboss.org/keycloak/8.0.0/keycloak-8.0.0.zip 
      unzip keycloak-8.0.0.zip
      cd keycloak-8.0.0/bin
      ./standalone.sh