Skip to Main Content

Oracle Database Discussions

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Interested in getting your voice heard by members of the Developer Marketing team at Oracle? Check out this post for AppDev or this post for AI focus group information.

What exactly are Access control Lists and Access Control Entry (ACE) in Oracle DB ?

Peasant81Aug 2 2022 — edited Aug 2 2022

DB version : 19c on RHEL 7.9

I am familiar with ACLs at OS (Linux) layer.
But, I have never worked with ACLs/ACEs in Oracle database layer.

So, I googled about ACL, ACEs, DBMS_NETWORK_ACL_ADMIN. I have 3 questions.

Question1. Are my below assumptions correct ?

An access control list (ACL) is a list of access control entries (ACEs).
An access control entry (ACE) is an XML element (ace) that is an entry in an access control list (ACL).

Well, definition-wise, ACLs enforce extra security by providing a fine-grained security mechanism which defines

  1. which users or roles
    can perform
  2. which operations
  3. on which data.

Question2. Is an access control list (ACL) a list of access control entries to restrict the hosts that are allowed to connect to the Oracle database ?
Or
are ACLs used to control access by DB users to an external network services ?

Question3. On APPEND_HOST_ACE Procedure

19C documentation says the following about APPEND_HOST_ACE Procedure

"This procedure appends an access control entry (ACE) to the access control list (ACL) of a network host. The ACL controls access to the given host from the database and the ACE specifies the privileges granted to or denied from the specified principal."

https://docs.oracle.com/en/database/oracle/oracle-database/21/arpls/DBMS_NETWORK_ACL_ADMIN.html#GUID-2512526D-0B2A-44BF-890D-03B5BBCB8442

I came across the following command in a key script in my shop.

Does the below command add Access Control Entry (ACE) for WMSUSER01 user for some HTTP service running in bvmsprd214.domain.net server ?
Any idea why lower_port and upper_port arguments are NULL ?

BEGIN
 DBMS_NETWORK_ACL_ADMIN.append_host_ace
 (  host      => 'bvmsprd214.domain.net', 
    lower_port => NULL, 
    upper_port => NULL, 
    ace => xs$ace_type
       (
           privilege_list => xs$name_list('HTTP'), 
           principal_name => 'WMSUSER01', 
           principal_type => xs_acl.ptype_db
       )
 );
END;
/
Comments
Post Details
Added on Aug 2 2022
2 comments
2,503 views