如何在CloudFoundry环境中创建安全的内部路由(Swisscom AppCloud)

时间:2019-08-05 18:42:22

标签: dns routing cloudfoundry swisscomdev

我想在同一空间/组织内的两个应用程序之间创建一条安全的内部路由。永远都不可能从外部访问Node.js应用程序。我的Java应用程序通过HTTP连接到Node应用程序(在express上运行)。

我现在已经尝试通过创建名为 private static void CallAsynch2() { var tasks = new List<Task<KeyValuePair<int,string>>(); for (int i = 0; i < Iterations; i++) tasks.Add(Task<KeyValuePair<int, string>>.Factory.StartNew(GetValueAction(i))); } private static Func<KeyValuePair<int, string>> GetValueAction(int i) { return new KeyValuePair<int, string>(i, i.ToString()); //return ClassLibraryService.RandomValue.GetRandomValue(i); } 的路由并将其分配给Node应用程序来设置所需的配置。下一步,我在Java应用程序的网络配置中打开了端口(我尝试过example-route.apps.internal44380)(目标是Node app) )。我重新处理了两个应用程序。

然后,我打开了与链接8080的Java连接。我也尝试使用http://example-route.apps.internal/test123。结果是一样的。 Java拒绝使用此URL。

现在,以下问题:

  • 如何正确设置此通信?我应该以某种方式解决此内部DNS吗?如果仅使用env变量的端口,哪个端口是正确的端口?我应该如何从其他应用程序读取此端口?
  • 如果使用HTTP代替HTTPS,则通信的安全性如何? (我认为内部无法使用HTTPS)。它和外部的HTTPS连接一样安全吗?哪些设备在之间,连接能走多远?

谢谢!

1 个答案:

答案 0 :(得分:3)

我认为你快到了。

  

然后,我打开了与链接http://example-route.apps.internal/test123的Java连接。我也尝试过使用https。结果是一样的。 Java拒绝使用此URL。

您应该使用http://example-route.apps.internal:8080/test123。您的应用程序设置为监听$ PORT,在当前版本的CF中,该端口始终为8080。

通常,您不必担心这一点,因为您的流量通过Gorouter进入,后者为您转换(映射外部端口80->内部8080)。对于内部路线,交通是直接的,因此没有任何变化。因此,您需要在URL中使用端口8080。

或者,您可以使用诸如Eureka或Consul之类的服务发现机制,但这不是必需的。在这种情况下,服务将知道它正在监听8080,并将其注册到注册表中。

就HTTPS而言,这很棘手。您的应用仅监听80 / HTTP。您必须将其更改为侦听443 / HTTPS,但随后需要证书和其他服务器配置。从技术上讲这是可行的,但它完全是蠕虫。

在某些较新的版本中,Envoy存在并且可以将HTTPS流量接受到容器中,可以使HTTPS变得更容易,但是它仍然不是灌篮(至少在撰写本文时)。我希望将来会更好。

  

我应该以某种方式解决此内部DNS吗?

内部DNS可以帮助您找到其他应用程序,而不是端口。否则,您将需要管理经常更改的IP地址,并且需要诸如Eureka或Consul之类的东西。

  

如果仅使用env变量的端口,哪个端口是正确的端口?

见上文。

  

我应该如何从其他应用程序读取此端口?

此刻始终是8080,已经使用了很多年。它不太可能更改,因此您可以硬编码或安全地将其设置在配置文件中。

  

如果使用HTTP代替HTTPS,则通信的安全性如何? (我认为内部无法使用HTTPS)。   它和外部的HTTPS连接一样安全吗?哪些设备在之间,连接能走多远?

无法从外部访问流量,因为在某些情况下甚至在最坏的情况下流量都不会离开Cell,但在两个Cell之间却可以看到流量,因为流量未经加密。这意味着您需要对可以访问内部流量的CF提供商更加信任。

如果是HTTPS,则只有拥有密钥的人才能解密它。您仍然必须信任您的提供商,因为他们可能会获得密钥并使用它来解密流量。对于他们来说,与不加密流量相比,这将是更多的工作。

希望有帮助!