2

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

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

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

4

2 回答 2

1

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

不幸的是,此功能仅在企业中可用。但是..您始终可以包装 IMap 并添加您自己的安全层。所以像:

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

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

于 2015-01-19T10:30:05.523 回答
1

我有同样的问题。但我认为小组应该解决它:

这适用于 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失败,关闭连接并且客户端死亡,这阻止了对组的读/写访问,应该解决你的问题,所以我的问题。

于 2015-02-18T09:48:48.330 回答