第 1 章 配置数据网格授权


授权限制了使用 Data Grid 和 access 数据执行操作的功能。您可以使用具有不同权限级别的角色分配用户。

1.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 使用角色映射器,以便安全主体与代表一个或多个权限的角色对应。

下图演示了安全主体如何映射到角色:

1.1.1. 权限

通过限制您可以执行的操作来控制对缓存管理器和缓存的访问权限。权限也可以应用到指定缓存等特定实体。

表 1.1. 缓存管理器权限
权限功能描述

配置

defineConfiguration

定义新的缓存配置。

LISTEN

addListener

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

生命周期

stop

停止缓存管理器。

ALL

-

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

表 1.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

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

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"/>

1.1.2. 角色映射程序

Data Grid 包括了一个 PrincipalRoleMapper API,它将 Subject 中的安全主体映射到授权角色。默认有两个角色映射器:

IdentityRoleMapper

使用 Principal 名称作为角色名称。

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

如果主体名称是可辨识名称(DN),则使用 Common Name (CN)作为角色名称。例如,cn=managers,ou=people,dc=example,dc=com DN 映射到 managers 角色。

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

您还可以使用实现 org.infinispan.security.PrincipalRoleMapper 接口的自定义角色映射程序。要以声明性方式配置自定义角色映射程序,请使用: &lt ;custom-role-mapper class="my.custom.RoleMapper" />

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.