我们希望仔细构建我们即将推出的数据安全SaaS应用程序。 Much has been written here and elsewhere关于这个主题,所有这些都是很好的思考。但是,没有找到一个专门处理我们场景的问题,或者确实提供了明确的答案,所以请耐心等待。
SELECT *
。持有并提供用于即时数据解密的解密密钥的用户还有助于确保没有恶意客户端能够逃离其沙箱并损害其他客户端。数据。Azure Table Storage提供Transparent Data Encryption,但委托对有权访问Azure门户的所有人访问加密密钥。因此,只有3级。
我们遇到的MongoDB Encrypted Storage Engine听起来就像我们想要的那样:静态加密数据,解密数据只驻留在内存中,密钥可以用KMIP进行用户管理 - 合规的第三方。但是,密钥是每个mongod进程,并且每个用户需要一个新的mongod实例。不理想,只有真正的3级。
我们考虑的另一个解决方案类似于mongoose-encryption(大致相当于SQL Server中的列加密),其中敏感集合具有部分或全部列/解密。听起来很有希望,但我们的直觉表明,在数据库引擎级别而不是DAL插件中使用此功能会更好。而且,它只是'提供列级加密;我们更喜欢加密,因为它看不到集合驻留在数据库中的内容以及它们有多少行。
更极端的解决方案是让客户端直接连接到某个文档存储,然后对自己进行身份验证。我们的SaaS只保留基本订阅和可能的架构信息,并提供SPA应用程序代码。这需要服务器端中间...但是服务器端不会发生数据验证,这是不理想的。
(为了简洁起见,我跳过了整个密钥管理后勤:用户应该如何让应用程序临时访问第三方持有的解密密钥,如何处理多个请求的解密等等。我意识到这是一种蠕虫本身。 另外,我没有提到数据安全的所有其他方面,即人员和流程。 "加密不是神奇的小精灵粉尘,你可以洒在系统上,使其安全"但它确实有所帮助。)
花了两天谷歌搜索并向许多主要的DBaaS寻求帮助我转向了SO。 哪些编程方法和/或具体解决方案(有利有弊)可以提供这种SaaS盲目安全性? 不的任何数据库引擎或提供商都假设应用程序和任何数据库管理员应该不受限制地访问客户数据?
编辑:还遇到ZeroDB和Nucypher,它们都提供端到端加密和代理重新加密。从一开始,他们似乎符合这个要求......但是在网上对他们的了解很少。任何人都有第一手的经验,要么分享?
答案 0 :(得分:0)
IronCore Labs非常适合此用例。 (全面披露-我是联合创始人兼CTO)。
我们是一个隐私平台,可帮助开发人员在其应用程序中添加加密支持的访问控制和端到端加密。我们使用代理重新加密来管理组并控制对已加密到这些组的数据的访问。可以在不添加加密数据的情况下将成员添加或删除组。
这是端到端加密,因此,作为SaaS提供者,如果您不需要访问租户的数据,则可以向他们保证不能解密。该服务旨在允许每个租户进行组管理,因此您可以保证,即使可能偶然允许跨租户访问数据的应用程序错误也不会泄漏未加密的数据。它还允许您加密数据,然后将其存储在您选择的数据存储中。显然,存在一些限制-尤其是索引编制和搜索。
我们有一个由ACM发布的paper,其中描述了用例并提供了有关代理重新加密算法的详细信息。