如何限制从特定主机访问Cassandra



我正试图控制对Cassandra数据库的访问,使其只能从特定主机访问(拒绝未配置主机的访问(,我在Cassandra.yaml文件中有以下配置:-


start_rpc: true
rpc_address: 0.0.0.0  
broadcast_rpc_address: x.x.x.x  
rpc_port:9160

这些配置是否正确或缺少什么?还有其他方法可以从特定主机访问Cassandra吗

不确定您使用的是哪种版本的Cassandra,但9160适用于节俭协议连接。它在Cassandra 3.0中被弃用,在Cassandra4.0中被删除。

如果是我,我会通过设置start_rpc: false来关闭访问通道。

所有客户端连接请求都应在端口9042上使用CQL本地二进制协议(9142,如果v4.0+中使用客户端到节点SSL(。

控制对Cassandra数据库的访问,使其只能从特定主机访问

为此,您的最佳选择是在每个节点上使用iptables进行筛选。这里有一个详细介绍如何做到这一点的资源。基本上,您需要在集群中的每个节点上ACCEPT连接到/来自每个IP地址:

允许来自192.168.0.1的传入连接,仅在端口9042:上

iptables -A INPUT -s 192.168.0.1 --dport 9042 -j ACCEPT

允许传出连接返回192.168.0.1:

iptables -A OUTPUT -d 192.168.0.1 -j ACCEPT

我想回应Aaron的评论。Thrift在2012年被CQL取代。2014年,Cassandra工具中对Thrift的支持被取消(Cassandra-8358(,自Cassandra 2.2(Cassandra-9319(以来,Thrift RPC服务器默认被禁用。

Thrift客户的开发也在近10年前停止。Nate McCall是Cassandra项目的现任主席,也是Hector客户端的作者,他在2015年关闭了该项目,转而使用Java驱动程序,所以我不再使用Thrift。

您应该配置CQL本机传输服务器,而不是Thrift服务器。以下是您应该在cassandra.yaml:中关注的属性

listen_address: private_ip
rpc_address: public_ip
native_transport_port: 9042

如果节点只有一个IP地址,则可以将其用于listen_addressrpc_address。除非您有一个复杂的网络拓扑,节点只能使用公共IP地址与远程DC中的节点进行通信,否则实际上没有必要使用broadcast_address,例如EC2多区域部署。

你的问题不是关于卡桑德拉,而是关于人际关系。您需要与网络管理员交谈,以将防火墙配置为只允许从应用程序服务器连接到端口9042。干杯

相关内容

  • 没有找到相关文章