【问题标题】:Architecture for Internal WCF calling its dumb DMZ version connecting to the Internet内部 WCF 的体系结构调用其连接到 Internet 的哑 DMZ 版本
【发布时间】:2016-11-01 20:08:15
【问题描述】:

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

我们有以下网络设置

Internal | DMZ | Internet

我相信这是安全标准。

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

由于理想情况下数据不应该托管在 DMZ 中,我认为最好的解决方案是将同一服务的 "dumb" shell 部署到 DMZ 并传递通信所需的参数互联网

我相信它看起来像这样:

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

  1. 最好的方法是什么?

我的解决办法是

  • WCF_Full 中有一个指向 WCF_Thin 的服务引用。
  • 两者具有相同的接口,并且 WCF_Thin 只是将消息传递到互联网

挑战在于我必须通过网络传递更多数据(配置+业务消息),以使 WCF_Thin 工作,如果我对 WCF_Thin

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

【问题讨论】:

    标签: c# wcf security architecture dmz


    【解决方案1】:

    1)“最佳方法”是主观的,它总是取决于上下文

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

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

    对于发往外部的内部发起的呼叫,可以进行相同的代理。考虑一个负载测试场景,您不想加载供应商的服务或按次付费。为了帮助解决这个问题,您可以设置 ALG 以识别消息的签名,并可以以您确定的任何方式进行响应。

    HTH

    【讨论】:

    • 感谢您的反馈。将其标记为答案。您的最后一段正是我们在需要对组件进行负载测试时所做的。只是我们用模拟服务替换了真正的调用
    猜你喜欢
    • 1970-01-01
    • 2011-01-18
    • 2010-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-16
    • 1970-01-01
    • 2011-09-04
    相关资源
    最近更新 更多