天蓝色的建筑 - 处理安全

时间:2011-11-02 15:50:07

标签: wcf azure azure-sql-database wcf-rest

计划将现有应用程序迁移到Azure。 我们现有的安全流程架构如下

  • 从用户获取用户名密码的ASP MVC 3.0 UI层 我们计划将UI层迁移到计算云上。 并且可以通过uilayerdomainname.com获取,该证书具有SSL证书。

  • WCF REST webservices层,其中包括身份验证。这是目前在说servicename.cloudapp.net。 (我们可以将它映射到servicelayername.com并获得该域名的SSL)。

  • SQL Azure数据库

UI层将凭据发送到服务层,该服务层根据SQL azure数据库对其进行身份验证。

问题

  • WCF计算云和UI层都位于Azure的同一区域。这两者之间的沟通是否容易受到中间人的攻击?我的WCF计算云也需要SSL吗?我们有两个带SSL的域名,因此可以将服务映射到一个。

  • 有什么方法可以限制UI层和WCF计算云之间的流量 - 只允许UI层访问服务层吗?

  • 如果我在同一个实例上发布WCF服务和UI层,性能会更好吗?它有点击败了漂亮的分层架构,但如果它提高了性能,我可以继续使用它。我们不想跳过太多的箍来容纳Azure的应用程序,以免它变得难以迁移出来。

2 个答案:

答案 0 :(得分:1)

如果您在“工作者角色”中托管服务,则它们只能用于您的Web角色。您也可以在其他地方托管它并在代码中监视请求。同一部署中的Azure角色可以以部署之外不可用的特定方式相互通信。

在Azure部署中,您需要非常明确地定义公共端点,因为角色位于负载均衡器后面。如果您在worker-role中托管WCF服务,则无法公开访问它。

希望这有帮助

答案 1 :(得分:1)

如果将WCF服务和UI层配置为仅通过内部端点进行通信,则通信是私有的。除非将WCF服务公开,否则无需为WCF服务购买或配置SSL证书。

此外,这些内部端点之间的唯一流量将在您的实例之间 - 因此,您的UI层和WCF服务之间的流量已经受到限制。

Web角色和辅助角色都是这种情况:您可以将托管WCF服务的Web角色配置为具有专用内部端点。

如果您在同一台计算机上安装了UI和WCF层,则可能会看到系统的体系结构。

如果您的界面是“聊天”并且为每个UI请求多次调用WCF服务,那么您肯定会看到性能提升。如果只有一两次调用,那么与数据库的延迟相比,改进可能是最小的。