0

我有一个连接到 mongodb atlas 的 spring boot 应用程序。一切都在本地工作。

我现在想将其发布到关键的云代工厂。

PCF 和 atlas 之间的安全连接

在 mongodb atlas 中,我需要打开防火墙并允许某些 ip 号码。我应该如何配置 mongodb atlas 以最安全的方式连接到 pcf?

自动配置阻碍

Cloud Foundry 正在覆盖我的连接 url 以指向 localhost:27017 而不是我的 atlas 集群。连接到 mongodb atlas 的推荐方式是什么?

4

1 回答 1

1

在 mongodb atlas 中,我需要打开防火墙并允许某些 ip 号码。我应该如何配置 mongodb atlas 以最安全的方式连接到 pcf?

将在 CF 上运行的应用程序的 IP 地址列入白名单并不是特别有效。它无效的原因是您不知道要连接的 IP 地址,因为这取决于 Diego 决定在哪里运行您的应用程序。换句话说,它取决于您的应用程序被告知运行的单元格。更复杂的是,当您重新启动/重新部署应用程序时,情况会发生变化。

由于 IP 可能会有所不同,因此您最终需要做的是将所有单元列入白名单。这样做的问题以及它为什么无效的原因是您最终将平台上运行的每个应用程序都列入了白名单。

为了稍微提高安全性,您可以做的是利用应用程序安全组。ASG 可用于限制传出流量。您还可以在空间级别控制它们。这意味着您可以将默认运行的安全组配置为不允许访问 MongoDb 服务器,但您可以通过将 ASG 绑定到仅具有需要与 MongoDb 服务器通信的应用程序的空间来允许访问各个空间。

这种方法的缺点是它要求您是平台管理员,这意味着它仅在您拥有 CF 安装时才有效(不适用于公共提供商)。

更多关于 ASG 的信息在这里: https ://docs.cloudfoundry.org/adminguide/app-sec-groups.html

对于公共提供者,您可以使用代理。要使这项工作正常进行,您需要将应用程序配置为在尝试访问 Mongodb 服务器时通过代理进行通信。您控制具有固定 IP 的代理,因此您可以将代理列入白名单以仅允许访问您的应用程序。如果您不想运行自己的代理服务器,可以使用公共代理提供程序。

Cloud Foundry 正在覆盖我的连接 url 以指向 localhost:27017 而不是我的 atlas 集群。连接到 mongodb atlas 的推荐方式是什么?

可以禁用自动配置。此处的文档中描述了一种方法。如果您包含 Spring Cloud Connectors 依赖项并手动使用它们,那么自动配置将不会运行。

https://docs.cloudfoundry.org/buildpacks/java/spring-service-bindings.html#manual

另一个选项是告诉 Java 构建包不要安装自动配置。您可以通过使用cf set-env或通过 manifest.yml 文件为您的应用程序设置以下环境变量来做到这一点。

前任: JBP_CONFIG_SPRING_AUTO_RECONFIGURATION='[enabled: false]'

如果您这样做,请小心,因为它会禁用自动重新配置提供的所有内容,其中包括为您的应用设置“云”配置文件。如果您使用此选项禁用自动重新配置,您可能还需要设置SPRING_PROFILES_ACTIVE='cloud'为手动启用云配置文件。

我想你的另一个选择是简单地接受自动配置。一开始有点令人困惑/神奇,但我发现这篇文章可以很好地解释它。

https://spring.io/blog/2015/04/27/binding-to-data-services-with-spring-boot-in-cloud-foundry

希望有帮助!

于 2017-02-26T18:57:24.413 回答