给网络分配一个访问控制列表
使用ASSIGN_ACL存储过程给网络分配访问控制列表,它有下面一些参数:
? acl - 访问控制列表XML文件的名字? host - 主机名,域名,ip地址或分配的子网,主机名大小写敏感,ip地址和域名允许使用通配符? lower_port - 默认值是NULL,为connect权限指定低端口范围? upper_port - 默认值是NULL,如果指定了lower_port,同时upper_port的值为 NULL,它就认为upper_port等同于lower_port
下面的代码展示了前面创建的访问控制列表被分配一个特定的ip地址和一个子网。
BEGIN
DBMS_NETWORK_ACL_ADMIN.assign_acl (
acl => 'test_acl_file.xml',
host => '192.168.2.3',
lower_port => 80,
upper_port => NULL);
DBMS_NETWORK_ACL_ADMIN.assign_acl (
acl => 'test_acl_file.xml',
host => '10.1.10.*',
lower_port => NULL,
upper_port => NULL);
COMMIT;
END;
/
|
只有一个访问控制列表可以分配给一个特殊的主机+端口范围的组合,给主机+端口范围分配一个新的访问控制列表将导致前面分配的访问控制列表被删除,在你开始一个新的分配操作时要特别留意前一个访问控制列表关闭的端口现在又被你打开了,因此分配给192.168.2.3:80的访问控制列表的优先级比分配给192.168.2.*的访问控制列表要高。
UNASSIGN_ACL存储过程允许你手动删除访问控制列表,它使用的参数与ASSIGN_ACL存储过程相同,使用NULL参数作为通配符。
BEGIN
DBMS_NETWORK_ACL_ADMIN.unassign_acl (
acl => 'test_acl_file.xml',
host => '192.168.2.3',
lower_port => 80,
upper_port => NULL);
COMMIT;
END;
/
|
访问控制列表视图
DBA_NETWORK_ACLS, DBA_NETWORK_ACL_PRIVILEGES和USER_NETWORK_ACL_PRIVILEGES视图显示当前的访问控制列表设置,下面预期的输出认为没有执行过delete/drop/unassign操作。
COLUMN host FORMAT A30 COLUMN acl FORMAT A30 SELECT host, lower_port, upper_port, acl FROM dba_network_acls; HOST ------------------------------ 10.1.10.* 192.168.2.3 LOWER_PORT UPPER_PORT ACL 2 rows selected.
SQL>
DBA_NETWORK_ACL_PRIVILEGES视图显示关于与访问控制列表联合的权限信息。
COLUMN acl FORMAT A30
COLUMN principal FORMAT A30
SELECT acl,
principal,
privilege,
is_grant,
TO_CHAR(start_date, 'DD-MON-YYYY') AS start_date,
TO_CHAR(end_date, 'DD-MON-YYYY') AS end_date
FROM dba_network_acl_privileges;
ACL PRINCIPAL
------------------------------ ------------------------------
/sys/acls/test_acl_file.xml TEST1
/sys/acls/test_acl_file.xml TEST2
PRIVILE IS_GR START_DATE END_DATE
|

