DB2 UDB 系统命令,如 db2、db2ilist、db2start、db2stop、db2iupdt 等,都是操作系统可执行文件。因此,运行这些命令的安全机制以文件的操作系统权限为基础。这些文件的权限在 DB2 UDB 安装时设置。
DB2 UDB 用户和组帐户命名规则
在 DB2 UDB 中,用户和组帐户必须遵守表 1 和 2 中所述的命名规则。这些限制是在定义帐户的外部设施中起作用的限制之外增加的。
(1) Windows NT?、Windows 2000?、Windows XP? 和 Windows Server? 2003 现在实际上限制为 20 个字符。
(2) 如果不使用 Client 身份验证,对于连接到 Windows NT、Windows 2000、Windows XP 和 Windows Server 2003 的非 Windows 32 位客户机,在明确指定用户名和口令时支持使用超过 8 个字符的用户名。
(3) DB2 UDB 内部使用名为 PUBLIC 的伪组,可以为其授权或者收回特权。PUBLIC 不是外部安全设施中定义的真正的组。它是把特权授予通过身份验证的任何用户的一种方式。
(4) 还有其他一些特殊字符也能使用,这取决于操作系统和在哪里使用 DB2 UDB。但是为了避免不一致性和潜在的问题,在数据库中命名对象时不要使用其他特殊字符。
用默认用户 ID(如 db2admin)安装 DB2 UDB 并使用弱口令(或者根本没有)可能将系统置于风险中。很多计算机病毒、蠕虫和特洛伊木马的设计都利用了弱口令。比方说,很多这类程序都尝试使用常见口令如 “password”、“123456”、“111111”、“db2admin” 等获得对系统的访问。因此不要使用简单的口令很重要。
在验证用户时口令也很重要。比如,在 Linux 和 UNIX 操作系统上,未定义口令被作为 NULL 处理。没有定义口令的任何用户都被视作使用 NULL 口令。从操作系统的角度来看,这是一种匹配,用户经过验证后就能连接到数据库。
DB2 UDB 安装需要和创建的用户/组帐户
DB2 UDB 需要一个具有管理权的用户帐户来执行安装。该用户所需要的具体权限依赖于安装 DB2 UDB 的平台。默认情况下,DB2 UDB 在安装过程中要创建多个用户和组帐户。这些帐户用于 “拥有” 和启动在服务器上运行的各种 DB2 UDB 服务和进程。
这一节介绍在 Windows、Linux 和 UNIX 环境中安装 DB2 UDB 所需要的用户特权。还说明在 DB2 UDB 默认安装过程中创建的各种用户和组。
Microsoft Windows 操作系统上需要的用户和组帐户:
如果在 Windows 操作系统上安装 DB2 UDB,将需要下列用户帐户:
1、Installation 用户帐户。
2、DB2 Administration Server(DAS)用户帐户 。
3、DB2 UDB 实例所有者用户帐户。
Installation 用户帐户:
在运行 DB2 安装向导之前,需要定义一个安装用户帐户。该帐户可以是一个本地或域用户帐户。该帐户必须属于要进行安装的机器上的 Administrators 组。如果使用域帐户,安装帐户必须属于将要创建其他安装用户帐户的域的 Domain Administrators 组。也可使用内置的 LocalSystem 帐户进行 DB2 UDB EntERPrise Server Edition 之外的其他所有产品的安装。
可以在安装之前定义其他用户帐户,也可以让 DB2 安装向导为您创建。所有用户帐户名必须遵守系统的命名规则和 DB2 UDB 命名规则。
DB2 Administration Server 用户帐户:
DB2 Administration Server(DAS)需要使用本地或域帐户。DAS 是一种特殊的服务,支持 GUI 工具并帮助完成管理任务。DAS 有一个分配的用户帐户,在 DB2 UDB 加载时用于启动该服务。在 DB2 安装向导中,其中有一个屏幕(如图 3 所示)提示选择用于启动 DAS 服务的用户帐户。
可以在安装 DB2 UDB 之前创建该用户帐户,然后在这里指定,也可以让 DB2 安装向导为您创建该帐户。默认情况下,向导将创建一个名为 db2admin 的新帐户(但是可以随意命名)。DAS 用户帐户也必须属于执行安装的机器上的 Administrators 组。如果让 DB2 安装向导创建新的域用户帐户,用于执行安装的用户帐户必须有创建域用户帐户的权限。
安装向导创建该帐户时自动授予下列用户权限:
1、作为操作系统的一部分。
2、调试程序。
3、创建 token 对象。
4、增加配额。
5、锁定内存页。
6、作为服务登录。
7、代替进程级的 token。
如果创建或指定了不同的帐户,一定要保证该帐户具有上述用户权限。为了保证正确设置了这些权限,打开 Windows 控制面板(Start > Settings > Control Panel)并双击 Administrative Tools 图标。双击 Local Security Policy 图标。对于上面列出的每种策略,保证该用户包含在授权的用户和组列表中。提供的口令不正确可能造成 DB2 UDB 启动过程中不能加载某些服务,有可能禁止执行特定的操作。
在安装过程中,还要告诉 DB2 安装向导使用同一个帐户(及指定给 DAS 的帐户)拥有和启动其他所有 DB2 UDB 服务。为此,一定要选中 “Use the same user name and password for the remaining DB2 UDB services(其他 DB2 UDB 服务使用同一用户名和口令)” 复选框(参见 图 3)。如果没有选中该复选框,向导就会提示选择拥有和启动创建的默认实例的用户帐户。其他所有 DB2 UDB 服务将使用内置的 Windows LocalSystem 帐户启动。
还要保证 DAS 用户帐户对环境中每个 DB2 UDB 系统具有 SYSADM 权限,这样在需要的时候可以启动或停止其他实例。默认情况下,在 Windows 环境中安装 DB2 UDB 后,属于 Administrators 组的任何用户都具有 SYSADM 权限。DAS 服务名称为 DB2DAS - DB2DAS00。
DB2 UDB 实例所有者用户帐户:
要拥有和启动 DB2 UDB 实例,需要一个本地或域帐户。可以在安装 DB2 UDB 之前创建 DB2 UDB 实例所有者用户帐户,也可以让 DB2 安装向导来创建。如果让 DB2 安装向导创建新的域用户帐户,执行安装使用的用户帐户必须具有创建域用户帐户的权限。该用户帐户也必须是执行安装的机器上 Administrators 组的成员。DB2 安装向导创建该帐户时自动授予下列用户权限:
作为操作系统的一部分: 调试程序、创建 token 对象、增加配额、锁定内存页、作为服务登录、代替进程级的 token。
如果创建或指定了不同的帐户,一定要赋予该帐户上述用户权限。为了保证正确设置了这些权限,打开 Windows 控制面板(Start > Settings > Control Panel)并双击 Administrative Tools 图标。双击 Local Security Policy 图标。对于上面列出的每种策略,保证该用户包含在授权的用户和组列表中。提供的口令不正确会造成 DB2 UDB 启动过程中无法加载服务,有可能禁止执行特定的动作。
在默认 Windows 安装中将自动创建一个名为 DB2 的实例。可以分别使用 db2icrt 和 db2idrop 工具程序创建其他实例或删除已有的实例。这些工具放在 DB2PATHsqllibbin 目录中,其中 DB2PATH 是安装 DB2 UDB 的位置。运行这些工具程序必须使用具有本地 Administrator 权限的用户帐户。如果创建实例时通过参数提供用户帐户和口令,那么将使用该帐户拥有和启动该服务。如果没有提供用户帐户和口令,则使用 LocalSystem 帐户。比如,将创建一个新实例 devinst,并赋予 LocalSystem 帐户拥有和启动该实例进程的权限。
修改帐户信息:
安装后可以修改与每个 DB2 UDB 服务关联的用户帐户。此外,从 DB2 UDB Version 8.2 开始,可以使用内置的 LocalSystem Account(LSA)帐户启动 DB2 UDB 服务。在使用严格口令策略的系统上,使用 LSA 可能比较有利,因为 LSA 没有关联的口令。比如在有些环境中,要求用户每两个月换一次口令,否则其帐户就会被暂时锁住。这一策略要求修改指定用户帐户的口令来启动 DB2 UDB 服务。如果配置成启动某些服务的用户帐户被锁住,或者用户帐户的口令被修改了,但是没有在服务启动属性配置中更新,这些服务将无法启动。
在将任何 DB2 UDB 服务从专门的用户帐户移交给 LocalSystem 帐户之前,必须考虑到 LocalSystem 帐户不能访问 LAN 共享,因为不能在其他计算机上验证身份。因此必须保证 DB2 UDB 系统不使用其他机器上的任何文件资源。
在 LocalSystem Account(LSA)上下文中运行的应用程序使用本地的 DB2 UDB 隐式连接。如果开发在该帐户下运行的应用程序,必须知道 DB2 UDB 关于对象模式名以 “SYS” 开头的限制。如果应用程序包含创建 DB2 UDB 对象的语句,应该这样写:
对于静态 SQL,必须为 QUALIFIER 选项绑定一个值而不能使用默认值。
对于动态 SQL,要创建的对象必须显式地用 DB2 UDB 支持的模式名限制,否则必须将 CURRENT SCHEMA 注册表变量设置为某个模式。
每个进程都有一个相关的所有者(用户名)。关于与 DB2 UDB 有关的所有进程的说明,请参阅 “Everything You Wanted to Know About DB2 Universal Database Processes”(developerWorks,2003 年 4 月)。
要改变用于启动 DB2 UDB 服务的用户帐户,打开 Services 面板(Start > Settings > Control Panel > Administrative Tools > Services)。右击 DB2 UDB 服务查看其属性。单击服务属性窗口(图 5)上方的 Log On 选项卡。在该选项卡中,可以指定服务启动时使用的用户帐户,或者指定为 LSA。单击 OK 保存修改,关闭该服务的属性窗口。
一般来说,应该使用单独的、可标识的用户帐户来启动 DB2 UDB 服务。但是,环境中对用户帐户的控制越紧,就越有可能使用已有的用户帐户或者 LocalSystem 帐户启动这些服务。一旦设置一个帐户来运行某项服务,就不能删除该帐户,否则与该帐户相关的服务就无法启动。即便使用相同的名称重新创建该帐户也不能解决。在这种情况下,必须像前面所述的那样手工进入服务面板,重新配置启动该服务使用的用户帐户。
DB2USERS 和 DB2ADMNS 组:
从 DB2 UDB Version 8.2 开始,为 Windows 环境下的 DB2 UDB 增加了一些安全特性。作为 DB2 UDB 安装的一部分出现了一个新的选项,即在操作系统中创建两个新的组:DB2USERS 和 DB2ADMNS。一旦创建了这两个组,只有是这些组的成员的用户帐户才能访问系统上的 DB2 UDB 文件(包括命令和 DB2 UDB 创建的用户数据文件)。
可以改变这些组的名称,但应该尽量使用默认的名称。如果和已有的组名冲突,就会提示修改组名。如果在初始 DB2 UDB 安装中没有选择该选项,以后可以运行 db2secv82.exe 程序来启用。该程序在 DB2PATHSQLLIBBIN 目录中,其中的 DB2PATH 是安装 DB2 UDB 的位置。为了最大程度地保护服务器,应该启用该选项。
服务器文件系统中所有的 DB2 UDB 文件夹都要求用户必须是这两个组之一的成员,才能访问 DB2 UDB 文件夹和文件。
一旦使用 db2secv82.exe 命令启用了这种额外的安全特性,有两种办法可以取消:
立即再次运行 db2secv82.exe 命令,不对系统做任何改变。如果已经对系统做了任何改变,只能使用下面的方法。
将 EVERYONE 组添加到 DB2ADMNS 和 DB2USERS 组:
如果启用扩展安全特性,DB2 UDB 注册表变量 DB2_EXTSECURITY 将设置为 YES。这就告诉 DB2 UDB 需要进行附加的安全检查。如果创建 DB2ADMNS 和 DB2USERS 组后将 DB2_EXTSECURITY 的值改为 NO,文件和文件夹的访问权限仍然属于这两个组,但是 DB2 UDB 将不执行额外的安全检查。
Linux 和 Unix 操作系统上需要的用户和组帐户
NIS/NIS+ 的问题:
如果环境中使用了 NIS/NIS+ 或者类似的安全软件,必须在安装 DB2 UDB 之前 手工创建需要的 DB2 UDB 用户和组帐户。安装之前请参考 DB2 UDB 文档中的 NIS 主题(请参阅 参考资料)。
在 Linux 和 UNIX 操作系统中,安装和操作 DB2 UDB 通常需要几个用户和组帐户:
1、Installation 用户帐户
2、DB2 Administration Server(DAS)用户帐户
3、DB2 UDB 实例所有者用户帐户
4、DB2 UDB fenced 例程用户帐户
默认情况下,DB2 安装向导在 DB2 UDB 服务器安装过程中将自动创建这些用户和组帐户。也可以在安装过程中指定已有的用户帐户。
Installation 用户帐户:
必须使用 “root” 帐户安装 DB2 UDB。这是具有足够权限执行安装的惟一帐户。
