第 4 章 保护对 Data Grid 服务器的访问


配置身份验证和加密机制,以保护对数据的访问并保护您的数据。

4.1. 定义 Data Grid Server Security Realms

安全域为 Data Grid 服务器端点提供身份、加密、身份验证和授权信息。

4.1.1. 属性 Realms

属性域使用属性文件来定义用户和组。

users.properties 以纯文本格式将用户名映射到密码。如果您使用 DIGEST-MD5 SASL 机制或 Digest HTTP 机制,也可以预先提取密码。

myuser=a_password
user2=another_password

groups.properties 将用户映射到角色。

myuser=supervisor,reader,writer
user2=supervisor

属性域配置

<security xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="urn:infinispan:server:11.0 https://infinispan.org/schemas/infinispan-server-11.0.xsd"
          xmlns="urn:infinispan:server:11.0">
   <security-realms>
      <security-realm name="default">
         <properties-realm groups-attribute="Roles"> 1
            <user-properties path="users.properties" 2
                             relative-to="infinispan.server.config.path" 3
                             plain-text="true"/> 4
            <group-properties path="groups.properties" 5
                              relative-to="infinispan.server.config.path"/>
         </properties-realm>
      </security-realm>
   </security-realms>
</security>

1
将组定义为 Data Grid 服务器授权的角色。
2
指定 users.properties 文件。
3
指定该文件相对于 $ISPN_HOME/server/conf 目录。
4
指定 users.properties 中的密码采用纯文本格式。
5
指定 groups.properties 文件。

支持的验证机制

属性域支持以下身份验证机制:

  • sasl: PLAIN,DIGEST114, 和 SCRAM114
  • HTTP (REST): BasicDigest

4.1.1.1. 创建和修改用户

Data Grid Server 要求用户对默认属性域进行身份验证。在访问 Data Grid Server 之前,您必须至少创建一个用户和密码来添加凭证。您还可以添加和修改用户所属的安全授权组。

流程

  1. $RHDG_HOME 中打开一个终端。
  2. 使用 user 命令创建和修改 Data Grid 用户。
提示

使用 命令,运行 help user 的更多详细信息。

创建用户和密码

  • Linux

    $ bin/cli.sh user create myuser -p "qwer1234!"
  • Microsoft Windows

    $ bin\cli.bat user create myuser -p "qwer1234!"

创建具有组成员资格的用户

  • Linux

    $ bin/cli.sh user create myuser -p "qwer1234!" -g supervisor,reader,writer
  • Microsoft Windows

    $ bin\cli.bat user create myuser -p "qwer1234!" -g supervisor,reader,writer

4.1.2. LDAP 域

LDAP 域连接到 LDAP 服务器,如 OpenLDAP、红帽目录服务器、Apache 目录服务器或 Microsoft Active Directory,以验证用户并获取成员资格信息。

注意

LDAP 服务器可以有不同的条目布局,具体取决于服务器和部署的类型。因此,LDAP 域配置比较复杂。本文档超出了本文档的范围,为所有可能的配置提供示例。

LDAP 域配置

<security xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="urn:infinispan:server:11.0 https://infinispan.org/schemas/infinispan-server-11.0.xsd"
          xmlns="urn:infinispan:server:11.0">
   <security-realms>
      <security-realm name="default">
        <ldap-realm name="ldap" 1
                    url="ldap://my-ldap-server:10389" 2
                    principal="uid=admin,ou=People,dc=infinispan,dc=org" 3
                    credential="strongPassword"
                    connection-timeout="3000" read-timeout="30000" 4
                    connection-pooling="true" referral-mode="ignore"
                    page-size="30"
                    direct-verification="true"> 5
            <identity-mapping rdn-identifier="uid" 6
                              search-dn="ou=People,dc=infinispan,dc=org"> 7
               <attribute-mapping> 8
                  <attribute from="cn"
                             to="Roles"
                             filter="(&amp;(objectClass=groupOfNames)(member={1}))"
                             filter-dn="ou=Roles,dc=infinispan,dc=org"/>
               </attribute-mapping>
            </identity-mapping>
         </ldap-realm>
      </security-realm>
   </security-realms>
</security>

1
将 LDAP 域命名为。
2
指定 LDAP 服务器连接 URL。
3
指定要连接到 LDAP 服务器的主体和凭证。
重要

LDAP 连接的主体必须具有执行 LDAP 查询和访问特定属性所需的权限。

