《2022年Informix的用户权限管理 .pdf》由会员分享,可在线阅读,更多相关《2022年Informix的用户权限管理 .pdf(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、有关数据库的权限存储在数据库中的数据对于一个商务活动来说是非常重要的。不仅要通过备份和制作日志来保证数据的不丢失,还要通过设置不同的访问权限来防止来自用户的善意的或恶意的破坏。一个公司不可能总是使用一个完全独立的数据库系统来保存雇员的工资信息。工资信息可能是与是保存在通常的数据库中,这样你就不需要两台机器和两个数据库服务软件包。即使你在一台服务中使用了两个完全独立的数据库,针对每个用户确定其访问数据库、数据表以及数据字段的权限还是很必要的。而目前众多的数据库管理系统总是更习惯于将用户权限的管理完全交给 Application来完成。而真正操作数据库的往往是诸如DBA 这样的拥有超级权限的数据库
2、用户。我不能说这样的系统就一定会出安全性问题,但是至少这种做法会带来有关安全性的隐患。对于数据库用户权限的设置,绝大多数成熟的数据库都提供了一种大同小异的做法。我们这里以Informix为例,仅仅是因为我在使用Informix时发现网上对于 Informix的用户权限设置缺少详实的资料。 希望这份文档能对Informix的应用者有所帮助(尽管现在Informix的市场占有率是出奇的低。)有关我们的系统我们使用的数据库数据服务器上的操作系统是SCO UNIX 5.05,数据库选用 Informix 7.3 。由于选用操作系统和数据库的不同,以下的操作可能会用细微的差别。创建新用户在我们使用的平台
3、上, Informix的数据库用户对应于UNIX的系统用户,因此创建新用户的过程也就是创建UNIX系统用户的过程, 我们可以用root 登录后使用如下命令创建三个新的用户:#useradd mydba #useradd myuser1 #useradd myuser2 然后使用 passwd给这三个用户设置相应的口令, 我们可以看到由于我们的 useradd 命令没有采用完整的格式,因此这三个用户并不能真正用来登录到我们的 UNIX主机,而只能作为数据库用户来使用。数据库级别的用户权限对于所有的有权使用(这里的有权使用可能意味着该用户只能浏览该数据库中某一数据表的某一字段)该数据库的数据库用户
4、都必须赋予其数据库级别的用户权限。 在 Informix中,数据库级别的用户权限有三种,按权限的大小依次是connect 、resource 和 DBA 。Connect 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 6 页 - - - - - - - - - 这是级别最低的一种数据库级别的用户权限。拥有该权限的用户可以执行 select 、insert 、update 和 delete 语句,针对数据表执行存储过程,创建数据表的视图,创建临时表(这样的临时表可以有索引
5、,也可以没有索引)。Resource 拥有该权限的用户除拥有connect 的全部权限以外,他还可以创建新的表,并可以对它自己所创建的表执行alter和 drop 操作,并可以对这些表创建索引。DBA 数据库的建立者和拥有者被自动赋予这种权限。拥有该权限的用户除拥有 resource 的全部权限以外,他还可以对其他用户赋予或解除connect 、resource 和 DBA 权限, 可以对其它用户创建的表的视图执行drop 和 alter操作。甚至他还可以对数据库执行drop、start 、stop 和 recover 操作。新数据库的建立并为各用户赋予相应的数据库级别的权限使用有权登录到 U
6、NIX主机的用户创建一个新的数据库(create database databasename 命令)。如上所述,现在该用户将对新创建的databasename数据库拥有 DBA的权限。连接到这个库后, 采用 GRANT 命令可以对其它用户赋予相应的数据库级别的权限。(事实上这是一个真正意义上的超级用户,换言之也是最危险的用户,在我们下面赋予了mydba以该表的 DBA权限以后,我们将不再使用这个用户)。赋予用户相应的数据库级别的权限的格式是:GRANT 权限 TO 用户名 ,用户名 于是,我们可以使用下面的三个命令给我们新创建的用户赋予相应的数据库级别的权限。GRANT DBA TO mydb
7、a;/* 赋予 mydba以 DBA 的权限 */ GRANT CONNECT TO myuser1,myuser2;/* 赋予 myuser1,myuser2以CONNECT的权限 */ 在这里,我们有必要介绍一个特殊的用户public , 如果使用 GRANT . TO PUBLIC ,这将意味着赋予所有用户某种权限,当然,这种做法也许并不可取。用户数据库级别权限的解除解除用户相应的数据库级别的权限的格式是:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 6 页 -
8、- - - - - - - - REVOKE 权限 FROM 用户名 ,用户名 对于拥有 DBA 、RESOURCE权限的用户,解除其相应的DBA 、RESOURCE权限将自动将其降格为CONNECT权限。而对于只拥有 CONNECT权限的用户,解除其CONNECT权限实际上也就意味着删除该数据库用户。示例:REVOKE DBA FROM mydba;/*将 mydba降格为 CONNECT权限*/ REVOKE CONNECT FROM myuser1;/*解除 myuser1对该数据库的访问权限*/ 表级别和字段级别的权限当一个用户访问数据库时,DBA可以限制其对指定表和表中指定字段的访问
9、。任何 resource 级别或 DBA级别的用户都可以创建表。 表的拥有者或任何 DBA级别的用户都可以对其它用户赋予或解除针对该数据表的表级别和字段级别的权限。这样的权限共有八种:insert 、delete 、select 、update、references 、index 、alter和 all 。Insert 该权限表示用户可以向表中增添新的数据。Delete 该权限表示用户可以删除表中的数据。Select 该权限可以扩展到指定字段,表示用户可以查询表中的记录或指定字段。Update 该权限可以扩展到指定字段,表示用户可以修改表中的记录或指定字段。References 该权限可以扩展
10、到指定字段,表示用户可以针对表中的记录或指定字段制定参考性约束条件。参考性约束条件用来执行诸如多级删除和字段之间关联的工作。赋予该权限的用户应该首先至少是resource 级别的用户。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 6 页 - - - - - - - - - Index 该权限表示用户可以建立或删除与表有关的索引。赋予该权限的用户应该首先至少是 resource 级别的用户。一个 connect 级别的用户即使被赋予该权限也不能建立索引。该权限不能扩展到指
11、定字段,这是因为索引是建立在表的所有行的基础上的。Alter 该权限表示用户可以改变表的结构。所谓改变表的结构是指增加、删除和改变字段或改变字段的数据类型。该权限只能针对数据表。 一般来说,只有对于具备数据库系统知识并知道如何保护数据库系统的人,我们才会赋予此项权限。All 该权限包含上面的所有七种权限。创建新表使用 mydba登录到数据库,并使用如下语句创建一个新的数据表:CREATE TABLE customer_table ( customer_id char(2) not null, balance decimal(16, 2) not null, primary key(custom
12、er_id); 在创建新表后,系统将对 public赋予该表 All 的权限。也就是说所有可以访问该数据库的用户都可以对该表执行select 、insert 、update 和delete 语句,这显然不是我们想要看到的。用户表级别和字段级别权限的解除解除用户相应的数据库级别的权限的格式是:REVOKE 权限 , 权限 ( 字段名 ,字段名 ) ON 表名 FROM 用户名 ,用户名 我们首先需要解除public在该表上的 All 权限:REVOKE ALL ON customer_table FROM PUBLIC; 其它示例:REVOKE INSERT ON customer_table
13、FROM PUBLIC;/* 解除所有用户对该表的 INSERT权限*/ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 6 页 - - - - - - - - - REVOKE SELECT ON customer_table FROM myuser1;/* 解除 myuser1对该表的 SELECT 权限*/ REVOKE UPDATE (customer_id, balance) ON customer_table FROM myuser1;/* 解除 myuser
14、1对该表中customer_id, balance字段的 UPDATE 权限*/ 用户表级别和字段级别权限的赋予赋予用户相应的数据库级别的权限的格式是:GRANT 权限 ,权限 (字段名 ,字段名 ) ON 表名 TO 用户名 ,用户名 我们赋予 myuser1 以更改该表中 balance 字段的权限:GRANT UPDATE (balance) ON customer_table TO myuser1; 赋予 myuser2以浏览该表的权限:GRANT SELECT ON customer_table TO myuser2; 多种权限的同时赋予和解除从上面的 REVOKE 和 GRANT
15、的格式,我们可看到,其实我们可以使用一条命令同时针对某一用户赋予或解除多种表级别或字段级别的权限。例如:GRANT INSERT, DELETE, UPDATE ON customer_table TO PUBLIC;/*同时赋予所有用户对该表的INSERT 、DELETE 和 UPDATE 权限*/ GRANT SELECT, UPDATE (balance) ON customer_table TO myuser2;/*同时赋予 myuser2对该表中balance 字段的 SELECT 和 UPDATE 权限*/ REVOKE INDEX, ALTER ON customer_table
16、 FROM myuser1;/* 同时解除myuser1对该表的 INDEX和 ALTER 权限*/ 你也可以在一条语句中同时针对某一用户赋予或解除表级别和字段级别的权限,这时字段级别的权限使用指定的字段,而表级别的权限使用指定的数据表。例如:GRANT INSERT, DELETE, SELECT, UPDATE (balance) ON customer_table TO myuser2; /* 同时赋予 myuser2 对该表的 INSERT 、DELETE 权限以及对字段balance 的 SELECT 和 UPDATE 权限*/ REVOKE INDEX, SELECT, ALTER (balance) ON customer_table FROM myuser1; /* 同时赋予 myuser1 对该表的 INDEX 、ALTER 权名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 6 页 - - - - - - - - - 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 6 页 - - - - - - - - -