给网络分配一个访问控制列表
使用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操作。
DBA_NETWORK_ACLS视图显示关于网络和访问控制列表分配的信息。
COLUMN host FORMAT A30
COLUMN acl FORMAT A30
SELECT host, lower_port, upper_port, acl
FROM dba_network_acls;
HOST LOWER_PORT UPPER_PORT ACL
------------------------------ ---------- ---------- ------------------------------
10.1.10.* /sys/acls/test_acl_file.xml
192.168.2.3 80 80 /sys/acls/test_acl_file.xml
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 PRIVILE IS_GR START_DATE END_DATE
------------------------------ ------------------------------ ------- ----- ----------- -----------
/sys/acls/test_acl_file.xml TEST1 connect true 02-APR-2008
/sys/acls/test_acl_file.xml TEST2 connect false
2 rows selected.
SQL>
USER_NETWORK_ACL_PRIVILEGES视图显示当前用户网络访问控制列表设置。
CONN test1/test1@db11g
COLUMN host FORMAT A30
SELECT host, lower_port, upper_port, privilege, status
FROM user_network_acl_privileges;
HOST LOWER_PORT UPPER_PORT PRIVILE STATUS
------------------------------ ---------- ---------- ------- -------
10.1.10.* connect GRANTED
192.168.2.3 80 80 connect GRANTED
2 rows selected.
SQL>
CONN test2/test2@db11g
COLUMN host FORMAT A30
SELECT host, lower_port, upper_port, privilege, status
FROM user_network_acl_privileges;
HOST LOWER_PORT UPPER_PORT PRIVILE STATUS
------------------------------ ---------- ---------- ------- -------
10.1.10.* connect DENIED
192.168.2.3 80 80 connect DENIED
2 rows selected.
SQL>