第 8 章 配置用户角色和权限

授权是一项安全功能,要求用户具有某些权限,然后才能访问缓存或与 Data Grid 资源交互。您可以为提供不同权限级别的用户分配角色,从只读访问权限授予完整、超级用户权限。

8.1. 安全授权

数据网格授权通过限制用户访问保护您的部署。

用户应用程序或客户端必须属于分配了足够权限的角色,然后才能对缓存管理器或缓存执行操作。

例如,您可以在特定缓存实例上配置授权,以便调用 Cache.get () 的身份需要在 Cache.put ()处分配角色,而 Cache.put () 需要具有写入权限的角色。

在这种情况下,如果具有 io 角色的用户应用程序或客户端试图编写条目,Data Grid 会拒绝请求并抛出一个安全例外。如果具有 writer 角色的用户应用程序或客户端发送了写入请求,Data Grid 会验证授权并发出令牌以供后续操作。

身份

身份身份是 java.security.Principal 的安全主体。使用 javax.security.auth.Subject 类实施的主题代表一组安全主体。换句话说,使用者代表一个用户及其所属的所有组。

角色身份

Data Grid 使用角色映射程序,以便安全主体对应于您分配一个或多个权限的角色。

下图说明了安全主体与角色的对应方式:

8.1.1. 用户角色和权限

Data Grid 包含一组默认的角色,可授予用户访问数据并与 Data Grid 资源交互。

ClusterRoleMapper 是 Data Grid 用来将安全主体与授权角色关联的默认机制。

重要

ClusterRoleMapper 与角色名称匹配的主体名称。名为 admin 的用户会自动获得 admin 权限,名为 deployer 的用户会获取 deployer 权限,以此类推。

角色权限描述

admin

ALL

具有所有权限的超级用户,包括缓存管理器生命周期的控制。

deployer

ALL_READ, ALL_WRITE, LISTEN, EXEC, MONITOR, CREATE

除了 应用程序 权限外,还可创建和删除数据网格资源。

application

ALL_READ, ALL_WRITE, LISTEN, EXEC, MONITOR

观察者 权限之外,还具有对 Data Grid 资源的读写访问权限。还可以侦听事件并执行服务器任务和脚本。

observer

ALL_READ, MONITOR

除了监控权限外,还具有对数据网格 资源 的读取访问权限。

monitor

MONITOR

可以通过 JMX 和 指标端点 查看统计信息。

8.1.2. 权限

授权角色具有不同的权限,并有不同的访问级别到 Data Grid。权限可让您限制用户对缓存管理器和缓存的访问。

8.1.2.1. 缓存管理器权限

权限功能描述

配置

defineConfiguration

定义新的缓存配置。

LISTEN

addListener

针对缓存管理器注册监听程序。

生命周期

stop

停止缓存管理器。

创建

createCache,removeCache

创建和删除容器资源,如缓存、计数器、架构和脚本。

MONITOR

getStats

允许访问 JMX 统计数据和 指标端点

ALL

-

包括所有缓存管理器权限。

8.1.2.2. 缓存权限

权限功能描述

READ

get包含

从缓存检索条目。

put,putIfAbsent,replace,remove,evict

在缓存中写入、替换、删除、驱除数据。

EXEC

distexec,

允许对缓存执行代码。

LISTEN

addListener

根据缓存注册监听程序。

BULK_READ

keySet,,entrySet,query

执行批量检索操作。

BULK_WRITE

清除放置All

执行批量写入操作。

生命周期

启动停止

启动和停止缓存。

ADMIN

getVersion,addInterceptor*, removeInterceptor Chain ,get EvictionManager,getComponentRegistry,getDistributionManager,getAuthorizationManager,evict,getRpcManager, getCacheConfiguration ,getCacheConfiguration, getCacheManager,getInvocationContextContainer,setAvailability,getDataContainer,getStats,getXAResource

允许访问底层组件和内部结构。

MONITOR

getStats

允许访问 JMX 统计数据和 指标端点

ALL

-

包括所有缓存权限。

ALL_READ

-

组合 READ 和 BULK_READ 权限。

ALL_WRITE

-

组合 WRITE 和 BULK_WRITE 权限。

8.1.3. 角色映射器

Data Grid 包括一个 PrincipalRoleMapper API,它将对象中的安全主体映射到您可以分配给用户的授权角色。

8.1.3.1. 集群角色映射器

ClusterRoleMapper 使用持久复制缓存来动态存储默认角色和权限的 principal-to-role 映射。

默认情况下,使用 Principal 名称作为角色名称,并实施 org.infinispan.security.MutableRoleMapper,它会公开方法在运行时更改角色映射。

  • Java 类: org.infinispan.security.mappers.ClusterRoleMapper
  • 声明性配置:& lt;cluster-role-mapper />

8.1.3.2. 身份角色映射器

IdentityRoleMapper 使用主体名称作为角色名称。

  • Java 类: org.infinispan.security.mappers.IdentityRoleMapper
  • 声明配置:& lt;identity-role-mapper />

8.1.3.3. CommonName 角色映射器

如果主体名称是 Distinguished Name (DN),则 CommonNameRoleMapper 使用 Common Name (CN)作为角色名称。

例如,cn=managers,ou= person,dc=example,dc=com 映射到 managers 角色。

  • Java 类: org.infinispan.security.mappers.CommonRoleMapper
  • 声明配置:& lt;common-name-role-mapper />

8.1.3.4. 自定义角色映射器

自定义角色映射程序是 org.infinispan.security.PrincipalRoleMapper 实施。

  • 声明配置:& lt;custom-role-mapper class="my.custom.RoleMapper" />