权限管理让数据库更安全

来源: eNet硅谷动力
2013/11/21 19:42:51
Oracle数据库中同义词是数据库方案对象的一个别名,经常用于简化对象访问和提高对象访问的安全性。

分享到: 新浪微博 腾讯微博
本文关键字: 权限管理 数据库

某天,公司生产环境中的某一个产品库被研发人员truncate一张非常重要的表,研发总监知道后非常生气,要求严格控制研发人员的权限问题,每个人用自己的用户名称操作数据库,审计每个人的操作权限,将每个研发人员对生产库的操作进行记录。

在这种情况下,需要严格控制研发人员的DDL权限,限制用户对数据库进行DDL等操作。如果单纯的进行限制,可以通过触发器来进行控制,语句如下:

CREATEORREPLACETRIGGERDDL_RESTRICT
  BEFOREDROPORCREATEORTRUNCATEORALTERONDATABASE
  DECLARE
  BEGIN
  IFORA_SYSEVENT()IN('DROP','CREATE','ALTER','TRUNCATE')
  ANDORA_DICT_OBJ_OWNER()IN('BUPTDREAM'AND
  ORA_DICT_OBJ_TYPEIN('TABLE') AND
  ORA_DICT_OBJ_NAME()NOTLIKE'%a%'AND
  ORA_DICT_OBJ_NAME()NOTLIKE'%b%'AND
  ORA_DICT_OBJ_NAME()NOTLIKE'%c%'THEN
  RAISE_APPLICATION_ERROR(NUM => -20000,
  MSG =>'禁止'|| ORA_SYSEVENT() ||' '||
  ORA_DICT_OBJ_OWNER() ||'用户下的'||
  ORA_DICT_OBJ_NAME() ||'表,请与DBA联系');
  ENDIF;
  END;

通过触发器可以控制开发人员对生产库的DDL操作,如果想要禁止delete的DML操作,也可以用触发器来实现。

在Oracle数据库中对用户的管理是使用权限的方式,也就是说,如果直接将生产库的权限给某个用户,我们必须要已授权的表的名称前键入该表所有者的名称,所以比较麻烦。

Oracle数据库中同义词是数据库方案对象的一个别名,经常用于简化对象访问和提高对象访问的安全性。在使用同义词时,Oracle数据库将它翻译成对应方案对象的名字。与视图类似,同义词并不占用实际存储空间,只有在数据字典中保存了同义词的定义。在Oracle数据库中的大部分数据库对象,如表、视图、同义词、序列、存储过程、包等等,数据库管理员都可以根据实际情况为他们定义同义词。批量建立同义词的语句如下:

select' create public synonym '|| OBJECT_NAME ||
  ' for CMAPP_PRODUCTION.'|| OBJECT_NAME ||';'
  fromuser_objects
  whereobject_typein
  ('TABLE','VIEW','PROCEDURE','TRIGGER','FUNCTION','PACKAGE');

同义词赋权的语句如下:

SELECT'grant select,insert,update,delete on '||
  OBJECT_NAME ||' to buptdream;'
  FROMUSER_OBJECTS
  WHEREOBJECT_TYPE ='TABLE';
  SELECT'grant select,insert,update,_deleteon '|| OBJECT_NAME ||
  ' to buptdream;'
  FROMUSER_OBJECTS
  WHEREOBJECT_TYPE ='VIEW';
  SELECT'grant _execUTE on '|| OBJECT_NAME ||' to buptdream;'
  FROMUSER_OBJECTS
  WHEREOBJECT_TYPE ='PROCEDURE';
  SELECT'grant _execUTE on '|| OBJECT_NAME ||' to buptdream;'
  FROMUSER_OBJECTS  WHEREOBJECT_TYPE ='FUNCTION';
  SELECT'grant _selecton '|| OBJECT_NAME ||' to buptdream;'
  FROMUSER_OBJECTS
  WHEREOBJECT_TYPE ='SEQUENCE';

通过上述方法,可以控制研发人员对生产库的操作,一旦权限被控制,就大大降低了数据库面临的风险。在这个过程中,我们可以采用审计方式记录下每个操作。

在数据库开发过程中,如果研发人员很多,进行相关的权限管理是非常重要的事情,可以大大减少对数据库的误操作。触发器是一个方法,另外通过同义词,可以为每个用户单独建立用户,提高研发人员操作数据库时的专心程度,防止误操作的发生。

启明星辰公司数据库审计专家点评

本案例比较生动,且详细描述了权限控制方法。从数据库安全的角度来讲,除了建立良好的权限控制机制,还要考虑管理上的风险(账号共用)及数据库自身弱点(漏洞利用等),数据库自身的安全检查、系统加固、审计等措施都很有必要。

责编:王雅京
vsharing 微信扫一扫实时了解行业动态
portalart 微信扫一扫分享本文给好友
著作权声明:kaiyun体育官方人口 文章著作权分属kaiyun体育官方人口 、网友和合作伙伴,部分非原创文章作者信息可能有所缺失,如需补充或修改请与我们联系,工作人员会在1个工作日内配合处理。
畅享
首页
返回
顶部
×
畅享IT
    信息化规划
    IT总包
    供应商选型
    IT监理
    开发维护外包
    评估维权
客服电话
400-698-9918
Baidu
map