【问题标题】:Encrypting data in SQL Server Azure database with separate key for each user's data使用每个用户数据的单独密钥加密 SQL Server Azure 数据库中的数据
【发布时间】:2016-12-08 13:55:41
【问题描述】:

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

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

使用这么多单独的数据库是不可行的,因为会有很多客户,每个客户的信息很少。

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

所以我真正想要实现的是用不同的密钥加密数据库中每个客户端的数据,这样您就必须从每个客户端(从它们的“物理”位置)获取密钥才能解密您可能设法从该特定客户的数据库中提取的任何数据,这几乎是任何人都无法做到的。

我的意思清楚了吗?

你们对我如何解决这个问题有什么建议,或者知道任何第三方解决方案可以实现这个功能吗?还有什么建议吗?

【问题讨论】:

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


    【解决方案1】:

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

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

    AFAIK,没有本机 SQL Server 功能来加密属于具有不同密钥的租户的每组行 - 但可能有一些我还没有看到的优雅解决方案;当然,你可以在应用端这样做,并将其存储在 SQL 中,不会有任何问题;诀窍与上面基于 AE 的解决方案相同——管理大量密钥。

    【讨论】:

      猜你喜欢
      • 2012-05-05
      • 2011-07-18
      • 1970-01-01
      • 2017-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-27
      • 1970-01-01
      相关资源
      最近更新 更多