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的安全性将会越来越高,为企业信息安全保驾护航。


数据运维技术 » Oracle12c锁定带来新的安全保障(oracle12c的锁)