用户安全策略

  • 一般用户安全

对所有的数据库用户而言,都要考虑如下的普通用户的安全问题:

  1. 口令的安全
  2. 权限管理
  • 口令的安全

如果用户鉴别是由数据库来管理的,那么,管理员就应该开发出一个口令安全策略,以维护数据库访问的安全。例如:要求数据库用户定期地改变它们的口令。当然,当其口令泄露时,就要强制用户修改口令,以便减少非授权的用户访问数据库。

为了更好地保证口令的安全性,对于客户/服务器和服务器/服务器连接而言,神通数据库使用加密后的口令。无论什么时候,尝试使用口令来连接到一个服务器,神通数据库把口令发送给服务器之前都会对之进行加密。如果连接失败了并且启用了审计,就会在审计日志中记录该失败。

  • 权限管理

系统管理员应该考虑涉及所有类型用户的权限管理问题。例如:在一个有许多用户名的数据库中,使用角色(可以授予用户或其它角色的、相关权限的命名的集合)来管理用户可用的权限是非常有益的。否则,如果数据库只要少数用户名,就将权限明确地赋予用户,避免使用角色,反而更容易。

管理具有很多用户、应用或对象的数据库的安全管理员,应该利用角色提供的益处。角色在很大程度上简化了在复杂环境中的权限管理任务。

  • 管理员安全

管理员应该有一个除了数据库管理员的安全的策略。例如:当数据库很大并且有几种类型的数据库管理员时,就应该将相关的管理权限划分成几个管理角色。然后将这些管理角色授予适当的管理员用户。相反,当数据库很小而且只有几个管理员时,只创建一个管理员角色并把这个管理角色授予所有的管理员,可能会更方便一些。

创建数据库之后,应立即改变管理员用户的口令,以免未授权的用户通过该账号访问数据库。如果已经安装了可以创建其它管理用户名的选项,则被创建的用户账号最初是被锁定的,要想将这些账号解锁,可以使用ALTER USER语句。也可以使用ALTER USER语句来改变与这些账号相关联的口令。

  • 应用开发者安全

管理员必须为使用数据库的应用开发者定义一个特殊的安全策略。安全管理员应该给应用开发者授予创建所需对象的权限。或者只将创建对象的权限授予数据库管理员,然后他再从开发者那里接受创建对象的请求。

数据库开发者是唯一需要特殊的权限组合,以便完成他们的工作的数据库用户。不同于终端用户,开发者需要系统权限,例如CREATE TABLE,CREATE PROCEDURE等等。但是,应该只将特殊的系统权限授予开发者,以限制他们在数据库中的总体权限。

在另一些情况下,应用开发仅限于测试数据库,而不允许针对产品数据库。这种限制确保了应用开发者不与终端用户竞争数据库资源,而且这也不会对产品数据库带来有害的影响。当一个应用已经全部开发和测试完成之后,就允许它访问产品数据库并让合适的产品数据库的终端用户使用。

数据库管理员通过定义如下选项,来决定将哪些权限授予应用开发者:

自由开发 允许应用开发者创建新的模式对象,包括表、索引、过程、包等等。该选项允许应用开发者开发应用,而不依赖于其它对象。

受控开发 不允许应用开发者创建新的模式对象。所有所需的表、索引、过程等等是由应用开发者申请,再由数据库管理员创建。该选项允许数据库管理员完全地控制数据库空间的使用,已经访问数据库中的信息的途径。

尽管模型数据库系统只使用其中之一,但其它系统可能把他们混合在一起。例如:允许应用开发者创建新的存储过程和包,但不允许创建表和索引。关于这个问题,系统管理员应基于如下方面来做决定:

希望对数据库的使用空间所进行的控制。

希望对模式对象的访问途径所进行的控制。

用于开发应用的数据库——如果一个测试数据库正被用于应用开发,则自由的开发策略可能更好一些。

为了管理一般应用开发者所需的权限,系统管理员可以创建角色。例如:一个名字为APPLICATION_DEVELOPER的一般角色,可以包括CREATE TABLE,CREATE VIEW和CREATE PROCEDURE系统权限。当为应用开发者定义角色时,应考虑如下方面:

a)通常将CREATE系统权限授予应用开发者,以便他们可以创建自己的对象。

b)很少将对象权限授予应用开发者所使用的角色。这是因为通过角色授予对象权限,常常会限制他们在创建其它对象(主要时视图和存储过程)时的可用性。允许应用开发者为了开发的目的去创建他们自己的对象时十分实用的。

当授予应用开发者权限,使之作为开发过程的一部分而创建对象时,系统管理员必须维护一些界限,即每个应用开发者能使用什么样的、多大的数据库空间。例如:应该特别为每个应用开发者设置或限制如下的界限:

开发者能创建表和索引的表空间;

开发者可以访问的每个表空间的限额。

可以通过更改开发者的安全域来设置上述两种界限。

  • 应用管理员安全

在具有许多数据库应用的大型书刊系统中,需要考虑分配应用管理员。一个应用管理员负责下面几种类型的任务:

为应用创建角色和管理每个应用角色的权限;

创建和管理数据库应用所使用的对象;

如果必要的话,维护和更新应用代码和神通数据库的存储过程。

通常,应用管理员也是设计应用的应用开发者。但是,应用管理员也可能是熟悉数据库操作的任何人。