组件关系

Database Vault 组件之间的关系如上图所示。
根据箭头的方向,我们可以说给定的组件类型使用了另一种组件类型。
领域、命令规则和安全应用程序角色使用规则集来定义它们的行为。
因素使用规则集,规则集可以在其定义中引用因素。
因素使用身份,身份可以引用其他因素。
我们可以简单地在与命令规则关联的规则集中引用 SYS_CONTEXT 函数的 USERENV 变量,而不是创建“因素”或者“身份”。

在图中,顶部的三个组件是实际导致实施安全的组件。
幻灯片底部的两个组件支持强制执行。
也就是说,我们可以创建具有身份的规则集和因素,但在我们创建引用它们的领域、命令规则或者安全应用程序角色之前,数据库中的数据访问不会发生任何变化。

什么是Realm?

Realm是必须为给定应用程序保护的数据库模式和角色的功能分组。
将Realm视为数据库对象的保护区域。
Realm包含诸如表、角色和包之类的对象。

Realm还可以将授权授予作为参与者或者所有者的用户或者角色。
realm保护其中的对象免受行使特权的用户的影响,例如 SELECT ANY TABLE 和 SYSDBA。
因此,必须将任何此类特权用户定义为realm参与者(或者具有授予他或者她的realm参与角色)才能访问受保护对象。

如果用户或者角色已被授予访问受Realm保护的对象的直接对象权限,则该Realm无效。
这些具有直接对象权限的用户或者角色可以以与realm存在之前相同的方式访问对象。

数据库保管库:效果

  • 仅配置 Database Vault 选项不会以任何方式影响数据库的功能。
  • 无需更改应用程序,所有查询的工作方式与安装前相同。即使配置了 Database Vault 组件,也无需修改应用程序。 Database Vault 无需更改应用程序或者 SQL 提交到数据库的方式即可提供另外的安全性。
  • 但是,如果新的安全配置是为了防止应用程序访问数据,那么该应用程序将受到相应的影响。
  • 即使创建了更复杂的安全配置,性能也不会受到影响。

Oracle Database Vault 概念和概述

Oracle Database Vault 使组织能够透明地提高安全性,而无需更改其应用程序代码。
Oracle Database Vault 通过限制高特权用户对应用程序数据的访问来提供实时预防控制。
Oracle Database Vault 可帮助组织解决法规遵从性、工业 Spy活动和内部威胁,同时通过整合和/或者离岸外包,以经济高效的方式灵活地部署 IT 系统。

安装 Oracle Database Vault 后,我们可以在几分钟内创建一个领域,该领域包含构成业务应用程序的所有数据库对象,从而保护业务数据。
一旦应用程序的数据库对象受到保护,我们就可以授权选定的用户访问它。
我们可以使用 Database Vault 管理 Web 界面 (DVA) 或者 Database Vault 应用程序编程接口 (API) 执行此操作。

Oracle Database Vault 提供职责分离控制并保护数据库免受未经授权的更改。
如果 DBA 没有适当的用户管理角色,Oracle Database Vault 将阻止具有 CREATE USER 权限的 DBA 创建新用户。
此外,可以为所有 SQL 命令定义命令规则,以提供对命令执行的控制。

Oracle Database Vault Factors and Rules 可用于通过限制访问应用程序的人员、时间、地点和方式来显着加强应用程序安全性。
这些功能可以灵活且适应性强的方式用于强制执行授权要求,而无需更改现有应用程序。
诸如一天中的时间、数据库客户端在网络上的位置或者特定于企业的自定义因素等因素可以控制访问应用程序的能力。

因素和身份

身份是一个因素的值。
因素的身份可以根据会话、应用程序、用户甚至一天中的时间而变化。
信任级别使我们能够分配一个数值来指示允许的信任度量。
信任值为 1 表示某种信任。
较高的值表示较高的信任级别。
负值或者零表示不信任。
当身份中未定义从因子检索方法返回的因子身份时,Database Vault 会自动为该身份分配负信任级别。

例如,当用户通过办公室中的机器连接时,DOMAIN 因素标识设置为具有受信任级别的 INTRANET。
当同一个用户从家里连接时,DOMAIN 因素身份设置为具有不可信信任级别的 INTERNET。
在此示例中,DOMAIN 因子可用于确定允许用户访问哪些数据以及允许用户执行哪些命令。
我们可以将 Oracle Label Security (OLS) 标签分配给因子身份。
标签充当数据库表行的标识符以将权限分配给该行。
一个因素可以具有由多个因素的组合分配的身份。
这些因素的同一性又可以通过其他因素来解决。
使用因子来解析身份称为身份映射。

什么是规则集?

规则集是一起评估以产生结果的规则的集合。
每个规则都定义为一个 WHERE 子句表达式。
规则集指定规则的结果是要进行 AND 运算还是 OR 运算。
在评估每个规则后,将结果与或者一起进行 AND 或者 OR 运算,最终结果是单个值 TRUE 或者 FALSE。
Database Vault 提供了一个规则引擎来处理规则集。

我们可以使用规则集来提供双密钥安全性,因此必须执行另一个单独的操作才能授予所请求的访问权限。
一个例子是要求特定用户从特定客户端机器登录,以便另一个用户可以访问某些数据或者包。

Oracle Database Vault
on it road .com

什么是因子?

因素是 Database Vault 可以识别的命名变量或者属性,例如用户位置、数据库 IP 地址或者会话用户。

