11.2. 配置 JGroups 加密
用于 OpenShift 的数据网格使用 JGroups 技术保护集群服务器间的流量,并带有以下选项:
- 身份验证
使用需要节点在加入集群时使用密码进行身份验证的Groups
AUTH
协议。您可以使用
JGROUPS_CLUSTER_PASSWORD
环境变量配置身份验证。此环境变量设置在加入集群时要使用的节点密码。整个集群中的密码必须相同。- 对称加密
使用 JGroups
SYM_ENCRYPT
协议保护来自 JGroups 密钥存储的流量(.jceks
)。这是默认的加密协议。JGroups
AUTH
协议具有对称加密的可选功能。JGroups 密钥存储包含集群中各个节点用于安全通信的凭据。
- 非对称加密
使用 JGroups
ASYM_ENCRYPT
协议保护带有公钥/私钥加密的流量。利用非对称加密,需要 JGroups
AUTH
协议。协调器节点会生成 secret 密钥。当节点加入集群时,它会从协调器请求 secret 密钥并提供其公钥。协调器使用公钥加密 secret 密钥并将其返回到节点。然后,节点会解密并安装 secret,以便它可以安全地与集群中的其他节点通信。
11.2.1. 设置对称加密
要使用对称加密,请执行以下操作:
创建一个Groups 密钥存储(
.jceks
),其中包含用于加密流量的凭据。您可以使用 Java keytool 生成 JGroups 密钥存储。
将 JGroups 密钥存储作为机密部署到 OpenShift。
- 登录您的 OpenShift 集群。
为 JGroups 密钥存储创建机密。例如,若要从名为
jgroups.jceks
的密钥存储创建名为jgroups-secret
的 secret,请执行以下操作:$ oc create secret generic jgroups-secret \ --from-file=jgroups.jceks
将 secret 链接到 default 服务帐户。
$ oc secrets link default jgroups-secret
将 secret 挂载到容器。
$ oc set volumes dc/datagrid \ --add -t secret \ --secret-name='jgroups-secret' \ --mount-path='/keystores/jgroups'
-
将集群中每个节点的
JGROUPS_ENCRYPT_PROTOCOL
环境变量设置为SYM_ENCRYPT
。 配置集群中的每个节点,使其使用具有以下环境变量的 JGroups 密钥存储:
JGROUPS_ENCRYPT_KEYSTORE
- Specifes the JGroups 密钥存储用于加密集群流量。
JGROUPS_ENCRYPT_KEYSTORE_DIR
- 指定 JGroups 密钥存储所在的目录。
JGROUPS_ENCRYPT_SECRET
- 匹配密钥存储的 OpenShift 机密。
JGROUPS_ENCRYPT_NAME
- 匹配密钥存储的用户名。
JGROUPS_ENCRYPT_PASSWORD
- 匹配密钥存储密码。
-
如果需要,在使用
JGROUPS_CLUSTER_PASSWORD
环境变量加入集群时,为节点设置密码。