4.9. 加密集群传输
保护集群传输,以便节点与加密消息通信。您还可以配置 Data Grid 集群来执行证书验证,以便只有具有有效身份的节点才能加入。
4.9.1. JGroups 加密协议 复制链接链接已复制到粘贴板!
要保护集群流量,您可以配置 Data Grid 节点,以使用 secret 密钥加密 JGroups 消息有效负载。
Data Grid 节点可以从以下之一获取 secret 密钥:
- 协调器节点(作为中间加密)。
- 共享密钥存储(中间加密)。
从协调器节点检索 secret 密钥
您可以通过在 Data Grid 配置中的 JGroups 堆栈中添加 ASYM_ENCRYPT 协议来配置非对称加密。这允许 Data Grid 集群生成和分发 secret 密钥。
在使用非对称加密时,您还应提供密钥存储,以便节点能够执行证书身份验证并安全地交换机密密钥。这会保护集群不受中间人(MitM)攻击的影响。
非对称加密保护集群流量,如下所示:
- Data Grid 集群中的第一个节点(协调器节点)会生成一个 secret 密钥。
- 加入的节点通过 coordinator 执行证书验证,以互斥验证身份。
- 加入节点从协调器节点请求 secret 密钥。该请求包括加入节点的公钥。
- 协调器节点使用公钥加密 secret 密钥,并将它返回到加入节点。
- 加入的节点解密并安装 secret 密钥。
- 节点加入集群,使用 secret 密钥加密和解密消息。
从共享密钥存储检索 secret 密钥
您可以通过在 Data Grid 配置中的 JGroups 堆栈中添加 SYM_ENCRYPT 协议来配置对称加密。这允许 Data Grid 集群从您提供的密钥存储中获取 secret 密钥。
- 节点在启动时从 Data Grid classpath 的密钥存储安装 secret 密钥。
- 节点加入集群,使用 secret 密钥加密和解密信息。
非对称和对称加密的比较
ASYM_ENCRYPT 和证书身份验证提供了与 SYM_ENCRYPT 进行比较的额外加密层。您提供密钥存储来加密对 secret 密钥协调器节点的请求。Data Grid 会自动生成该 secret 密钥并处理集群流量,同时允许您指定何时生成 secret 密钥。例如,您可以将集群配置为在节点离开时生成新的 secret 密钥。这样可确保节点无法绕过证书验证,并使用旧密钥加入。
另一方面,SYM_ENCRYPT 比 ASYM_ENCRYPT 快,因为节点不需要与集群协调器交换密钥。SYM_ENCRYPT 的潜在缺陷是,当集群成员资格更改时没有配置自动生成新 secret 密钥。用户负责生成和分发节点用来加密集群流量的 secret 密钥。
4.9.2. 使用非对称加密保护集群传输 复制链接链接已复制到粘贴板!
配置 Data Grid 集群,以生成和分发加密 JGroups 消息的 secret 密钥。
流程
- 使用证书链创建密钥存储,使数据仓库能够验证节点身份。
将密钥存储放在集群中的每个节点的 classpath 上。
对于 Data Grid Server,您要将密钥存储放在 $114G_HOME 目录中。
将
SSL_KEY_EXCHANGE和ASYM_ENCRYPT协议添加到 Data Grid 配置中的 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
4.9.3. 使用对称加密保护集群传输 复制链接链接已复制到粘贴板!
配置 Data Grid 集群,以使用您提供的密钥存储中的 secret 密钥加密 JGroups 消息。
流程
- 创建包含 secret 密钥的密钥存储。
将密钥存储放在集群中的每个节点的 classpath 上。
对于 Data Grid Server,您要将密钥存储放在 $114G_HOME 目录中。
-
将
SYM_ENCRYPT协议添加到 Data Grid 配置中的 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