研究PHP / Gearman。我试图了解Gearman Server / Process如何确定构成“有效”客户端的内容。
在我看过的文档中,文档显示了许多连接到Gearman Server的客户端。但是,我没有找到任何描述服务器如何“验证”工作人员,或限制工作人员/客户端从服务器访问/获取工作的内容。
作为一个例子,我创建了一个Gearman Server,我有一个带有5台子机器的网络,每台子机器都有一个“worker”。我的邪恶朋友史蒂夫在网络上添加了另一台机器,它拥有自己的工作人员......
如何阻止史蒂夫的工作人员从我的服务器上获取工作!
有没有办法让客户端/工作人员自己注册,所以我基本上可以为客户端/工作人员分配ID ???
我很确定有办法做到这一点,但我还没有碰到它。
我正在使用PHP / MySQL / Gearman在Linux环境上进行测试。
由于
答案 0 :(得分:2)
与memcached一样, gearman没有任何访问控制或身份验证。
您最好的解决方案是依靠您的操作系统,例如防火墙规则。
即 iptables 应该阻止到端口4730(标准的gearman端口)的所有传入流量,就像这样
iptables -A INPUT -p tcp --dport 4730 -s server1 -j ACCEPT
...
iptables -A INPUT -p tcp --dport 4730 -s server5 -j ACCEPT
iptables -A INPUT -p tcp --dport 4730 -j DROP
这样,您仍然可以使用localhost中的Gearman。
免责声明:此规则是我的首要问题,请在生产服务器上运行之前仔细检查这些规则。
希望这有帮助!
答案 1 :(得分:0)
通过监听(1)仅在localhost上或(2)设置适当的防火墙规则,如果您需要外部访问。创建Gearman的目的是尽可能减少开销,没有身份验证协议。如果这还不够,只能听localhost&使用SSH隧道到该机器的可能性。另一种可能性是使用HTTP
协议(请参阅here),并在其前面放置一个验证代理。
答案 2 :(得分:0)
Gearman服务器只能在您的内部网络上访问。您的应用程序所在的网络不应该有未经授权的设备。您的应用程序服务器不应与您的无线路由器共享网络。 Gearman只会向使用相同任务名称注册到该特定服务器的服务器发送作业。如果贵公司的一名员工向您的生产Gearman主人注册了一个同名的任务作为笑话,那么您就会遇到更大的问题。