4
(可选)通过指定连接超时等来调优 LDAP 服务器连接。
5
验证用户凭据。Data Grid 会尝试使用配置的凭证连接到 LDAP 服务器。或者,您可以使用 user-password-mapper 元素来指定密码。
6
将 LDAP 条目映射到身份。rdn-identifier 指定一个 LDAP 属性,它根据提供的标识符查找用户条目,通常是用户名;例如 uidsAMAccountName 属性。
7
定义一个起始上下文,将搜索限制为包含用户条目的 LDAP 子树。
8
检索用户所属的所有组。通常可通过两种方式存储成员资格信息:
  • 在组条目下,通常在 member 属性中具有 class groupOfNames。在这种情况下,您可以使用属性过滤器,如上例配置中所示。此过滤器搜索与提供的过滤器匹配的条目,该条目将找到与用户的 DN 相等的 成员属性 的组。然后,过滤器提取组条目的 CN (由 指定),并将其添加到用户的 Roles 中。
  • memberOf 属性的用户条目中。在这种情况下,您应该使用如下属性引用:

    <attribute-reference reference="memberOf" from="cn" to="Roles" />

    此引用从用户条目中获取所有 memberOf 属性,提取由 指定的 CN,并将它们添加到用户的 Roles 中。

支持的验证机制

LDAP 域直接支持以下身份验证机制:

  • sasl: PLAIN,DIGEST114, 和 SCRAM114
  • HTTP (REST): BasicDigest

4.1.2.1. LDAP Realm Principal Rewriting

有些 SASL 身份验证机制,如 GSSAPIGS2-KRB5Negotiate,提供需要 清理 的用户名,然后才能使用它来搜索 LDAP 服务器。

<security xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="urn:infinispan:server:11.0 https://infinispan.org/schemas/infinispan-server-11.0.xsd"
          xmlns="urn:infinispan:server:11.0">
   <security-realms>
      <security-realm name="default">
         <ldap-realm name="ldap"
                     url="ldap://${org.infinispan.test.host.address}:10389"
                     principal="uid=admin,ou=People,dc=infinispan,dc=org"
                     credential="strongPassword">
            <name-rewriter> 1
               <regex-principal-transformer name="domain-remover"
                                            pattern="(.*)@INFINISPAN\.ORG"
                                            replacement="$1"/>
            </name-rewriter>
            <identity-mapping rdn-identifier="uid"
                              search-dn="ou=People,dc=infinispan,dc=org">
               <attribute-mapping>
                  <attribute from="cn" to="Roles"
                             filter="(&amp;(objectClass=groupOfNames)(member={1}))"
                             filter-dn="ou=Roles,dc=infinispan,dc=org" />
               </attribute-mapping>
               <user-password-mapper from="userPassword" />
            </identity-mapping>
         </ldap-realm>
      </security-realm>
   </security-realms>
</security>
1
定义使用正则表达式从主体中提取用户名的重写器。

4.1.3. 信任存储域

信任存储域使用密钥存储,其中包含允许连接到 Data Grid 服务器的所有客户端的公共证书。

<security xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="urn:infinispan:server:11.0 https://infinispan.org/schemas/infinispan-server-11.0.xsd"
          xmlns="urn:infinispan:server:11.0">
   <security-realms>
      <security-realm name="default">
         <server-identities>
            <ssl>
               <keystore path="server.p12" 1
                         relative-to="infinispan.server.config.path" 2
                         keystore-password="secret" 3
                         alias="server"/> 4
            </ssl>
         </server-identities>
         <truststore-realm path="trust.p12" 5
                           relative-to="infinispan.server.config.path"
                           keystore-password="secret"/>
      </security-realm>
   </security-realms>
</security>
1
使用包含服务器证书的密钥存储提供 SSL 服务器身份。
2
指定该文件相对于 $ISPN_HOME/server/conf 目录。
3
指定密钥存储密码。
4
指定密钥存储别名。
5
提供包含所有客户端公共证书的密钥存储。

支持的验证机制

信任存储域使用 client-certificate 身份验证机制:

  • SASL: EXTERNAL
  • HTTP (REST): CLIENT_CERT

4.1.4. 令牌域

令牌域使用外部服务来验证令牌,并需要与 RFC-7662 (OAuth2 Token Introspection)兼容的提供程序,如 Red Hat SSO。

<security xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="urn:infinispan:server:11.0 https://infinispan.org/schemas/infinispan-server-11.0.xsd"
          xmlns="urn:infinispan:server:11.0">
   <security-realms>
      <security-realm name="default">
         <token-realm name="token"
                      auth-server-url="https://oauth-server/auth/"> 1
            <oauth2-introspection
                    introspection-url="https://oauth-server/auth/realms/infinispan/protocol/openid-connect/token/introspect" 2
                    client-id="infinispan-server" 3
                    client-secret="1fdca4ec-c416-47e0-867a-3d471af7050f"/> 4
         </token-realm>
      </security-realm>
   </security-realms>
</security>
1
指定身份验证服务器的 URL。
2
指定令牌内省端点的 URL。
3
为 Data Grid 服务器命名客户端标识符。
4
指定 Data Grid 服务器的客户端 secret。

支持的验证机制

令牌域支持以下身份验证机制:

  • SASL: OAUTH BEARER
  • HTTP (REST): Bearer
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.