如何限制 RethinkDB 对特定应用程序的访问?

How do I restrict RethinkDB access to a specific application?

我有一个使用 rethink-db 实例作为其数据库的弹性 beanstalk 应用程序。显而易见的事情是将对数据库的访问限制为仅此应用程序。

但是如果我将Rethinkdb实例的安全组中的相关端口设置为0.0.0.0以外的任何值,应用程序将无法访问数据库。

该应用程序正在使用数据库的私有 DNS 进行解析,并且位于同一亚马逊区域...据我了解,仅此一项就应该让我毫无规则地通过了安全组。显然不是在这种情况下。

我尝试将应用程序安全组的例外添加到该端口上的数据库安全组,以及应用程序负载平衡器的安全组。我也同时尝试过。没有骰子。

beanstalk-app 是可扩展的,所以它通常从几个可以随心所欲改变的实例进行通信。不幸的是,通过弹性 IP 并在数据库安全组中允许它不是一种选择。

最后,我被迫将 rethink 数据库的安全组留在驱动程序端口上,该端口在 0.0.0.0 处完全打开...我尝试过的任何其他方法都使我自己的应用程序无法访问它。

谁能告诉我我做错了什么?

as far as I understand, this alone should already get me passt the security group without any rules

这是不正确的。您始终必须有一个安全组规则才能允许访问。默认情况下阻止所有入站流量。

I have tried adding an exception for the applications security group to the databases security group on that port

这听起来正是您需要做的。您需要在分配给数据库服务器的安全组中创建入站规则。在该规则中,您将指定 Elastic Beanstalk 实例所属的安全组的 ID。

如果这不起作用,那么您可能需要 post 在您的问题中提供更多信息,例如实际的安全组设置。

此外,您需要确保您的 EB 实例正在尝试通过数据库服务器的私有 IP 连接到数据库服务器。您的问题听起来可能是他们正在使用数据库服务器的 public IP。我知道你说他们使用的是数据库服务器的私有 DNS,但你需要确保情况确实如此,并确保从 EB 实例引用时 DNS 正确解析为私有 IP。