【问题标题】:How do I secure a connection from a web role to SQL Azure?如何保护从 Web 角色到 SQL Azure 的连接?
【发布时间】:2011-10-21 01:46:29
【问题描述】:

我们正在尝试按照 Microsoft Azure 安全最佳实践中的建议实施 Gatekeeper 设计模式,但我在确定如何执行此操作时遇到了一些问题。

为了提供有关该项目的一些背景信息,我们使用传统的分层方法(演示、业务、数据等)将一个已经开发的网站转换为使用 Azure。客户希望围绕此过程构建一些额外的安全性,因为它现在将在云中。

处理此问题的最初建议是使用队列并让工作角色处理进入队列的请求。我们遇到的一些问题是如何正确序列化对象并包括我们需要在该对象上运行的方法以及这种方法固有的延迟。

我们还研究了如何在 Worker Role 中设置一些 WCF 服务,但我在思考如何准确处理这个问题时遇到了一些麻烦。 (除了这是我的第一个 Azure 项目,这也是我第一次尝试 WCF。)我们在这里遇到了与对象序列化相同的问题。

另一个想法是在另一个 Web 角色中设置一些 Web 服务,但这似乎会引发相同的安全问题,因为我们将无法对请求执行基于 IP 的安全性。

我进行了多次搜索,但还没有真正找到任何可以做我们正在尝试做的事情的样本(或者我没有认出他们这样做)。任何人都可以提供一些代码示例的指导吗?谢谢。

【问题讨论】:

    标签: azure azure-sql-database azure-worker-roles


    【解决方案1】:

    请不要采取错误的方式,但听起来您有过度设计基于“客户希望增加安全性”的“要求”的解决方案的危险。 Security Best Practices For Developing Windows Azure Applications 文档第 13 页上描述的看门人模式是一把非常大的枪,您应该只对大型目标开火,即您实际上需要强化应用程序存储高度敏感数据的场景。构建这样的东西可能会花费大量时间和性能,因此请确保彻底权衡利弊。

    您是否考虑过将SQL Azure firewall 作为额外的(并且可能是可接受的)安全措施?您可以在 IP 地址级别指定访问权限,甚至可以通过存储过程以编程方式对其进行配置。您可以阻止对数据库的所有外部访问,使您的 Azure 应用程序(Web/工作者角色)成为唯一允许访问的“客户端”。

    【讨论】:

    • 抱歉延迟回复,但我被拉到另一个项目。有问题的客户端具有基于 Web 服务器的安全模型,该 Web 服务器通过防火墙访问 WCF(或 Web)服务,然后通过第二个防火墙访问数据库,以便在开放 Internet 和数据存储之间有两个防火墙。有问题的客户端将存储 SSN(我们将在数据库中对其进行加密),因此他们非常关心安全性。您的建议是我如何设计我当前的 Azure 项目,但下一个项目有更强的安全要求。
    • 好的。如果可能,请提供一个明确的问题。你具体在找什么?看门人模式的示例实现?输入如何序列化对象以存储在队列中,或者传输(WCF)服务?如果可能,请编辑您的原始问题并澄清。谢谢!
    【解决方案2】:

    要具体回答您的一个问题,您可以使用 X.509 证书保护对 WCF 服务的访问并实施消息安全;如果您还需要 SSL 连接来保护传输中的数据,则需要同时使用消息和传输安全性。这不是地球上最简单的事情,但它是可能的。您可以这样做,以便只有具有正确证书的服务器才能发出 WCF 请求。看看这个线程以了解更多细节和更多指针:http://social.msdn.microsoft.com/Forums/en-US/windowsazuresecurity/thread/1f77046b-82a1-48c4-bb0d-23993027932a

    此外,只要将对象标记为可序列化,WCF 就可以轻松交换对象。因此,进行 WCF 调用将大大简化您与客户端来回交换对象的方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-15
      • 2013-07-15
      • 1970-01-01
      相关资源
      最近更新 更多