Fine-Grained Access Control (FGAC) on Network Services: Oracle supplied PL/SQL utility packages such as utl_tcp, utl_smtp, utl_mail, utl_http and utl_inaddr that provides access to network services now have (in 11G) enhanced security available. Rather than public being granted execute privileges on these packages, Oracle now has you create an ACCESS CONTROL LIST (ACL) in order to use these packages.
ACL Related Data Dictionary VIEWS: DBA_NETWORK_ACLS and [DBA/USER]_NETWORK_ACL_PRIVILEGES
ACL Related Data Dictionary VIEWS: DBA_NETWORK_ACLS and [DBA/USER]_NETWORK_ACL_PRIVILEGES
1. To create ACL: SQL> begin DBMS_NETWORK_ACL_ADMIN.create_acl( acl => 'www.dbaref.com-permissions.xml', description=>'TEST ACL', principal=>'DBAREF', is_grant=>TRUE, privilege=>'connect'); End; PL/SQL procedure successfully completed. Once the ACL is created , you can add additional user or privileges using the DBMS_NETWORK_ACL_ADMIN.add_privileges procedure. SQL> BEGIN DBMS_NETWORK_ACL_ADMIN.add_privilege ( acl => 'www.dbaref.com-permissions.xml', principal => 'SCOTT', is_grant => FALSE, privilege => 'connect', position => NULL, start_date => NULL, end_date => NULL); COMMIT; END; / PL/SQL procedure successfully completed. You can also use DBMS_NETWORK_ACL_ADMIN.delete_privileges package to drop privileges and DBMS_NETWORK_ACL_ADMIN.drop_acl to drop ACL. ASSIGN ACL to NETWORK HOST: SQL> begin DBMS_NETWORK_ACL_ADMIN.assign_acl( acl => 'www.dbaref.com-permissions.xml', host=>'usha'); End; / PL/SQL procedure successfully completed. SQL> Access control lists are assigned to networks using the ASSIGN_ACL procedure, whose parameters are listed below:
The code below shows the ACL created previously being assigned to a specific IP address and a subnet. SQL> BEGIN DBMS_NETWORK_ACL_ADMIN.assign_acl ( acl => 'www.dbaref.com-permissions.xml', host => '198.168.*.*', lower_port => NULL, upper_port => NULL); COMMIT; END; / PL/SQL procedure successfully completed. SQL> SQL> SELECT host, lower_port, upper_port, acl FROM dba_network_acls; HOST LOWER_PORT UPPER_PORT ACL ------------------------------ ---------- ---------- ------------------------------ usha /sys/acls/www.dbaref.com-permissions.xml 198.168.*.* /sys/acls/www.dbaref.com-permissions.xml SQL> SQL> 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/www.dbaref.com-permi DBAREF connect true ssions.xml /sys/acls/www.dbaref.com-permi SCOTT connect false ssions.xml SQL> |