在我的主服务器上,我从外部/单独的 redis服务器获取数据,该数据通过可用的api https://localhost:7000/api/?token=****
访问。但是token
和api并不安全。由于我希望将 redis服务器分开,这种技术并不适合我的情况。
在我的情况下,我希望拥有2台独立服务器 A 和 B 。
A 应该从 B 加载数据而不使用api或url调用...而应使用端口(例如//server:123
) 。这样,服务器 B 只能从 A 访问。
我希望这种方法适用于开发和生产。 AWS拥有"服务器组"我相信,但这只是生产......
那么有没有办法与nodejs建立这种连接?我也想知道这是否只有一台正在运行的服务器,因为我还没有。
注意:如果您想知道,我使用redis存储私钥进行加密,因此我需要一个可以独立控制的安全,独立的服务器
答案 0 :(得分:2)
由于在不使用API的情况下从其他服务器访问数据,所以您要尝试做什么并不是很清楚。您访问它的任何操作都是某种类型的API。
如果你想让服务器A只能访问服务器B,那么你有很多选择可以保证服务器安全:
访问服务器B时需要进行身份验证,并使其只有服务器A具有这些身份验证凭据。
假设服务器A和服务器B位于同一服务器基础结构中,请将服务器B API放在外部无法使用的端口上,但只能从服务器基础结构中获取(这通常涉及选择您的防火墙阻止访问的端口。)
在服务器A上,仅接受来自服务器B的特定IP地址的API连接。
您甚至可以同时实施多个选项。例如,一起使用1)和2)并不罕见。
答案 1 :(得分:1)
Stunnel就是为此而建的!基本上说它是一个vpn!但不适用于端口机器!它有点复杂,您将不得不处理证书和其他一些事情(配置两台服务器......)但是一旦完成它就可以轻松启动和重用(只需启动它)试一试!
并看到此链接:https://www.digitalocean.com/community/tutorials/how-to-set-up-an-ssl-tunnel-using-stunnel-on-ubuntu
您还应该考虑在数据库服务器上添加ip表规则,以便只允许访问您的服务器。
编辑:
请记住,redis旨在用于受信任的环境中。这意味着安全层本身不会是redis,而是您需要设置的第三方软件。
对于开发目的,不需要使这个防弹。即使你愿意,也很难做到。因为您应用的安全性主要取决于将托管您应用的公司的基础架构。
话虽如此,如果您想在localhost环境中保护redis实例。 ip表中的规则只允许localhost访问你的端口6379就足够了。
另一件可能危及redis数据库安全性的事情就是应用程序本身。这一点的一个重要方面是验证一切,这应该是一个良好的开端。
最后,如果你想深入了解一下,请看看这个链接
希望这有帮助!