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

3
我正在尝试创建一个基于Azure SQL数据库后端的服务。
该服务将是多租户的,并且将包含来自多个“客户”的高度敏感信息(潜在地可能有数十万个),这些信息必须严格隔离并严密保护,以防止数据泄漏。使用如此多的单独数据库是不可行的,因为会有很多客户,每个客户的信息都很少。
我已经研究了Azure提供的透明加密,但这实际上会将整个数据库作为一个单位进行加密,因此它不能防止客户之间或其他人之间的泄漏;由于开发错误或恶意攻击,这非常关键,一个“客户”的信息绝不能落入任何其他人的手中。
因此,我真正想要实现的是,使用不同的密钥加密数据库中每个客户的数据,以便您必须从每个客户(从他们的“物理”位置)获取密钥才能解密您可能从该特定客户的数据库中提取的任何数据,这对于任何人来说几乎是不可能的。
我的意思清楚吗?
你们有什么建议可以帮我解决这个问题,或者知道任何第三方解决方案可以实现这个功能吗?还有其他建议吗?
1个回答

2
您正在考虑在单个表中通过设计来保护/隔离租户,为什么不查看行级安全。您可以将其配置为仅向特定租户提供适用的行。
这并没有直接回答您最初关于使用单独的密钥加密数据的问题;如果您为每个租户拥有一个单独的表,则可以通过始终加密来实现此目的,但是如果您要处理200k个密钥,则可能存在一些密钥管理上的复杂性。
据我所知,SQL Server没有本地功能可以使用不同的密钥加密属于租户的每组行-但可能有一些优雅的解决方案我还没有见过;当然,您可以在应用程序端执行此操作并将其存储在SQL中,这样就不会有任何问题;诀窍与上述基于AE的解决方案相同-管理大量的密钥。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接