Joe*_*eky 7 encryption azure-sql-database
我正在将应用程序移至 Azure,并且需要为单个表中的几列实现 PCI 合规性。我意识到我可以在存储数据之前对其进行加密,但我想知道 SQL Azure 中是否有一个功能可以为我管理其中的一部分。我读过一些,但我不确定是什么;或者不是;SQL Azure 中支持。
我已经阅读了使用 SQL Server(而不是 SQL Azure)的模式,其中在视图后面应用了数据加密和解密。在这种情况下,所有客户端都通过视图访问数据,因此从加密/解密过程中抽象出来。这么一说,好像有点危险。
我对如何处理这种情况的任何和所有建议持开放态度。
小智 4
简短回答:截至 2012 年 4 月 20 日,SQL Azure 不支持列加密,请参阅:http ://msdn.microsoft.com/en-us/library/windowsazure/ee336253.aspx并搜索 ENCRYPT。您将看到所有加密功能都被列为不受支持。
如果您需要加密静态数据并且必须支持 SQL Azure,那么您将必须在应用程序级别进行加密。这更难以正确实现,因为您将拥有许多良好的加密实践(使用随机数作为每个单元的初始化向量、用于跟踪哪些密钥加密哪些列的密钥管理、完整性验证、具有基于角色的权限的加密密钥的分层保护)自己去实施。我强烈建议找一位安全专家来与您一起进行加密,因为要正确进行加密是很有挑战性的,如果您错过了某些内容,那么您就会产生一种错误的安全感,这可能会在以后真正伤害您。
您可以查看http://securentity.codeplex.com,它声称是管理加密数据的解决方案并支持SQL Azure。我没有亲自使用过它,也不能保证它的正确性,但它是一个潜在的选择。
其他信息:
在 SQL Server 中,列级加密非常简单且非常安全(即使使用视图),因为您可以使用角色来管理谁可以访问加密密钥。即使用户可以从视图中进行选择,如果他们没有被授予对加密基础数据的密钥的访问权限,那么他们将得到这些加密列的 NULL。我有一组 SQL Server 2005 及更高版本的示例代码,演示了 SQL Server 的加密功能: http: //sqlcrypto.codeplex.com