每个因素都有一个分配给它的值。
该值称为身份。

因素以逻辑方式与规则和规则集中的其他因素相结合,为访问控制策略提供基础。
我们可以为活动使用因素,例如授权数据库帐户连接到数据库或者创建过滤逻辑以限制数据的可见性和可管理性。

我们可以通过组合因素来实施多因素授权。
当我们调用给客户代表询问姓名、账单地址和社会安全号码的最后四位数字时,也会使用相同的概念。
这些是促成授权过程的三个因素。

什么是命令规则?

命令规则定义了在对象上执行 SQL 命令时必须遵循的规则。
这些命令包括大多数数据定义语言 (DDL) 命令,以及 SELECT、UPDATE 和 DELETE。
我们可以实施命令规则来限制对特定对象或者对象组执行特定命令。
该限制基于规则集对 TRUE 的评估。

数据库保险库 API

Database Vault 提供了一个模式 DVSYS ,它存储为 Database Vault 处理 Oracle 数据所需的数据库对象。
此架构包含 Database Vault 使用的角色、视图、帐户、函数和其他数据库对象。
DVF 架构包含公共函数以检索(在运行时)在 Database Vault 访问控制配置中设置的因子值。

Database Vault 提供了一组 PL/SQL 接口,使安全管理员或者应用程序开发人员能够根据需要配置访问控制策略。
PL/SQL 过程和函数允许通用数据库帐户在给定数据库会话的上下文中在访问控制策略的边界内操作。

提供的软件包包括:

  • DVF 拥有的函数,用于返回有关因子的信息
  • DVSYS.DBMS_MACADM:创建和管理 Database Vault 组件的过程
  • DVSYS.DBMS_MACSEC_ROLES:激活安全应用程序角色的过程
  • DVSYS.DBMS_MACUTL:用于查询数据库环境的各种安全相关特征的实用程序 DVSYS CONFIGURE DV:用于配置初始两个 Oracle 数据库用户的程序
  • DVSYS.CONFIGURE_DV :配置初始两个 Oracle 数据库用户帐户的过程,它们被授予 DV_OWNER 和 DV_ACCTMGR 角色。

评估顺序

当会话访问 Database Vault 中的数据时,它可能需要也可能不需要通过涉及 Database Vault 组件的安全检查。
如幻灯片所示,它可能需要也可能不需要评估领域或者命令规则的任何组合。
如果涉及领域,则可能会或者可能不会定义进一步修改访问要求的规则集。
安全应用程序角色和命令规则都必须为其定义一个规则集。

该图说明了动态数据访问路径。
在执行命令之前,当请求启用角色时,已经完成了所有安全应用程序角色检查以及相关的规则集。
然后在提交语句时,检查所有对象以查看它们是否在域中。
接下来,检查命令规则以确保允许发出的特定命令。
可能在执行单个语句期间,每种类型的组件中至少有一个组件需要求值。
也可能只评估单个领域或者单个命令规则。
这些的任何排列都是可能的。

访问控制组件

Database Vault 的以下组件提供高度可配置的访问控制:

  • 领域:围绕模式、整个模式、多个模式或者数据库角色中的一组对象定义的边界。必须满足特定条件才能获得访问权限。
  • 规则集:为授予访问权限而评估的规则集合。
  • 命令规则:一组特定条件,对于要在给定对象或者对象集上执行的给定 SQL 命令,这些条件必须有效。这提供了对可以对某些对象执行的操作以及由谁执行的非常精细的控制。
  • 安全应用程序角色:只有在传递规则集的条件下才能被会话启用的角色。
  • 因素:在任何给定时间用户或者系统的属性。因素会影响授予访问权限的决策过程,并且可以同时考虑多个因素的组合。这是多因素授权。身份是因素可能采用的特定值。在给定因子的可能值集合中,某些或者全部可能已被分配一个名称,即身份。

什么是安全应用程序角色?

创建安全应用程序角色以要求在利用授予角色的权限或者特权之前满足特定条件。
条件表示为单个规则集。
安全应用程序角色完全由安全应用程序角色名称和关联的规则集组成。
只有当规则集评估为 TRUE 时,才能行使授予此角色的权限。

Database Vault 中的安全应用程序角色与 Oracle 数据库提供的角色不同。
安全应用程序角色仍由安全包中的过程启用,但该包由 Database Vault 提供。
安全管理员无需编写程序,只需使用规则集来确定是否应启用应用程序角色。

Database Vault 示例:限制对表内容的访问

此示例说明如何防止特权用户 (DBA) 访问敏感的应用程序数据。
DBA 用户通常被授予 DBA 角色。
这意味着他们拥有 SELECT ANY TABLE 系统特权。
在此示例中,DBA 被阻止访问表,保留所有权利。
即使 DBA 继续保留 SELECT ANY TABLE 特权。

  1. 具有 DBA 角色的用户能够从 OE.ORDERS 表中选择数据。
SQL> SELECT order_total FROM oe.orders 
2  WHERE customer_id = 101;
ORDER_TOTAL 
----------
78279.6
  1. 安全管理器使用 Database Vault 领域保护 OE.ORDERS 表。

  2. DBA 无法再访问该表。

SQL> SELECT order_total FROM oe.orders 
2  WHERE customer_id = 101; 
SELECT order_total FROM oe.orders
 * 
ERROR at line 1: 
ORA-01031: insufficient privileges
日期:2020-09-17 00:11:29 来源:oir作者:oir