5.9. 加密集群传输
保护集群传输,以便节点与加密消息通信。您还可以配置 Data Grid 集群来执行证书验证,以便只有具有有效身份的节点可以加入。
5.9.1. JGroups 加密协议 复制链接链接已复制到粘贴板!
为保护集群流量,您可以配置 Data Grid 节点,以使用机密密钥加密 JGroups 消息有效负载。
Data Grid 节点可以从以下任一位置获取 secret 密钥:
- 协调器节点(基本指标加密)。
- 共享密钥存储(symmetric 加密)。
从协调器节点检索 secret 密钥
您可以通过在 Data Grid 配置中将 ASYM_ENCRYPT 协议添加到 JGroups 堆栈来配置非对称加密。这允许 Data Grid 集群生成并分发 secret 密钥。
在使用非对称加密时,您还应提供密钥存储,以便节点能够执行证书身份验证和安全地交换密钥。这会防止集群不受中间人(MitM)攻击。
非对称加密可以保护集群流量,如下所示:
- Data Grid 集群中的第一个节点(协调器节点)会生成 secret 密钥。
- 加入的节点使用协调器执行证书验证,以相互验证身份。
- 加入的节点从协调器节点请求 secret 密钥。该请求包括加入节点的公钥。
- 协调器节点使用公钥加密 secret 密钥,并将其返回到加入的节点。
- 加入的节点解密并安装 secret 密钥。
- 节点加入集群,使用 secret 密钥加密和解密信息。
从共享密钥存储检索 secret 密钥
您可以通过在 Data Grid 配置中将 SYM_ENCRYPT 协议添加到 JGroups 堆栈来配置对称加密。这允许 Data Grid 集群从您提供的密钥存储中获取 secret 密钥。
- 节点在启动时从 Data Grid classpath 上的密钥存储安装 secret 密钥。
- 节点加入集群,使用 secret 密钥加密和解密信息。
非对称和对称加密的比较
带有证书身份验证的 ASYM_ENCRYPT 提供了额外的加密层,与 SYM_ENCRYPT 进行比较。您提供对请求进行加密的密钥存储,以协调机密密钥的节点。Data Grid 会自动生成该 secret 密钥并处理集群流量,同时让您指定何时生成 secret 密钥。例如,您可以配置集群以在节点离开时生成新的 secret 密钥。这样可确保节点无法绕过证书身份验证,并使用旧密钥加入。
另一方面,SY M_ENCRYPT 比 ASYM_ENCRYPT 快,因为节点不需要与集群协调器交换密钥。SYM_ENCRYPT 的一个潜在的缺点是,当集群成员资格更改时,没有配置可自动生成新的 secret 密钥。用户负责生成和分发节点用于加密集群流量的 secret 密钥。
5.9.2. 使用非对称加密保护集群传输 复制链接链接已复制到粘贴板!
配置 Data Grid 集群,以生成和分发加密 JGroups 消息的 secret 密钥。
流程
- 创建具有证书链的密钥存储,使 Data Grid 能够验证节点身份。
将密钥存储放在集群中的每个节点的类路径上。
对于 Data Grid Server,您可以将密钥存储放在 $RHDG_HOME 目录中。
将
SSL_KEY_EXCHANGE和ASYM_ENCRYPT协议添加到数据网格配置中的 JGroups 堆栈,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
当您启动 Data Grid 集群时,以下日志消息表示集群使用 secure JGroups 堆栈:
[org.infinispan.CLUSTER] ISPN000078: Starting JGroups channel cluster with stack <encrypted_stack_name>
[org.infinispan.CLUSTER] ISPN000078: Starting JGroups channel cluster with stack <encrypted_stack_name>
只有使用 ASYM_ENCRYPT,并且可以从协调器节点获取 secret 密钥时,才可以加入集群。否则,以下消息被写入 Data Grid 日志:
[org.jgroups.protocols.ASYM_ENCRYPT] <hostname>: received message without encrypt header from <hostname>; dropping it
[org.jgroups.protocols.ASYM_ENCRYPT] <hostname>: received message without encrypt header from <hostname>; dropping it
5.9.3. 使用对称加密保护集群传输 复制链接链接已复制到粘贴板!
配置 Data Grid 集群,以使用您提供的密钥存储的机密密钥加密 JGroups 消息。
流程
- 创建包含机密密钥的密钥存储。
将密钥存储放在集群中的每个节点的类路径上。
对于 Data Grid Server,您可以将密钥存储放在 $RHDG_HOME 目录中。
-
将
SYM_ENCRYPT协议添加到数据网格配置中的 JGroups 堆栈。
验证
当您启动 Data Grid 集群时,以下日志消息表示集群使用 secure JGroups 堆栈:
[org.infinispan.CLUSTER] ISPN000078: Starting JGroups channel cluster with stack <encrypted_stack_name>
[org.infinispan.CLUSTER] ISPN000078: Starting JGroups channel cluster with stack <encrypted_stack_name>
只有使用 SYM_ENCRYPT 并且可以从共享密钥存储获取 secret 密钥时,才可以加入集群。否则,以下消息被写入 Data Grid 日志:
[org.jgroups.protocols.SYM_ENCRYPT] <hostname>: received message without encrypt header from <hostname>; dropping it
[org.jgroups.protocols.SYM_ENCRYPT] <hostname>: received message without encrypt header from <hostname>; dropping it