2016-12-08 47 views
2

我想创建一个基于Azure SQL数据库后端的服务。使用单独的密钥为每个用户的数据加密SQL Server Azure数据库中的数据

服务将是多租户,并会从多个包含高度敏感信息的“客户”(可能几十万),必须彼此严格分离,并严重固定以防止数据泄漏。 “按设计”

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

我已经研究了Azure提供的透明加密,但是这实质上是将整个数据库加密为一个整体,因此换言之,它不会防止客户端或其他人之间的泄漏;由于发展错误或敌对攻击,并且一个“客户”信息永远不会进入任何人的手中是非常关键的。

所以我真的想实现的,是在一个不同的密钥数据库中每个客户的数据进行加密,这样你就必须获得来自每个客户端密钥(从他们的“物理”的位置),以去隐藏您可能会从数据库中为特定客户端提取的任何数据,这对任何人来说实际上都是不可能的。

明确我的意思吗?

你们对我如何管理这个问题有任何建议,或知道任何允许此功能的第三方解决方案吗?任何其他建议?

回答

2

你正在寻找一个表中保护/“设计”隔离住户,为什么不签出Row Level Security。您可以将其配置为仅向特定租户提供适用的行。

这并不直接解决您关于使用每个租户的单独密钥加密数据的初始问题;如果你有一个单独的表为每个租户,那么你可以通过Always Encrypted做到这一点,但是这似乎有一些在密钥管理的复杂性,如果你想处理20万项。

据我所知,还没有一个本地的SQL Server功能给每个组行属于一个不同的密钥 - 租客,但有可能是我还没有看到一些优雅的解决方案进行加密;当然,你可以在应用程序端做到这一点,并将其存储在SQL中,不会有任何问题;诀窍将与上述基于AE的解决方案相同 - 管理大量密钥。