数据仓库 - 安全

  • 简述

    数据仓库的目标是使用户可以轻松访问大量数据,从而允许用户提取有关整个业务的信息。但我们知道,可能会对数据施加一些安全限制,这可能会成为访问信息的障碍。如果分析师对数据的看法有限,那么就不可能捕捉到业务趋势的全貌。
    来自每个分析师的数据可以被汇总并传递给管理层,在那里可以汇总不同的汇总。由于摘要的聚合不可能与整体的聚合相同,所以除非有人对数据进行整体分析,否则很可能会遗漏数据中的一些信息趋势。
  • 安全要求

    添加安全功能会影响数据仓库的性能,因此尽早确定安全要求很重要。数据仓库上线后很难再添加安全特性。
    在数据仓库的设计阶段,我们应该牢记以后可能添加哪些数据源以及添加这些数据源会产生什么影响。我们应该在设计阶段考虑以下可能性。
    • 新数据源是否需要实施新的安全和/或审计限制?
    • 添加的新用户是否限制访问已经普遍可用的数据?
    当未来的用户和数据源不为人所知时,就会出现这种情况。在这种情况下,我们需要使用业务知识和数据仓库的目标来了解可能的需求。
    以下活动受到安全措施的影响 -
    • 用户访问
    • 数据加载
    • 数据移动
    • 查询生成
  • 用户访问

    我们需要首先对数据进行分类,然后根据用户可以访问的数据对用户进行分类。换句话说,用户根据他们可以访问的数据进行分类。
    Data Classification
    以下两种方法可用于对数据进行分类 -
    • 数据可以根据其敏感性进行分类。高度敏感的数据被归类为高度受限,不太敏感的数据被归类为受限较少。
    • 数据也可以根据工作职能进行分类。此限制仅允许特定用户查看特定数据。这里我们限制用户只能查看他们感兴趣和负责的那部分数据。
    第二种方法存在一些问题。为了理解,让我们举个例子。假设您正在为一家银行构建数据仓库。考虑存储在数据仓库中的数据是所有账户的交易数据。这里的问题是,谁可以看到交易数据。解决方案在于根据功能对数据进行分类。
    用户分类
    以下方法可用于对用户进行分类 -
    • 用户可以按照组织中用户的层级进行分类,即用户可以按部门、部门、组等进行分类。
    • 用户也可以根据他们的角色进行分类,人们根据他们的角色跨部门分组。
    基于部门的分类
    让我们举一个数据仓库的例子,其中的用户来自销售和市场营销部门。我们可以通过自上而下的公司视图获得安全性,访问集中在不同的部门。但是对不同级别的用户可能会有一些限制。这种结构如下图所示。
    用户访问层次结构
    但是如果每个部门访问不同的数据,那么我们应该为每个部门分别设计安全访问。这可以通过部门数据集市来实现。由于这些数据集市与数据仓库是分开的,我们可以对每个数据集市实施单独的安全限制。这种方法如下图所示。
    使用数据集市强制限制对数据的访问
    基于角色的分类
    如果数据通常可供所有部门使用,那么遵循角色访问层次结构是很有用的。换句话说,如果数据通常被所有部门访问,则根据用户的角色应用安全限制。角色访问层次结构如下图所示。
    角色访问层次结构

    审计要求

    审计是安全的一个子集,是一项代价高昂的活动。审计可能会导致系统的大量开销。为了及时完成审计,我们需要更多的硬件,因此,建议尽可能关闭审计。审计要求可分为以下几类 -
    • 连接
    • 断开连接
    • 资料存取
    • 数据变更
    Note− 对于上述每个类别,有必要审核成功、失败或两者。从安全的角度来看,失败的审计是非常重要的。失败审计很重要,因为它们可以突出未授权或欺诈性访问。

    网络要求

    网络安全与其他证券一样重要。我们不能忽视网络安全需求。我们需要考虑以下问题 -
    • 是否有必要在将数据传输到数据仓库之前对其进行加密?
    • 数据可以采用的网络路由是否有限制?
    这些限制需要仔细考虑。以下是要记住的要点 -
    • 加密和解密的过程会增加开销。这将需要更多的处理能力和处理时间。
    • 如果系统已经是加载系统,加密的成本可能会很高,因为加密由源系统承担。

    数据移动

    移动数据时存在潜在的安全隐患。假设我们需要将一些受限制的数据作为要加载的平面文件进行传输。当数据加载到数据仓库时,会出现以下问题 -
    • 平面文件存储在哪里?
    • 谁有权访问该磁盘空间?
    如果我们谈论这些平面文件的备份,则会提出以下问题 -
    • 您备份加密或解密版本吗?
    • 这些备份是否需要在单独存储的特殊磁带上进行?
    • 谁有权访问这些磁带?
    还需要考虑一些其他形式的数据移动,如查询结果集。创建临时表时提出的问题如下 -
    • 那张临时桌子放在哪里?
    • 你如何使这样的表可见?
    我们应该避免意外违反安全限制。如果有权访问受限数据的用户可以生成可访问的临时表,则数据可以对非授权用户可见。我们可以通过为访问受限数据的用户提供一个单独的临时区域来解决这个问题。
  • 文档

    审核和安全要求需要适当记录。这将被视为理由的一部分。本文档可以包含从以下位置收集的所有信息 -
    • 数据分类
    • 用户分类
    • 网络要求
    • 数据移动和存储要求
    • 所有可审核的操作
  • 安全对设计的影响

    安全性影响应用程序代码和开发时间尺度。安全影响以下领域 -
    • 应用开发
    • 数据库设计
    • 测试

    应用开发

    安全性影响着整个应用程序的开发,也影响着数据仓库重要组件的设计,如负载管理器、仓库管理器和查询管理器。负载管理器可能需要检查代码来过滤记录并将它们放置在不同的位置。还可能需要更多的转换规则来隐藏某些数据。也可能需要额外的元数据来处理任何额外的对象。
    为了创建和维护额外的视图,仓库经理可能需要额外的代码来加强安全性。可能必须将额外的检查编码到数据仓库中,以防止它被愚弄,将数据移动到数据不应该可用的位置。查询管理器需要更改来处理任何访问限制。查询管理器需要了解所有额外的视图和聚合。

    数据库设计

    数据库布局也受到影响,因为当实施安全措施时,视图和表的数量会增加。添加安全性会增加数据库的大小,从而增加数据库设计和管理的复杂性。它还会增加备份管理和恢复计划的复杂性。

    测试

    测试数据仓库是一个复杂而漫长的过程。为数据仓库增加安全性也会影响测试时间的复杂性。它通过以下两种方式影响测试 -
    • 这将增加集成和系统测试所需的时间。
    • 有待测试的附加功能,这将增加测试套件的大小。