限制 CloudFoundry 上应用程序的入站流量

Restrict inbound traffic to an app on CloudFoundry

可以使用应用程序安全组来限制来自 CloudFoundry 上的应用 运行 的出站流量。详情在这里:https://docs.cloudfoundry.org/concepts/asg.html

假设我希望应用仅对特定 IP 地址可见——换句话说,将入站流量限制为特定 IP 地址。我想这可以通过使用自定义路由服务并将其绑定到我的应用程序的路由来实现。但是有没有更简单的方法呢?

我想通常的方法是使用 API 网关?

正如您提到的,路由服务是一种可能性。另一个是在你的应用程序中处理这个。具体如何操作取决于所使用的 buildpack/language。

Java 的一个示例是使用由 buildpack 安装的 Tomcat 来限制 IP 访问。你可以用 Remote Address Filter 来做到这一点。如果您使用 Spring Boot,您可以使用它提供的嵌入式 Tomcat 做类似的事情。

如果您使用的是 Apache HTTPD,则可以使用 Require ip 10.10.10.10 来强制执行该要求。同样,对于 Nginx,您可以使用 allow 10.10.10.10;deny all;.

对于其他语言和框架,请查看您的文档以了解有关如何根据传入 IP 进行限制的说明。唯一需要考虑的复杂因素是,在 Cloud Foundry 上,您的应用程序位于代理之后,因此您的应用程序看到的远程 IP 地址将不是实际客户端的远程 IP。那将驻留在 x-forwarded-for header 中。在上面的示例中,Tomcat,Nginx 和 HTTPD 为您解析了这个 header,但根据您的应用程序和框架,您可能需要手动查看此 header 以获得正确的 IP .

以上假定您希望 IP 拒绝在应用程序级别是特定的和可自定义的。如果您试图在整个基础上应用更广泛的规则,那么在流量到达应用程序甚至基础之前应用这些限制会更有意义。也许您可以在您的基金会前面或在为您的基金会接受流量的外部负载平衡器上使用防火墙。显然,这一切都取决于您在基金会之外可用的基础设施。

希望对您有所帮助!