4.5. 配置数据网格授权
授权限制了使用 Data Grid 和 access 数据执行操作的功能。您可以使用具有不同权限级别的角色分配用户。
4.5.1. Data Grid Authorization 复制链接链接已复制到粘贴板!
借助 Data Grid,您可以配置授权来保护缓存管理器和缓存实例。当用户应用程序或客户端试图对安全缓存管理器和缓存执行操作时,它们必须提供一个有足够权限的角色来执行该操作。
例如,您可以在特定的缓存实例上配置授权,以便调用 Cache.get () 需要分配具有 read 权限的角色,而 Cache.put () 需要具有写入权限的角色。
在这种情况下,如果具有 reader 角色的用户应用程序或客户端尝试编写条目,则 Data Grid 会拒绝请求并抛出安全异常。如果具有 writer 角色的用户应用程序或客户端发送写入请求,则数据网格会验证授权,并为后续操作发布令牌。
身份到角色映射
身份是类型为 java.security.Principal 的安全主体。使用 javax.security.auth.Subject 类实施的主题代表一组安全主体。换句话说,Subject 代表一个用户以及它所属的所有组。
Data Grid 使用角色映射器,以便安全主体与代表一个或多个权限的角色对应。
下图演示了安全主体如何映射到角色:
4.5.1.1. 权限 复制链接链接已复制到粘贴板!
通过限制您可以执行的操作来控制对缓存管理器和缓存的访问权限。权限也可以应用到指定缓存等特定实体。
| 权限 | 功能 | 描述 |
|---|---|---|
| 配置 |
| 定义新的缓存配置。 |
| LISTEN |
| 针对缓存管理器注册监听程序。 |
| 生命周期 |
| 停止缓存管理器。 |
| ALL | - | 包括所有缓存管理器权限。 |
| 权限 | 功能 | 描述 |
|---|---|---|
|
|
| 从缓存检索条目。 |
| 写 |
放置 , | 写入、替换、删除、驱除缓存中的数据。 |
| EXEC |
| 允许针对缓存执行代码。 |
| LISTEN |
| 针对缓存注册监听程序。 |
| BULK_READ |
| 执行批量检索操作。 |
| BULK_WRITE |
| 执行批量写入操作。 |
| 生命周期 |
| 启动和停止缓存。 |
| ADMIN |
| 允许访问底层组件和内部结构。 |
| ALL | - | 包括所有缓存权限。 |
| ALL_READ | - | 组合了 READ 和 BULK_READ 权限。 |
| ALL_WRITE | - | 组合 WRITE 和 BULK_WRITE 权限。 |
合并权限
您可能需要组合权限,以便它们很有用。例如,要允许"supervisors"运行流操作,但限制"标准"用户仅放置并获得,您可以定义以下映射:
<role name="standard" permission="READ WRITE" /> <role name="supervisors" permission="READ WRITE EXEC BULK"/>
<role name="standard" permission="READ WRITE" />
<role name="supervisors" permission="READ WRITE EXEC BULK"/>
4.5.1.2. 角色映射程序 复制链接链接已复制到粘贴板!
Data Grid 包括了一个 PrincipalRoleMapper API,它将 Subject 中的安全主体映射到授权角色。默认有两个角色映射器:
- IdentityRoleMapper
使用 Principal 名称作为角色名称。
-
Java class:
org.infinispan.security.mappers.IdentityRoleMapper -
声明性配置:<
;identity-role-mapper />
-
Java class:
- CommonNameRoleMapper
如果主体名称是可辨识名称(DN),则使用 Common Name (CN)作为角色名称。例如,
cn=managers,ou=people,dc=example,dc=comDN 映射到managers角色。-
Java class:
org.infinispan.security.mappers.CommonRoleMapper -
声明性配置: <
;common-name-role-mapper />
-
Java class:
您还可以使用实现 org.infinispan.security.PrincipalRoleMapper 接口的自定义角色映射程序。要以声明性方式配置自定义角色映射程序,请使用: < ;custom-role-mapper class="my.custom.RoleMapper" />
4.5.2. 声明性配置授权 复制链接链接已复制到粘贴板!
在 infinispan.xml 文件中配置授权。
流程
-
在
cache-container中配置全局授权设置,用于指定角色映射器,并定义一组角色和权限。 配置缓存授权,以根据用户角色限制访问权限。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您不想将所有角色应用到缓存,请明确定义授权缓存的角色,如下所示:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 定义缓存的授权角色。在本例中,只有
writer角色的用户没有授权"secured"缓存。Data Grid 拒绝来自这些用户的任何访问请求。