3.6. Data Grid authorization

Data Grid 使用基于角色的访问控制(RBAC)来限制对数据和集群加密的访问,以保护节点之间的通信。

角色和权限

Data Grid 8.2 提供了一组默认用户和权限,可用于 RBAC,包括以下更改:

  • ClusterRoleMapper 是 Data Grid 用来将安全主体与授权角色关联的默认机制。
  • 新的 MONITOR 权限允许用户访问 Data Grid 统计数据。
  • 用户需要创建和删除缓存和计数器等资源的新 CREATE 权限。

    注意

    CREATE 取代了 ___schema_manager\___script_manager 角色,用户在 Data Grid 8.1 及更早版本中创建和删除 Protobuf 模式和服务器脚本。

    迁移到 Data Grid 8.2 时,您应该为在 Data Grid 8.1 或更早版本中有 ___schema_manager\___script_manager 角色的用户分配 deployer 角色。使用命令行界面(CLI),如下所示:

    [//containers/default]> user roles grant --roles=deployer <user>
缓存管理器权限

表 3.2. Data Grid 8.1

权限功能描述

配置

defineConfiguration

定义新的缓存配置。

LISTEN

addListener

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

生命周期

stop

停止缓存管理器。

ALL

-

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

表 3.3. Data Grid 8.2

权限功能描述

配置

defineConfiguration

定义新的缓存配置。

LISTEN

addListener

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

生命周期

stop

停止缓存管理器。

CREATE

createCache, removeCache

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

MONITOR

getStats

允许访问 JMX 统计信息和 指标端点

ALL

-

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

缓存权限

表 3.4. Data Grid 8.1

权限功能描述

READ

Get包含

从缓存检索条目。

放置 , put IfAbsent,replace,remove,eviction

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

EXEC

distexec,stream

允许针对缓存执行代码。

LISTEN

addListener

针对缓存注册监听程序。

BULK_READ

keySet,values,entrySet,query

执行批量检索操作。

BULK_WRITE

清除,putAll

执行批量写入操作。

生命周期

启动,stop

启动和停止缓存。

ADMIN

getVersion,addInterceptor*, removeInterceptor,getInterceptorChain,getEvictionManager,getComponentRegistry,getDistributionManager,getAuthorizationManager,evict,getRpcManager,getCacheConfiguration,getCacheManager, getInvocationContextContainer,setAvailability,getDataContainer,getStats,getXAResource

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

ALL

-

包括所有缓存权限。

ALL_READ

-

组合了 READ 和 BULK_READ 权限。

ALL_WRITE

-

组合 WRITE 和 BULK_WRITE 权限。

表 3.5. Data Grid 8.2

权限功能描述

READ

Get包含

从缓存检索条目。

放置 , put IfAbsent,replace,remove,eviction

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

EXEC

distexec,stream

允许针对缓存执行代码。

LISTEN

addListener

针对缓存注册监听程序。

BULK_READ

keySet,values,entrySet,query

执行批量检索操作。

BULK_WRITE

清除,putAll

执行批量写入操作。

生命周期

启动,stop

启动和停止缓存。

ADMIN

getVersion,addInterceptor*, removeInterceptor,getInterceptorChain,getEvictionManager,getComponentRegistry,getDistributionManager,getAuthorizationManager,evict,getRpcManager,getCacheConfiguration,getCacheManager, getInvocationContextContainer,setAvailability,getDataContainer,getStats,getXAResource

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

MONITOR

getStats

允许访问 JMX 统计信息和 指标端点

ALL

-

包括所有缓存权限。

ALL_READ

-

组合了 READ 和 BULK_READ 权限。

ALL_WRITE

-

组合 WRITE 和 BULK_WRITE 权限。

缓存管理器授权

从 Data Grid 8.2 开始,您可以在 cache-container 安全配置中包含 authorization 元素,如下所示:

<infinispan>
  <cache-container name="secured">
    <security>
      <authorization/> 1
    </security>
  </cache-container>
</infinispan>
1
为具有默认角色和权限的缓存管理器启用安全授权。

您还可以定义全局授权配置,如下所示:

<infinispan>
  <cache-container default-cache="secured" name="secured">
    <security>
      <authorization> 1
        <identity-role-mapper /> 2
        <role name="admin" permissions="ALL" /> 3
        <role name="reader" permissions="READ" />
        <role name="writer" permissions="WRITE" />
        <role name="supervisor" permissions="READ WRITE EXEC"/>
      </authorization>
    </security>
  </cache-container>
</infinispan>
1
要求用户权限来控制缓存管理器生命周期。
2
指定 PrincipalRoleMapper 的实现,它将 Principals 映射到角色。
3
定义一组角色和关联的权限。

隐式缓存授权

Data Grid 8 允许缓存从 cache-container 继承授权配置来提高可用性,因此您不需要为每个缓存显式配置角色和权限。

<local-cache name="secured">
  <security>
    <authorization/> 1
  </security>
</local-cache>
1
使用缓存容器中定义的角色和权限。

从 Data Grid 8.2 开始,包括配置中的 authorization 元素使用默认角色和权限限制对该缓存的访问,除非您定义了一组自定义全局权限。