赵晋 王维民
(合肥市电信局计算中心)
摘要 本文介绍了作者为了提高Oracle数据库安全所进行 的一些有益尝试。
关键词 Oracle数据库 安全
1. Oracle数据库安全的几个基本概念
1.1帐户安全(Account Security)
要在数据库中访问数据,就必须访问该数据库的一个帐户。每个帐户必须指定一个口令。口 令是在帐户建立的时候设置的,可由DBA或用户进行修改。
1.2系统级权限(System-level Privilege)
系统级权限可以建立从系统级权限全集到扩展的基本系统级的各类角色。比如,Connect,Re source和DBA就是分别提供给用户,开发者及DBA的标准角色。
1.3对象安全性(Object Security)
用户可以通过grant命令将自己创建的一些权限授予其他用户使用,也可以给其他用户授予 对对象授权的权限。例如,可以授予一个用户拥有对本用户表授予select 权限的权限。
1.4审计(Auditing)
Oracle具有审计发生在其内部的所有操作——包括注册企图,对象访问和数据库操作——的 能力。审计的结果存储在数据库的审计表中。
2. 应用实例与分析
在一些较大规模的Client/Server系统中,Client端的应用程序一般是通过主程序中的语句 实现与数据库的连接。这种情况下,任何人打开源程序便能清楚了解数据库的连接口令,这 就可能导致安全性问题。经常改变数据库密码是一个办法,而若要改变数据库用户的密码, 就需重新编写相关程序,并对Client端的有关程序进行更新,对于Client端多而分散的系统 ,实际运作很不方便。能不能让这些工作简单易行一些呢?我们在工作中进行了一些尝试。
我单位数据库环境为Oracle7.3,开发工具是Develope2000。收费系统是我单位的核心系统之 一,占有极其重要的地位,其Client端分散在市区的数个营业点,通过城域网与主机(小型 机)相连。收费系统在数据库中的用户名为SFYY(收费应用)。
试验的步骤是这样的:
2.1在收费小型机Oracle系统的system用户(DBA)下,创建新用户test;
create user test
identified by carton
default tablespace dataspace1
quota 100K
2.2对test用户授以权限;
grant create session to test;
grant resource to test;
2.3在test用户下建立一个存储函数mmtranslate,它其实是一个加密程序。下面是一个简 单的例子。
function mmtranslate(m varchar2)
return varchar2
as
i number(2);
kk varchar2(10);
begin
kk:=′′;
i:=1;
loop
if i<=length(m) then
if instr(′1234567890′,substr(m,i,1),1,1)>0 then
kk:=kk||chr(100+to_number(substr(m,i,1)));
elsif instr('wxyz',substr(m,i,1),1,1)>0 then
kk:=kk||chr(-8+ascii(substr(m,i,1)));
else
kk:=kk||chr(4+ascii(substr(m,i,1)));
end if;
else
exit;
end if;
i:=i+1;
end loop;
return kk;
exception
when others then
return ′-1′;
end;
2.4在test用户下建表mmtest并插入记录。
create table mmtest
(usnamevarchar2(6),------用户名称
mimavarchar2(6)------加密前的密码
);
insert into mmtest values( 'sfyy','eds2');
commit;
2.5执行以下语句
SQL>select mmtranslate('eds2') from dual;
MMTRANSLATE('EDS2')
----------------------------------------
ihwf
利用DBA权限更改sfyy的密码为上面语句的执行结果:
alter user sffy
identified by ihwf; ;
2.6修改应用程序,对于开发环境是Develope2000的程序来说,主要是修改主程序的on-lo gon触发器:
declare
mm varchar2(6);
begin
logon('test','carton');
select mima into mm from mmtest where usname='sfyy';
mm:=mmtranslate(mm);
logout;
logon('sfyy',mm);
end;
然后再利用触发器WHEN-NEW-FROM-INSTANCE执行Callfrom或Newform等 命令,进入业务处理程序。这个主程序应当仅仅由管理员来掌握,编译之后将执行文件下发 到各收费点的Client端。
2.7在System用户下,利用Oracle提供的pupbld.sql,建立表Productuserprofile,执行下面这样的命令,限制在非开发状态SQL命令的使用,例如
insert into productuserprofile
(product,userid,attribute,charvalue) values
('SQL*Plus','TEST','CONNECT','DISABLED');
insert into productuserprofile
(product,userid,attribute,charvalue) values
('SQL*Plus','SFYY','DELETE','DISABLED');这样,在SQL
排行
- 美国与欧洲分布式发电的比较
- 中国石油、天然气战略资源分析
- 上海交通发展战略
- Introversion and Extroversion
- 曼型干式气柜在技术管理中应注意
- 无线局域网技术概述
- 微型热电联产在游泳池项目中的应
- 网页设计制作规范
- 面向21世纪的世界炼油工业
- 当前我国能源消费形势分析
- 聚乙烯管道系统的构成与施工
- 平面图形设计中的符号学原理
- 数码相机的设计报告
- JSP动态网页制作技术
- 2004年发展中国家经济状况及前景
- 数控技术和装备发展趋势及对策
最近更新
提高Oracle数据库应用系统安全的举例与分析


联系我们
返回 计算机论文 列表