DB2系统目录视图是DB2数据库的重要组成部分,但是在安全上,DB2系统目录视图却存在着一些隐患,下面就详细为您介绍该问题。
在Oracle数据库中,也有跟DB2系统目录视图类似的设计。如将相关的数据库对象以及权限等信息等存储在数据字典中。但是对于Oracle数据库来说,对于这个数据字典相关的视图做了相关的限制。如在Oracle数据库中,将数据字典分为user、all、dba三类。一般用户只能够使用user或者all数据字典视图。
也就是说,只能够查询到自己拥有的对象或者自己拥有特定权限的对象信息。对于他人建立的对象,或者自己没有权查询的对象信息,一般用户是查询不到的。只有像具有数据库管理员等特权的用户才可以查询到全部数据库对象的信息。这在很大程度上保障了数据字典视图的安全性。
但是对于DB2数据库的DB2系统目录视图,在这方面做的就不是很到位。如默认情况下,在部署DB2数据库的时候,数据库会自动创建系统目录视图。而在创建这个DB2系统目录视图的时候,系统会将这个目录视图的select查询权限赋予给public组。将这个目录视图赋予给这个组,就以为这数据库系统中的用户都具有查询这个DB2系统目录视图的权限。
即使这个对象不是这个用户所创建的,或者用户没有这个对象的访问权限,用户也可以查询到这个对象的相关信息,如谁创建了这个对象,谁拥有这个对象的哪些权限的信息。当数据库中数据的保密级别或者商业价值不怎么高的时候,这么设计不怎么会产生安全问题。
但是,用户使用起来不方便。如数据库设计的比较复杂,有多个管理员同时维护数据库系统。此时每个数据库管理员之需要查询到自己所创建的或则具有访问权限的相关信息,而不需要全部的对象信息。显然凭现在系统目录视图的设计,不能够做到这一点。
但是如果数据库中的数据商业价值比较高,有很多人虎视眈眈的在打这些数据的注意,此时数据库系统对于系统目录视图的默认权限设计,可能就不怎么合适了。因为目录视图中存储的所有对象信息(包括授权信息)对于所有用户都是开放的。
这会为黑客或者其他不按好心的用户窃取相关的资料提供便利。所以对于安全要求高的企业,在部署DB2数据库的时候,有可能需要更改这些DB2系统目录视图的默认权限,以提高目录视图中信息的安全性。让只有相关的人员才能够看到目录视图中的数据库对象以及权限等相关信息。