Oracle12c锁定带来新的安全保障(oracle12c的锁)
Oracle12c锁定带来新的安全保障
随着信息化建设的不断推进,大量的关键性信息被存储在各类数据库中,因此数据库的安全性变得愈加重要。Oracle作为当今最流行的关系型数据库之一,已经推出了许多安全特性,比如角色分离和加密等,但是在锁定方面还是有不足之处,这也是不少攻击者惯用的手段。为了弥补这一缺陷,Oracle推出了12c版本,在锁定方面进行了极大的升级,从而提供了新的安全保障。
所谓“锁定”,就是将某个资源或者操作占用,使得其他用户无法进行访问或者修改,通常有“共享锁”和“排他锁”两种。其中,“共享锁”可以让多个用户同时进行访问,但是不能修改,而“排他锁”则是只允许一个用户进行修改。在以往的Oracle版本中,锁定控制的粒度比较粗,只能以表或者行为单位进行锁定控制。
而在Oracle12c中,则推出了Row Level Security,可以针对某些特定的行进行锁定。这一特性就可以为Oracle数据库提供更加细致的锁定控制,从而避免了数据被未授权的用户恶意访问或者修改的安全隐患。
在使用Row Level Security时,需要注意以下几个步骤:
1.创建安全策略函数
创建一个安全策略函数,以定义对行进行触发操作的方式,可以在该函数中定义哪些用户可以访问,哪些不能访问等操作。如下所示:
create or replace function sales_sec_policy(p_owner in varchar2, p_table in varchar2) return varchar2 as
v_policy varchar2(100);
begin
if p_owner = ‘scott’ and p_table = ‘sales’
then
v_policy := ‘sale_row_policy’;
else
v_policy := null;
end if;
return v_policy;
end sales_sec_policy;
2.使用安全策略函数
在需要进行行级别锁定的表上,通过设置安全策略函数进行操作:
alter table sales secure row level using sales_sec_policy;
3.为用户授权
在进行上述操作后,需要对具体的用户进行授权,以决定其是否能够对该行进行访问。可以通过以下代码进行授权操作:
begin
dbms_rls.add_policy (object_schema=>’scott’,
object_name=>’sales’,
policy_name=>’sale_row_policy’,
function_schema=>’scott’,
policy_function=>’sales_sec_policy’,
statement_types=>’select,insert,update’,
predicate=>’customer_id = user’);
end;
通过上述操作,在进行数据访问时,Oracle12c就可以针对特定的行进行锁定控制,保证数据的安全性。
除了Row Level Security之外,Oracle12c还提供了许多其他的安全措施,比如主机名绑定,加密传输等。相信随着技术的不断升级和完善,Oracle的安全性将会越来越高,为企业信息安全保驾护航。