详细讲述Sybase数据库的安全性控制策略
2008-05-16 15:09:46 来源:WEB开发网Sybase提供了Audit Server,它是能够全面审计跟踪服务器上一切活动的工具,在某些情况下,我们难以阻止非法操作的发生,但至少可以监视非法操作,并采取跟踪措施,找出非法执行操作的人。
除了以上四点基本策略,Sybase数据库中还提供了两种对象——视图和存储过程用于增强系统的安全性。
视图和存储过程像数据库中的其他对象,也要进行权限设定,这样用户只能取得对视图和存储过程的授权,而无法访问底层表。视图可以限制底层表的可见列,从而限制用户能查询的数据列的种类,还能通过应用Where子句限制表返回的行。
下面以具体实例说明Sybase的安全性控制策略。假设开发一个新项目,需要建一个服务器,命名为Server,系统自动产生SA,并要求输入口令(在此我们均假设口令为Null)。SA通过Logins对话框(或用SQL语句)为服务器增加注册Logins,则Logins有权访问Sybase,SA创建数据库DB(SA在数据库DB中的身份为数据库所有者DBO),同时创建两个用户USER1(设置登录名为Login,默认服务器为DB)和USER2这两个用户只能访问数据库DB。DB中有两张表TABLE1(COLUMN1 INT,COLUMN2 CHAR(5))和TABLE 2。
USER1要访问DB时,首先以Login登录服务器,默认数据库DB被打开,Login的身份就会化为USER-1。在完成了登录和验证后,我们可以通过授权进行安全性控制。授权命令要由数据库属主SA发出:GRANT ALL ON TABLE-1,TABLE-2 TO USER-1则USER-1拥有对TABLE-1,TABLE-2的所有权限。当然,SA也可以收回权限:REVODE DELETE ON TABLE1 FROM USER-1,样,USER-1就不能对TABLE-1进行删除操作。
视图和存储过程就象架设在用户与底层表之间的一道桥梁,用户只能对视图和存储过程进行操作,而无法直接访问底层表。下面创建一个视图人为例子。
CREATE VIEW VIEW-1
AS SELECT COLUMN-1 FROM TABLE-1
GRANT ALL ON VIEW-1 TO USER-2
USER-2通过VIEW-1可以访问COLUMN-1而无法访问COLUMN-2,这就是VIEW-1的屏作用。再用存储过程举一个屏蔽行的例子。
CREATE PROCEDURE PROC-1
AS SELECT FROM TABLE-1
WHERE (COLUMN-11)
GRANT EXECUTE ON PROC-1 TO USER-2
当用户查询时,只能看到COLUMN-1列值为1的行,其他行已经被PROC-1屏蔽掉了。
虽然Sybase为我们提供了强大的安全体系保障,但我们也要看到,安全问题不可能通过系统得到彻底解决,并且过分注重安全问题反而会降低系统效率。如何运用系统提供的安全策略就有赖于开发者的智慧了。
更多精彩
赞助商链接