3个ISV提的关于SaaS架构的问题
1. 采用SaaS模式,成千上万企业数据集中,数据库构架模式怎么选择,每个企业一个数据库还是共用数据库?
An:企业的数据库选择要考虑以下因素:· 您预计用户数据平均占用多大的存储空间?如果您预计部分用户或全部用户会存储大量数据,那么独立方法会更适用用您的数据存储。如果数据存储需求本身就需要独立数据库模型,那么一开始就采用独立数据库方案来设计应用,而不是以后再进行移植。
· 您预计需要同时支持的平均Tenant数有多少?同时支持的最终用户越多,就越应当采用隔离式方案,这样才有助于满足最终用户的要求。
· 您预计要为多少潜在用户提供服务?您可能很难准确地估计潜在的使用量,不过大致应当有个数量级范围,如应用是为数百用户提供服务,还是数千、数万、乃至更多?您预计接受服务的用户数量越多,您就会越倾向于考虑共享方案
· 对于数据安全:如果最终用户同意采用共享数据库的方案则可以考虑Share Database 或者Share Schema的模式,但如果最终用户不同意share Database 甚至Share Schema的模式,则必须选择独立数据库模式
· 但是独立数据存储对于软硬件的开销都比较大,并且可能不能完全发挥单个数据库的效能,但设计相对简单。
2. 企业数据集中,不可预见灾难数据丢失的风险很大,怎么更好的保证数据安全?
An: 是否预计要提供针对每个用户的增值服务,如针对特定用户的备份和恢复功能,隔离式方案更适合提供此类服务。
确保 SaaS 应用的安全性要求我们查看应用不同层次的问题,安全模式依靠三种基本模式在正确的位置实现安全性:
· 过滤:在用户和数据源之间采用功能像筛子一样的中间层 (intermediary layer),以使用户感到自己获取的数据就是数据库中唯一的数据
· 权限:采用访问控制列表 (ACL) 来决定谁能访问应用中的数据,以及能对数据进行哪些操作
· 加密:对每个用户的重要数据进行加密,以使未授权方无法对其进行访问,即便获得了这些数据,也派不上用场
3. 由于企业数据敏感,要求有很高的账号安全,希望能提供更安全的认证模式?
An: 保护用户数据的一种方法是在数据库中进行数据加密,这样即便数据落入他人之手,也能确保其安全性。加密方法分为对称式和非对称式。就对称式加密而言,我们要生成一个可进行数据加密和解密的密钥。采用对称密钥加密的数据可用该密钥解密。就非对称式(也称为公钥加密)加密而言,我们采用两个密钥,分别是公钥和私钥。用给定公钥加密的数据只能用相应的私钥解密,反之亦然。通常来说,应向任一以及与密钥拥有方通信的所有相关方发布公钥,但需要对私钥严加保密。公钥加密比对称加密的计算强度要求要高得多,对于所有存储数据都加密的 SaaS 应用而言,要是所有数据都用公钥加密的话,那么就最终的处理开销而言这实际上是不可能的。更好的办法是采用密钥封装 (key wrapping) 系统,以将两种系统的优势相结合。SaaS 应用越趋于 “共享”方案,加密的重要性就越高,对于牵涉高价值数据或重视隐私的情况来说,或当多个用户共享同一组数据库表集时,加密尤其重要。
Best Regards!
浙公网安备 33010602011771号