内部WCF的体系结构调用其连接到Internet的哑DMZ版本

时间:2016-06-29 22:27:35

标签: c# wcf security architecture dmz

请原谅我,如果这是重复,我没有找到答案。

我们有以下网络设置

Internal | DMZ | Internet

我认为这是安全的标准。

然后我有一个具有业务逻辑和持久性的内部WCF 服务。

由于数据不应理想地托管在DMZ中,我认为最好的解决方案是将相同服务的“哑” shell部署到DMZ并传递通信所需的参数使用互联网

我相信它看起来像这样:

Internal | DMZ | Internet WCF_Full <---> | <-- WCF_Thin --> | <----> (Third party)

  1. 什么是最好的方法?
  2. 我的解决方案是

    • WCF_Full 中提供指向 WCF_Thin 的服务引用。
    • 两个界面相同, WCF_Thin 只是将消息传递到互联网

    挑战来了,我必须传递更多数据(配置+业务消息),以使 WCF_Thin 工作,如果我坚持 WCF_Thin

    1. 这是值得的权衡,还是我做错了?

1 个答案:

答案 0 :(得分:1)

1)“最佳方法”是主观的,它总是取决于背景

2)我已经看到它按照您的描述完成,但仅适用于外部发起的流量。 DMZ托管了该服务的“Relay”版本,正如您所描述的那样,它只是将流量传递到完整版本。在我们的例子中,完整版本托管在“内部”网络上,然后访问数据存储并将其返回链。不知道为什么你需要为内部启动的流量执行此操作。

这种“中继”解决方案增加了相当大的复杂性,我们最终用应用层网关(ALG)取而代之,基本上做了同样的事情,虽然复杂性较低。 ALG将流量代理到服务的完整版本,并且“Relay”版本已停用。如果你使用谷歌的“应用层网关”,你会发现一堆信息。

可以针对发往外部的内部发起的呼叫执行相同的代理。考虑负载测试场景,您不希望加载供应商的服务或每次调用付费。为此,您可以设置ALG以识别邮件的签名,并以您确定的任何方式进行响应。

HTH