使用每个用户数据的单独密钥加密SQL Server Azure数据库中的数据

时间:2016-12-08 13:55:42

标签: encryption azure-sql-database sql-server-2016

我正在尝试基于Azure SQL数据库后端创建服务。

该服务将是多租户,并且将包含来自多个“客户端”(可能数十万)的高度敏感信息,这些信息必须严格隔离,并严格防范数据泄露。 “按设计”

使用如此多的个人数据库是不可行的,因为每个客户端会有很多客户信息非常少。

我已经研究过Azure提供的透明加密,但这实际上会将整个数据库加密为一个,因此换句话说它不能防止客户端或其他人之间的泄漏;由于开发错误或敌意攻击,一个“客户”信息永远不会进入任何其他人的手中,这一点至关重要。

所以我真正希望实现的是用不同的密钥加密数据库中每个客户端的数据,这样你就必须从每个客户端(从他们的“物理”位置)到de-crypt获取密钥。您可能设法从该数据库中为该特定客户端提取的任何数据,这对任何人来说几乎是不可能的。

我明白我的意思吗?

您是否对我有任何关于如何管理此问题的建议,或者知道任何允许此功能的第三方解决方案?还有其他建议吗?

1 个答案:

答案 0 :(得分:2)

您正在考虑保护/隔离租户"按设计"在单个表格中,为什么不查看Row Level Security。您可以将其配置为仅将适用的行提供给特定租户。

这并没有直接解决您关于使用每个租户的单独密钥加密数据的初始问题;如果每个租户都有一个单独的表,那么您可以通过Always Encrypted执行此操作,但如果您尝试处理200k密钥,这似乎在密钥管理方面会有一些复杂性。

AFAIK,没有本地SQL Server功能来加密属于具有不同密钥的租户的每组行 - 但可能有一些我尚未见过的优雅解决方案;当然,您可以在应用程序端执行此操作并将其存储在SQL中,并且不存在任何问题;这个技巧与上面基于AE的解决方案相同 - 管理大量的密钥。