为了完整起见,添加一些答案(两年后):
我们应该为所有租户的所有敏感数据使用单个加密密钥吗?还是每个租户都应该有一个单独的密钥?
每个租户都应该有一个单独的密钥。不确定Azure如何处理,但AWS有KMS来处理这种情况。
如果我们选择单独的密钥(在注册时随机生成,因此甚至我们也不知道密钥),那么谁以及如何存储和保护租户加密密钥?我们是否应该将密钥给予租户,然后要求他的员工在通过Web浏览器登录时除了每个员工的登录名和密码外还提供密钥?
使用KMS(或其他云平台上类似的解决方案,例如Square的keywhiz自制方案)。您无需向租户提供密钥。您关心的是 - 如果用户使用其密码(或SSO)进行了身份验证,则根据其权限,他们可以访问某些资源。
考虑到我们可能以后需要分片或“弹性”数据库扩展(如某些PaaS提供商所称),并且我们可能从Azure和Microsoft SQL Server转移到其他东西,哪种方法最有效?
您需要一个tenantId
,它将有助于数据隔离。现在,与tenantId相关联的实际数据可以根据存储在KMS中的密钥进行加密。