在Azure上使用Azure SQL数据库保护ASP.net应用程序

在Azure上使用Azure SQL数据库保护ASP.net应用程序,asp.net,security,azure,azure-sql-database,Asp.net,Security,Azure,Azure Sql Database,[对于一个冗长、漫无边际的问题,我深表歉意。我希望能从比我知识渊博的人那里引发一些讨论/建议。如果这真的不适合这样做,请给我一个提示,在哪里问这类问题。] 我有一个ASP.NETMVC4应用程序。我正在使用Azure web角色来托管它(至少现在是这样)。我的应用程序是一个专门的医学访谈程序,它从用户那里收集敏感信息,并生成一份报告,该报告可供医生和患者查看(通过未加密电子邮件附带的加密PDF文件)。敏感数据会保留24小时,以便医生返回并检索报告,之后记录会被删除(我知道这实际上不会从持久性存储

[对于一个冗长、漫无边际的问题,我深表歉意。我希望能从比我知识渊博的人那里引发一些讨论/建议。如果这真的不适合这样做,请给我一个提示,在哪里问这类问题。]

我有一个ASP.NETMVC4应用程序。我正在使用Azure web角色来托管它(至少现在是这样)。我的应用程序是一个专门的医学访谈程序,它从用户那里收集敏感信息,并生成一份报告,该报告可供医生和患者查看(通过未加密电子邮件附带的加密PDF文件)。敏感数据会保留24小时,以便医生返回并检索报告,之后记录会被删除(我知道这实际上不会从持久性存储中删除数据)

因此,我开始考虑我需要担心的是什么,关于安全边界,以保持机密数据的机密性。虽然我是一名经验丰富的桌面应用程序开发人员,但我对整个网络编程还是新手

我需要担心的第一个明显的安全边界是服务器和用户之间的通信层。我有一个有效的、正确配置的SSL证书,网站上处理登录用户的所有部分(包括采访和报告工作流)都通过HTTPS端点运行

我假设/希望Azure的SSL实现是正确的,并且我不能也不应该做任何事情来强化主机本身

为了方便用户,我允许访问者在登录时浏览并重定向到标有[RequiresHttps]的页面。我知道这种HTTP到HTTPS的重定向容易受到攻击,在这种情况下,服务器会看到一个安全的HTTPS连接,但警惕的用户会注意到URL是HTTP而不是HTTPS。我计划保留这个方便的特性,但我将通过使用扩展的验证证书来缓解它,这将为大多数用户提供一个愉快的绿色地址栏。我会在登录的用户主页上放一些东西,提醒用户验证绿色地址栏

我将了解如何配置ASP.NET,以便对我的所有cookie进行加密

我已经启用了远程桌面(在Azure部署向导中),这样就打开了一个门户,如果有人能够识别出我的用户名和密码,就会受到攻击。这就是生活

我需要担心的下一个安全边界——这也是我需要帮助的地方——是在未经授权的人访问数据库时保护敏感数据。我在数据库管理方面的知识几乎局限于复制和粘贴连接字符串以及编写简单的SQL查询

我正在使用实体框架和Azure SQL数据库来处理我的所有数据库内容。我使用代码中烘焙的密钥加密数据实体中的敏感数据。据推测,数据库本身是加密的,刚获得数据库文件的人(Azure SQL Databases界面可以通过web连接访问,但只能从受信任的IP地址访问)需要找出我的SQL用户名和密码才能取出数据

有人可能会骗我的应用程序泄露敏感信息。我的工作流程只允许登录用户读取和写入自己的记录。为了让攻击者访问加密的敏感数据,他们要么需要获取我的加密密钥,要么想办法调用我的代码。我没有混淆.NET代码我假设我的可执行文件是安全的。我还假设包含数据库凭据的明文web.config是安全的。这些假设好吗


所以,这就是我的初学者大脑让我走上安全道路的极限。有什么意见或建议吗?我有没有做过任何不正确的假设或忽略了任何明显的东西?

很多都与Azure无关。让我从WindowsAzure的角度谈几点

存储数据:我建议将加密的pdf移动到blob存储。然后可以提供加密pdf的链接,而不是附加加密文件本身。另外,您可以将blob(存储pdf)设置为私有,这样就没有人可以访问它。然后,创建一个共享访问签名,本质上是一个具有时间限制权限的特殊签名URL。然后,你可以设置一个24小时的阅读窗口。通过电子邮件提供此链接,在接下来的24小时内,它可以被下载并(使用正确的密码)解密。24小时后,链路停止工作。您还可以在该点删除blob(是的,它将消失)

使用RDP,您需要选择一个非常好的密码。除了RDP,我看不出有人如何访问您的web角色实例

对于WindowsAzure SQL数据库,我建议不要让外界访问它。只需限制对WindowsAzure服务的访问。Microsoft Azure SQL数据库不加密数据,也不支持加密字段。你需要自己加密


您需要回答的更大的问题是:您可以在云中存储医疗信息吗?您这样做是否违反了任何合规或法律规定?你需要在这方面做功课,并找出答案。清晰的数据会引起关注,合规性方面(我不是律师,所以我不会在这里给出任何建议)。使用Windows Azure,如果您使用的是Windows Azure计算和存储,您可以获得一个签名的BAA,这意味着您可以实现应用程序的HIPAA合规性。当前,Windows Azure SQL数据库不在HIPAA法规遵从性窗口内。有关法规遵从性的更多信息,请参阅Windows Azure。

其中许多与Azure无关。让我从WindowsAzure的角度谈几点

存储数据:我建议