数据仓库 - 安全
数据仓库的目标是使用户能够轻松访问大量数据,从而允许用户提取有关整个业务的信息。但我们知道,数据上可能存在一些安全限制,这可能会成为访问信息的障碍。如果分析师对数据的看法有限,那么就不可能全面了解业务趋势。
来自每个分析师的数据可以被汇总并传递给管理层,在管理层中可以汇总不同的摘要。由于摘要的聚合不能与整体聚合相同,因此除非有人对数据进行整体分析,否则可能会错过数据中的某些信息趋势。
安全要求
添加安全功能会影响数据仓库的性能,因此尽早确定安全需求非常重要。数据仓库上线后,很难再添加安全功能。
在数据仓库的设计阶段,我们应该记住以后可能添加哪些数据源以及添加这些数据源会产生什么影响。我们在设计阶段应该考虑以下可能性。
新的数据源是否需要实施新的安全和/或审计限制?
添加的新用户是否对已经普遍可用的数据的访问受到限制?
当未来的用户和数据源不为人所知时,就会出现这种情况。在这种情况下,我们需要利用业务知识和数据仓库的目标来了解可能的需求。
以下活动受到安全措施的影响 -
- 用户访问
- 数据加载
- 数据移动
- 查询生成
用户访问
我们需要首先对数据进行分类,然后根据用户可以访问的数据对用户进行分类。换句话说,用户根据他们可以访问的数据进行分类。
数据分类
以下两种方法可用于对数据进行分类 -
数据可以根据其敏感性进行分类。高度敏感的数据被分类为高度限制的数据,不太敏感的数据被分类为限制较少的数据。
数据还可以根据工作职能进行分类。此限制仅允许特定用户查看特定数据。在这里,我们限制用户只能查看他们感兴趣和负责的那部分数据。
第二种方法存在一些问题。为了理解,让我们举个例子。假设您正在为一家银行构建数据仓库。考虑存储在数据仓库中的数据是所有帐户的交易数据。这里的问题是,谁可以看到交易数据。解决方案在于根据功能对数据进行分类。
用户分类
以下方法可用于对用户进行分类 -
可以按照组织中用户的层次结构对用户进行分类,即可以按照部门、部门、组等对用户进行分类。
用户还可以根据其角色进行分类,人员根据其角色跨部门分组。
按部门分类
让我们看一个数据仓库的示例,其中用户来自销售和营销部门。我们可以通过自上而下的公司视图来确保安全性,并以不同部门为中心进行访问。但不同级别的用户可能会受到一些限制。该结构如下图所示。
但如果每个部门访问的数据不同,那么我们应该为每个部门单独设计安全访问。这可以通过部门数据集市来实现。由于这些数据集市与数据仓库是分开的,因此我们可以对每个数据集市实施单独的安全限制。这种方法如下图所示。
按角色分类
如果数据通常可供所有部门使用,那么遵循角色访问层次结构会很有用。换句话说,如果数据通常由所有部门访问,则根据用户的角色应用安全限制。角色访问层次结构如下图所示。
审核要求
审计是安全的一个子集,是一项成本高昂的活动。审核可能会给系统带来沉重的开销。为了及时完成审核,我们需要更多的硬件,因此,建议尽可能关闭审核。审计要求可分类如下 -
- 连接
- 断线
- 数据存取
- 数据变更
注- 对于上述每个类别,有必要审核成功、失败或两者。从安全原因的角度来看,故障的审计非常重要。对失败的审核很重要,因为它们可以突出显示未经授权或欺诈性的访问。
网络要求
网络安全与其他证券一样重要。我们不能忽视网络安全的要求。我们需要考虑以下问题 -
数据传输到数据仓库之前是否需要加密?
数据可以采用的网络路由是否有限制?
这些限制需要仔细考虑。以下是要记住的要点 -
加密和解密的过程会增加开销。这将需要更多的处理能力和处理时间。
如果系统已经是加载系统,则加密成本可能会很高,因为加密由源系统承担。
数据移动
移动数据时存在潜在的安全隐患。假设我们需要将一些受限数据作为要加载的平面文件传输。当数据加载到数据仓库时,会出现以下问题 -
- 平面文件存储在哪里?
- 谁有权访问该磁盘空间?
如果我们谈论这些平面文件的备份,则会提出以下问题 -
- 您备份加密或解密版本吗?
- 这些备份是否需要制作到单独存储的特殊磁带上?
- 谁有权访问这些磁带?
还需要考虑一些其他形式的数据移动,例如查询结果集。创建临时表时提出的问题如下 -
- 那个临时桌子放在哪里?
- 如何使这样的表可见?
我们应该避免意外违反安全限制。如果有权访问受限数据的用户可以生成可访问的临时表,则非授权用户就可以看到数据。我们可以通过为有权访问受限数据的用户提供单独的临时区域来解决这个问题。
文档
审计和安全要求需要正确记录。这将被视为正当理由的一部分。该文件可以包含从以下位置收集的所有信息 -
- 数据分类
- 用户分类
- 网络要求
- 数据移动和存储要求
- 所有可审核的操作
安全对设计的影响
安全性影响应用程序代码和开发时间尺度。安全影响以下领域 -
- 应用开发
- 数据库设计
- 测试
应用开发
安全性影响整个应用程序的开发,也影响数据仓库重要组件(如负载管理器、仓库管理器和查询管理器)的设计。负载管理器可能需要检查代码来过滤记录并将它们放置在不同的位置。还可能需要更多转换规则来隐藏某些数据。此外,可能需要额外的元数据来处理任何额外的对象。
为了创建和维护额外的视图,仓库经理可能需要额外的代码来加强安全性。可能必须将额外的检查编码到数据仓库中,以防止它被欺骗而将数据移动到不可用的位置。查询管理器需要进行更改来处理任何访问限制。查询管理器需要了解所有额外的视图和聚合。
数据库设计
数据库布局也会受到影响,因为实施安全措施后,视图和表的数量会增加。添加安全性会增加数据库的大小,从而增加数据库设计和管理的复杂性。它还会增加备份管理和恢复计划的复杂性。
测试
测试数据仓库是一个复杂而漫长的过程。向数据仓库添加安全性也会影响测试时间复杂性。它通过以下两种方式影响测试 -
它将增加集成和系统测试所需的时间。
有待测试的附加功能将增加测试套件的大小。