我在两台机器集群中运行Hazelcast 3.4。为了同步他们的内容,我让他们通过网络连接。现在我做搜索意味着防止不必要的写入,如果可能的话,可以读取它们中的任何一个。 安全性仅在企业版中提供,据我所知groups仅阻止其他Hazelcast服务器加入群集。
是否可以让两台服务器通过网络同步但是阻止其他服务器只是连接到端口5701并进行读/写?
如果此信息有助于缩小问题范围:我只使用Hazelcast的JCache功能,因此我只需要保护该部分。设置允许ServerA< - > ServerB并防止恶意用户< - > ServerN的防火墙配置是不可能的,因为我不允许在服务器上配置防火墙(不要问为什么; - ))
答案 0 :(得分:1)
这种精细控制是不可能的。所以这是一个全有或全无的情况。这些组确实可以用来控制全部或全部。
不幸的是,此功能仅在企业中可用。但是..你总是可以包装IMap并添加自己的安全层。如下所示:
IMap map = securityDecorator.newMap(hz.getMap(' yourmap'));
虽然当然仍然可以使用原始代理。
答案 1 :(得分:1)
我遇到了完全相同的问题。 但我认为小组应该解决它:
适用于版本3.4:
使用GroupConfiguration
对象配置节点时,将参数name
和password
传递给它:
Config config = new Config();
GroupConfig group = new GroupConfig(groupName, grouppassword);
config.setGroupConfig(group);
并尝试连接一个简单的客户端(我在第34页的#34; 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失败,关闭连接并且客户端死亡,这阻止了对组的读/写访问并且应该解决您的问题,所以我的。