提高Oracle数据库应用系统安全的举例与分析

2/9/2008来源:Oracle教程人气:4890

摘要 本文介绍了作者为了提高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:=kkchr(100+to_number(substr(m,i,1)));
  
  elsif instr('wxyz',substr(m,i,1),1,1)>0 then
  
  kk:=kkchr(-8+ascii(substr(m,i,1)));
  
  else
  
  kk:=kkchr(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状态下,根本无法连接到TEST用 户,而在 sfyy用户下,delete命令将不能执行。当然,DBA可以改变这些设置。
  
  3.
  可以看出,通过上述的一系列处理,无须更新程序便能实现应用系统数据库(本例中的sfyy) 密码的定期或经常的改动,大大提高了维护效率。Test用户的口令只有DBA把握;过程mmtra nslate的加密方式也可以经常改变。这些都保证了安全性。
  
  另一方面,还要加强对源程序的治理,在Client端只存放执行程序。加强审计,发现异常现 象,及时处理。
  
  通过这些手段,数据库安全得到了更好保证。
  
  MVision解决方案创新创先
  
  Micron将于7月正式推出一套MVision计划,专门帮助行业用户和政府部门进行以下活 动:提 高他们的IT人员的能力,增加他们的财政来源,以及从事高收益的科技。MVision计划的第 一阶段包括:16项提高IT人员生产力的新的产品和服务;新的增加财政来源计划和提供高科 技帮助。通常计算机供给商提供的以上各种项目只为被美国《财富》杂志评为的全美前500 名企业服务。而Micron为满足行业用户和政府部门的需求而为他们提供了上述项目,从而成 为这一行业中领导者。
  
  Micron董事长兼CEO Jeol Krocher先生说:“Micron的MVision计划的第一步的基础是IT专 业人士和高级治理的直接输入。它主要是为了让行业部门和政府机构中的IT人员更加有步骤 、有效率的工作。通过MVision计划,我们希望帮助我们的客户减少配置PC机的运转费用, 并利用高科技来进行他们的合作项目。这意味着用在用户支持和治理上的IT预算和人员将会 减少。同时,也意味着将帮助我们的客户提高技术水准。而这些技术能减少开支并提高机构 的效率。