科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道数据库安全:DB2数据库安全性全面介绍

数据库安全:DB2数据库安全性全面介绍

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

我将带您浏览 Windows、Unix 和 OS/2 版本的 DB2 UDB v.7.1 中的安全特性,并描述一些可以帮助您最大化安全性的内部控制……

作者:佚名 来源:论坛整理 2007年11月17日

关键字: DB2

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共3页)

DB2 安全性机制阻止 TESTING 用户标识,因为它知道这个用户没有得到执行这样的命令的授权。在这种情况下,TESTING 显然不是 SYSADM,因为该权限级别是执行如图 2 中所示的命令所需要的。

  在 DB2 中,您通过分别成为 SYSADM_GROUP、SYSCTRL_GROUP 和 SYSMAINT_GROUP 数据库管理器配置参数指定的组的成员获得 SYSADM、SYSCTRL 和 SYSMAINT 权限。

  如想获得所有授予属于 DB2 预定义授权组的用户的授权特权的完整列表,请参考 DB2 Administration Guide。

  特权。特权(privilege)定义对授权名的单一许可,从而使用户能够修改或访问数据库资源。特权存储于数据库目录中。虽然权限组预定义了一组可以隐性授予组成员的特权,但是特权是单独的许可。

  


 图 3:DB2 中可用的样本特权

  DB2 可以利用由操作系统安全功能维护的用户组。组允许数据库管理员给组指派特权,这样帮助降低数据库系统持所有权的总成本。

  例如,如果您要把创建表(CREATETAB)和连接数据库(CONNECT)的特权为 50 个用户开放,那么创建组并给它添加特权要比显式给每个单独的用户授予每种特权更容易。每当您需要添加或撤消特权时,您只要对组操作一次,对组的所有成员都会生效。

  通常,动态 SQL 和非数据库对象授权(例如,实例级命令和实用程序)适用于组成员关系。动态 SQL 是非预先安排或即时生成的 SQL。静态 SQL 不适用于组成员关系(除 PUBLIC 组之外)。静态 SQL 在执行之前就为 DB2 所知,而且 DB2 优化器已经生成了 SQL 访问计划并把它作为数据包存储在目录中。

  特定用户标识、所有用户自动归属的特定组(PUBLIC)或多个组都可以被授予(或被撤消)每种特权。图 3 是 DB2 提供的一些不同特权的示例。(注意:Table(表)和 View(视图)组中,ALTER、INDEX、REFERENCES 和 UPDATE Column 特权只适用于表。)如想要了解有关这些特权的深入讨论,请参阅 DB2 Administration Guide。

  对所有种类的操作和对象的访问都由特权控制。您必须先拥有做某事的特权,DB2 才会允许您做这件事。

  访问控制方法

  现在您懂得了 DB2 如何管理验证和授权,让我们看一下 DB2 为了更强大的访问控制而综合这些选项所提供的框架。访问控制方法用于创建信息内容的子集,从而用户可以只查看或存取与其需要相关的数据。您可以在 DB2 中使用许多不同的访问控制方法。访问控制是为您在数据库中所进行的一切操作而存在的。

  请考虑一下表 1 中视图的行。您也许希望公司里的所有用户都有权访问 L_Name、F_Name、Phone、email 和 Title 这些列。但是,为了尽可能降低垃圾邮件的风险,您也许希望通过 Web 访问公司目录的用户只能看到 L_Name、F_Name 和 Phone 这几列。最后,人力资源部的雇员应该有权访问这张表中的所有行。DB2 访问控制提供对于在 DB2 中保护您的数据和提供对数据的行级别访问非常重要的框架。

  使用数据包的访问控制。数据包是与一条或多条 SQL 语句有关的信息集合,这是 DB2 内 SQL 的基本访问控制点。数据包中包括诸如优化器生成的访问计划和授权模型等信息。向数据库引擎发出的任何语句都会和特定数据包有关。

  在创建数据包的时候,它就被绑定到具有特定特权的数据库。创建数据包的人一定有执行数据包中所有静态 SQL 语句所需要的特权。运行数据包的用户也一定有这个数据包的 EXECUTE 特权,但是他们不一定有执行数据包中包含的所有静态语句的一对一的特权。例如,没有 CREATETAB 特权,用户就不能在数据库中创建表。但是,有特权运行包含静态 CREATE TABLE 语句的数据包的用户可以以这种方式创建表。数据包在控制用户对数据库对象的访问权方面起了关键作用。

  使用视图的访问控制。视图是另一种主要限制对数据的低级(也称为“行级”)存取的访问控制方法。通过使用视图,您就可以对 SQL 语句隐藏驻留在原始表中的敏感信息的行和列。您可以通过根据视图授予特权使用户可以存取信息。因为这些特权只适用于视图,不会影响基本表,所以用户的存取范围仅限于视图,而该视图是通过创建所需表中数据的子集生成的。WITH CHECK 选项甚至提供更多的安全性,因为它不会让特定的 SQL 语句改变用户在视图中没有特权读取的那些行。

  表 1. 视图中的一行

  L_Name F_Name Phone e-mail Title Salary Bonus Total Salary

  Godfrey Mike 2447337 mk@money.com Mgr $23,000 $122,000 $145,000

  使用触发器的访问控制。通过使用触发器,您就可以创建更复杂的安全机制,无论什么时候只要特定事件发生,安全机制就会被激活。表的 INSERT 语句就是一个示例事件,它可用于触发触发器。此外,触发器可以在特定事件之前或之后触发以提供更具活力的安全性审核。如果用户的语句没有通过触发器内的安全性审核,则从触发器主体内发出的错误将会防止表被修改。

  使用 USER 专用寄存器的访问控制。DB2 提供的专用寄存器名为 USER,其中包含用于在当前会话连接数据库的用户标识。您可以在视图中使用专用寄存器中存储的值来针对特定的用户定制视图。通过使用专用寄存器,您可以使基于表的视图因用户而异。您也可以把这一技术应用于触发器和 SQL 语句。

  审核功能

  DB2 的审核工具使您可以维持对发生在实例内的事件的审核跟踪。成功的数据存取尝试监视和后续分析可以使数据访问控制方面得到改进,并最终防止恶意或无意非授权存取数据。然后,就可以从这些记录下来的事件中提取出一份报告供分析。 DB2 Administration Guide 中详细介绍了审核。

  请信任数据库

  DB2 的许多功能和机制使您甚至可以把最安全和最隐私的数据托付给数据库引擎。当您的数据由 DB2 存储和管理的时候,您可以对您的企业将在可扩展、健壮而且安全的环境中运行充满自信。另外,如果您负责数据库安全,那就意味着在晚上您可以睡得更香。

  关于作者

  Paul Zikopoulos 是 DB2 Sales Support 小组的数据库专家。他有多篇有关 DB2 的文章在杂志上发表,并著有多本 DB2 方面的书籍。最近,Paul 同别人合著了 A DBA's Guide to Databases on Linux(Syngress Media 出版,2000 年)以及 DB2 for Dummies(IDG 图书公司出版,2000 年)等书。Paul 是一位 DB2 认证高级技术专家(DB2 Certified Advanced Technical Expert,DRDA 和 Cluster/EEE),同时还是 DB2 认证解决方案专家(DB2 Certified Solutions Expert,商业智能和数据库管理)。您可以通过 paulz_ibm@yahoo.com与他联系。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章