Oracle 11gR1中细粒度接见搜集效力(1)

作者: 黄永兵 来由:51CTO.com 
 
阅读提示:Oracle容许哄骗几个PL/SQL API(UTL_TCP, UTL_SMTP, UTL_MAIL, UTL_HTTP和 UTL_INADDR)接见内部搜集效力,这些API都哄骗TCP协议,在上一个数据库版本中(10g)是经过一个基于用户能否被赋予执行某个包的答允的on/off开关来完成的,Oracle 11g引入了细粒度接见搜集效力,经过在XML DB 数据库中哄骗接见控制列表(ACL)来完成。


Oracle容许哄骗几个PL/SQL API(UTL_TCP, UTL_SMTP, UTL_MAIL, UTL_HTTP和 UTL_INADDR)接见内部搜集效力,这些API都哄骗TCP协议,在上一个数据库版本中(10g)是经过一个基于用户能否被赋予执行某个包的答允的on/off开关来完成的,Oracle 11g引入了细粒度接见搜集效力,经过在XML DB 数据库中哄骗接见控制列表(ACL)来完成,容许控制哪个用户可以接见哪个搜集资源,而不体贴包的授权。

哄骗FTP或WebDav可以间接在XML DB 数据库中创建、点窜和删除接见控制列表,Oracle供给了DBMS_NETWORK_ACL_ADMIN和DBMS_NETWORK_ACL_UTILITY步伐见原许从PL/SQL治理接见控制列表,这些API即是本文的主角。

创建一个接见控制列表(ACL)

接见控制列表是哄骗DBMS_NETWORK_ACL_ADMIN步伐包来操纵的,CREATE_ACL存储历程哄骗下面的参数来创建一个新的接见控制列表:

 acl - 接见控制列表XML文件的名字,孕育产生在XML DB 数据库中的/sys/acls目次下
 description - 接见控制列表的描写信息
 principal - 第一个被赋予或拒绝的用户账号,巨细写敏感
 is_grant - TRUE意味着赋予了权限,FALSE意味着权限被拒绝
 privilege - 给UTL_TCP, UTL_SMTP, UTL_MAIL和UTL_HTTP赋予connect权限,给UTL_INADDR称号/ip分化赋予resolve权限,巨细写敏感
 start_date - 默许值是NULL,当指定了一个值后,接见控制列表只要在指定的日期到达时或到达后才被激活
 en_date - 接见控制列表终了日期(可选的)

下面的代码创建了两个测试用户充当委托人,然后又创建了一个新的接见控制列表。

CONN sys/password@db11g AS SYSDBA
CREATE USER test1 IDENTIFIED BY test1;
GRANT CONNECT TO test1;
CREATE USER test2 IDENTIFIED BY test2;
GRANT CONNECT TO test2;
BEGIN
  DBMS_NETWORK_ACL_ADMIN.create_acl (
    acl          => 'test_acl_file.xml', 
    description  => 'A test of the ACL functionality',
    principal    => 'TEST1',
    is_grant     => TRUE, 
    privilege    => 'connect',
    start_date   => SYSTIMESTAMP,
    end_date     => NULL);
  COMMIT;
END;
/

一旦创建终了,接见控制列表就可以在http://host:port/sys/acls目次下看到。

哄骗ADD_PRIVILEGE存储历程将其他的用户或角色添加到接见控制列表中,它的参数与CREATE_ACL存储历程的参数相似,省略了DESCRIPTION参数,同时增进了POSITION参数,它用于设置优先按次。

BEGIN
  DBMS_NETWORK_ACL_ADMIN.add_privilege ( 
    acl         => 'test_acl_file.xml', 
    principal   => 'TEST2',
    is_grant    => FALSE, 
    privilege   => 'connect', 
    position    => NULL, 
    start_date  => NULL,
    end_date    => NULL);
  COMMIT;
END;
/

每个委托人在接见控制列表中都被作为一个自力的接见控制单位(ACE)中断定义,当定义了多条准绳时,他们遵照从上到下的按次被评价,直到最初一条定义权限的准绳,这就意味着一个拒绝接见某个资源的角色可以被赋予一个用户,然则假设这个用户又作为一个委托人定义在文件中时,这个定义将掩饰角色的定义,哄骗POSITION参数保证权限是按按次中断评价的。

哄骗DELETE_PRIVILEGE存储历程移除权限,假设IS_GRANT或PRIVILEGE参数的值是NULL,将移除全部赋予的权限。

BEGIN
  DBMS_NETWORK_ACL_ADMIN.delete_privilege ( 
    acl         => 'test_acl_file.xml', 
    principal   => 'TEST2',
    is_grant    => FALSE, 
    privilege   => 'connect');
  COMMIT;
END;
/

哄骗DROP_ACL删除接见控制列表

BEGIN
  DBMS_NETWORK_ACL_ADMIN.drop_acl ( 
    acl         => 'test_acl_file.xml');
  COMMIT;
END;
/





版权声明: 原创作品,容许转载,转载时请务必以超链接体式格式标明文章 原始来由 、作者信息和本声明。不然将追查法令责任。

原文地址:https://www.cnblogs.com/zgqjymx/p/1974862.html