防止对 Hazelcast Community Edition 集群进行不必要的访问

Prevent unwanted access to Hazelcast Community Edition cluster

I 运行 Hazelcast 3.4 在两机集群中。为了同步他们的内容,我让他们通过网络连接。现在我进行搜索以防止不必要的写入,并在可能的情况下对其中任何一个进行读取访问。 安全性仅在企业版中可用,据我所知groups 仅阻止其他 Hazelcast 服务器加入集群。

是否可以让两台服务器通过网络同步,但防止其他服务器简单地连接到端口 5701 并进行读/写?

如果此信息有助于缩小问题范围:我只是使用 Hazelcast 的 JCache 功能,所以我只需要保护那部分。设置允许 ServerA<->ServerB 并阻止 viciousUser<->ServerN 的防火墙配置是不可能的,因为我不允许在服务器上配置防火墙(不要问为什么 ;-))

这种精细控制是不可能的。所以这是一个全有或全无的情况。组确实可以用来控制全有或全无。

不幸的是,此功能仅适用于企业。但是..你总是可以包装 IMap 并添加你自己的安全层。所以像:

IMap地图=securityDecorator.newMap(hz.getMap('yourmap'));

尽管当然仍然可以乱用原始代理。

我遇到了完全相同的问题。 但是我觉得群里应该解决一下:

这适用于版本 3.4:

当您使用 GroupConfiguration 对象配置节点并向其传递参数 namepassword 时,如下所示:

Config config = new Config();
GroupConfig group = new GroupConfig(groupName, grouppassword);
config.setGroupConfig(group);

并尝试连接一个简单的客户端(我在 v3.4 的 "demo" 文件夹中使用了完整包中的那个),我会得到:

INFORMATION: [x.x.x.x]:5701 [group1] [3.4] Accepting socket connection from /127.0.0.1:57136
Feb 18, 2015 10:26:41 AM com.hazelcast.nio.tcp.TcpIpConnectionManager
INFORMATION: [x.x.x.x]:5701 [group1] [3.4] Established socket connection between /127.0.0.1:5701 and 127.0.0.1/127.0.0.1:57136
Feb 18, 2015 10:26:41 AM com.hazelcast.client.impl.client.AuthenticationRequest
WARNUNG: [x.x.x.x]:5701 [group1] [3.4] Received auth from Connection [/127.0.0.1:5701 -> 127.0.0.1/127.0.0.1:57136], endpoint=null, live=true, type=JAVA_CLIENT, authentication failed
Feb 18, 2015 10:26:41 AM com.hazelcast.nio.tcp.TcpIpConnection
INFORMATION: [x.x.x.x]:5701 [group1] [3.4] Connection [127.0.0.1/127.0.0.1:57136] lost. Reason: java.io.EOFException[Remote socket closed!]
Feb 18, 2015 10:26:41 AM com.hazelcast.nio.tcp.ReadHandler
WARNUNG: [x.x.x.x]:5701 [group1] [3.4] hz._hzInstance_1_group1.IO.thread-in-1 Closing socket to endpoint null, Cause:java.io.EOFException: Remote socket closed!

首先 WARNUNG(抱歉,德国开发环境 ;-))明确表示 Auth 失败,关闭连接并且客户端死机,这会阻止 read/write 访问组,应该可以解决您的问题,等等我的