我们正在尝试按照Microsoft的Microsoft安全最佳实践中的建议实施Gatekeeper设计模式,但是我在确定如何执行此操作时遇到了一些问题。
为了给出项目的一些背景知识,我们采用传统的分层方法(演示,业务,数据等)来开发已经开发的网站,并将其转换为使用Azure。客户希望围绕此流程建立一些额外的安全性,因为它现在将在云中。
处理此问题的初步建议是使用队列并将工作者角色处理请求输入队列。我们遇到的一些问题是如何正确地序列化对象,并包括我们需要在该对象上运行的方法以及此类方法中固有的延迟。
我们也在工作者角色中设置了一些WCF服务,但是我在解决这个问题时遇到了一些麻烦。 (除了这是我的第一个Azure项目,这也是我第一次尝试WCF。)我们在这里遇到了与对象序列化相同的问题。
另一个想法是在另一个Web角色中设置一些Web服务,但这似乎打开了相同的安全问题,因为我们将无法对请求执行基于IP的安全性。
我已经搜索过但没有找到任何可以做我们想做的事情的样本(或者我没有认出他们这样做)。有人可以提供代码示例的一些指导吗?感谢。
答案 0 :(得分:1)
请不要采取错误的方式,但听起来你有可能根据“客户希望增加安全性”的“要求”过度设计解决方案。 Security Best Practices For Developing Windows Azure Applications文档第13页描述的网守模式是一个非常大的枪,你应该只针对大目标,即实际需要硬化的应用程序存储高度敏感的数据。建立这样的东西可能会花费大量的时间和时间。性能,所以一定要权衡专业和彻底的。
您是否考虑过将SQL Azure firewall作为额外(可能接受)的安全措施?您可以在IP地址级别指定访问权限,甚至可以通过存储过程以编程方式对其进行配置。您可以阻止对数据库的所有外部访问,使您的Azure应用程序(Web /辅助角色)成为唯一可以访问的“客户端”。
答案 1 :(得分:0)
要专门回答您的一个问题,您可以使用X.509证书保护对WCF服务的访问并实现消息安全性;如果您还需要SSL连接来保护传输中的数据,则需要同时使用消息和传输安全性。这不是地球上最简单的事情,但它是可能的。您可以这样做,只有具有正确证书的服务器才能发出WCF请求。请查看此主题以获取更多详细信息以及更多指示:http://social.msdn.microsoft.com/Forums/en-US/windowsazuresecurity/thread/1f77046b-82a1-48c4-bb0d-23993027932a
此外,只要您将对象标记为Serializable,WCF就可以轻松交换对象。因此,进行WCF调用将极大地简化您与客户端来回交换对象的方式。