Informix 数据库内部用户使用原理
1. 概述
Informix数据库支持两种用户访问方式,数据库内部用户和操作系统用户。
数据库内部用户是指使用create user命令创建的用户,通过映射配置,新建用户可以映射至操作系统用户。这种方法使系统可以通过映射系统中已存在的除 Informix 和 root 外的其他用户,来访问数据库。这种机制将会减少为了使用数据库而创建的大量系统用户。减少 DBA 的工作量,增加系统的安全系数。操作步骤如下
1,配置allowed.surrogates
在/etc/informix目录(如没有,使用root用户创建)下创建allowed.surrogates配置文件,内容如下:
USERS:daemon
2,数据库开启USERMAPPING
onmode -wf USERMAPPING=ADMIN
3,加载surrogates到缓存
onmode -cache surrogates
4,在sysuser库中创建系统默认用户,可以指定默认目录
CREATE DEFAULT USER WITH PROPERTIES USER daemon HOME "/home/gbase8t/users" ;
5,创建普通用户,并指定密码
CREATE USER ifxuser WITH PASSWORD 'ifxuser';
6,在数据库中赋权访问
echo "grant dba to ifxuser;" | dbaccess testdb -
7,使用内部用户访问数据库,按提示输入密码
dbaccess - -
CONNECT TO 'testdb@gbasedb' USER 'ifxuser';
操作系统用户是指使用服务器存在用户进行登录。
2. Informix 的授权机制
Informix 从 Informix 11.7 版本开始提供除了通过操作系统用户鉴权方式,还提供了非操作系统用户 NON-OS user 鉴权方式。如下介绍这 2 种鉴权方式的机制和差异性。
2.1 Informix 操作系统用户鉴权机制
Informix 传统的操作系统用户认证方式就是使用一个操作系统用户,并通过一个用户 ID 和密码来判定用户的合法性。这是一种最常见也是最简单的认证方式。下面是一个 Informix 授权机制的示意图。
图 1. Informix 传统验证机制示意图
如图 1 所示,传统的认证方式需要访问数据库的用户同时也是一个系统用户,即如要创建一个 Informix 数据库用户,需要先创建一个操作系统用户,然后对该用户进行授权访问数据库。当有需要创建大量的数据库用户时,就造成了会产生大量的系统用户,需要较大的系统管理工作,同时对系统安全存在一些隐患。
2.2 Informix11.7 非系统用户验证机制
Informix 自 11.7 版本开始增加了非系统用户映射系统用户来操作数据库的方法,该方法可以使多个非系统用户映射到一个系统用户。如下所示是 Informix 非系统用户访问数据库示意图:
图 2. Informix 非系统用户验证机制示意图
从上面的图中可以看出,非系统用户通过映射系统用户来完成 Informix 的完全认证,非系统用户将使用被映射的操作系统用户的 UserID 和 GroupID 等信息。Informix 的 onconfig 文件中的 USERMAPPING 参数用于控制映射功能的启用和禁用。默认情况下,只要启用了映射功能,任何非系统用户都可以通过被映射的系统用户来连接数据库。当然,也可以通过命令控制用户是否可以接入。
3. 非系统用户的设置和使用
使用非系统用户访问数据库的设置包括创建系统用户,映射用户,创建及维护数据库服务器用户和用户权限管理四部分。其中创建系统用户和映射用户为准备过程,创建数据库服务器用户和用户权限管理如下图所示为整个过程的示意图:
图 3. Informix 非系统用户访问数据库设置方法示意图
由图 3 所示,创建和使用非系统用户一般按照下面的步骤:1. 创建新系统用户。2. 映射用户。3. 创建数据库用户。4. 权限管理 下面详细介绍非系统用户设置和使用每一步的具体步骤。
3.1 创建系统用户
非系统用户访问数据库必须通过映射到一个系统的数据库用户上才能进行,所以必须首先创建一个系统用户,用于非系统用户的映射。创建系统用户可以使用常用的命令 useradd。在此以创建系统用户 user1 为例。