XS_ACL Package
The XS_ACL
package creates procedures to create and manage Access Control Lists (ACLs).
Security Model for the XS_ACL Package
The XS_ACL
package is created under the SYS
schema.
The DBA
role is granted the ADMIN_ANY_SEC_POLICY
privilege, which allows it to administer schema objects like ACLs, security classes, and security policies across all schemas.
Users can administer schema objects in their own schema if they have been granted the RESOURCE
role for the schema. The RESOURCE
role and the XS_RESOURCE
application role include the ADMIN_SEC_POLICY
privilege, required to administer schema objects in the schema as well as administering the policy artifacts within the granted schema to achieve policy management within an application.
Users can administer policy enforcement on the schema if they have been granted the APPLY_SEC_POLICY
privilege. With this privilege, the user can administer policy enforcement within granted schemas to achieve policy management within an application.
Constants
The following constants define the parent ACL type:
EXTENDED CONSTANT PLS_INTEGER := 1; CONSTRAINED CONSTANT PLS_INTEGER := 2;
The following constants define the principal's type:
PTYPE_XS CONSTANT PLS_INTEGER := 1; PTYPE_DB CONSTANT PLS_INTEGER := 2; PTYPE_DN CONSTANT PLS_INTEGER := 3; PTYPE_EXTERNAL CONSTANT PLS_INTEGER := 4;
The following constants define the parameter's value type:
TYPE_NUMBER CONSTANT PLS_INTEGER := 1; TYPE_VARCHAR CONSTANT PLS_INTEGER := 2;
Object Types, Constructor Functions, Synonyms, and Grants
The following object types, constructor functions, synonyms, and GRANT
statements are defined for this package.
-- Type definition for ACE CREATE OR REPLACE TYPE XS$ACE_TYPE AS OBJECT ( -- Member Variables privilege_list XS$NAME_LIST, is_grant_ace NUMBER, is_invert_principal NUMBER, principal_name VARCHAR2(130), principal_type NUMBER, start_date TIMESTAMP WITH TIME ZONE, end_date TIMESTAMP WITH TIME ZONE, CONSTRUCTOR FUNCTION XS$ACE_TYPE ( privilege_list IN XS$NAME_LIST, granted IN BOOLEAN := TRUE, inverted IN BOOLEAN := FALSE, principal_name IN VARCHAR2, principal_type IN PLS_INTEGER := 1, start_date IN TIMESTAMP WITH TIME ZONE := NULL, end_date IN TIMESTAMP WITH TIME ZONE := NULL) RETURN SELF AS RESULT, MEMBER PROCEDURE set_privileges(privilege_list IN XS$NAME_LIST), MEMBER FUNCTION get_privileges RETURN XS$NAME_LIST, MEMBER PROCEDURE set_grant(granted IN BOOLEAN), MEMBER FUNCTION is_granted RETURN BOOLEAN, MEMBER PROCEDURE set_inverted_principal(inverted IN BOOLEAN), MEMBER FUNCTION is_inverted_principal RETURN BOOLEAN, MEMBER PROCEDURE set_principal(principal_name IN VARCHAR2), MEMBER FUNCTION get_principal RETURN VARCHAR2, MEMBER PROCEDURE set_principal_type (principal_type IN PLS_INTEGER), MEMBER FUNCTION get_principal_type RETURN PLS_INTEGER, MEMBER PROCEDURE set_start_date(start_date IN TIMESTAMP WITH TIME ZONE), MEMBER FUNCTION get_start_date RETURN TIMESTAMP WITH TIME ZONE, MEMBER PROCEDURE set_end_date(end_date IN TIMESTAMP WITH TIME ZONE), MEMBER FUNCTION get_end_date RETURN TIMESTAMP WITH TIME ZONE ); CREATE OR REPLACE TYPE XS$ACE_LIST AS VARRAY(1000) OF XS$ACE_TYPE;
Summary of XS_ACL Subprograms
Table 11-3 Summary of XS_ACL Subprograms
Subprogram | Description |
---|---|
Creates an Access Control List (ACL). |
|
Adds one or more Access Control Entries (ACEs) to an existing ACL. |
|
Removes all ACEs from an ACL. |
|
Sets or modifies the security class for an ACL. |
|
Sets or modifies the parent ACL for an ACL. |
|
Adds an ACL parameter value for a data security policy. |
|
Removes ACL parameters and values for an ACL. |
|
Sets a description string for an ACL. |
|
Deletes the specified ACL. |
This section describes the following XS_ACL subprograms:
CREATE_ACL Procedure
The CREATE_ACL
procedure creates a new Access Control List (ACL).
Syntax
XS_ACL.CREATE_ACL ( name IN VARCHAR2, ace_list IN XS$ACE_LIST, sec_class IN VARCHAR2 := NULL, parent IN VARCHAR2 := NULL, inherit_mode IN PLS_INTEGER := NULL, description IN VARCHAR2 := NULL);
Parameters
Parameter | Description |
---|---|
|
The name of the ACL to be created. The name is schema qualified, for example, |
|
The list of Access Control Entries (ACEs) in the ACL. |
|
The name of the security class that specifies the scope or type of the ACL. If no security class is specified, then the The name is schema qualified, for example, |
|
The parent ACL name, if any. The name is schema qualified, for example, |
|
The inheritance mode if a parent ACL is specified. The allowed values are: |
|
An optional description for the ACL. |
Examples
The following example creates an ACL called HRACL
. This ACL includes ACEs contained in ace_list
. The privileges used in ace_list
are part of the HRPRIVS
security class.
DECLARE ace_list XS$ACE_LIST; BEGIN ace_list := XS$ACE_LIST( XS$ACE_TYPE(privilege_list=>XS$NAME_LIST('"SELECT"','VIEW_SENSITIVE_INFO'), granted=>true, principal_name=>'HRREP'), XS$ACE_TYPE(privilege_list=>XS$NAME_LIST('UPDATE_INFO'), granted=>true, principal_name=>'HRMGR')); SYS.XS_ACL.CREATE_ACL(name=>'HRACL', ace_list=>ace_list, sec_class=>'HRPRIVS', description=>'HR Representative Access'); END;
APPEND_ACES Procedure
The APPEND_ACES
procedure adds one or more ACE to an existing ACL.
Syntax
XS_ACL.APPEND_ACES ( acl IN VARCHAR2, ace IN XS$ACE_TYPE); XS.ACL.APPEND_ACES ( acl IN VARCHAR2, ace_list IN XS$ACE_LIST);
Parameters
Parameter | Description |
---|---|
|
The name of the ACL to which the ACE is to be added. The name is schema qualified, for example, |
|
The ACE to be added to the ACL. |
|
The list of ACEs to be added to the ACL. |
Examples
The following example adds an ACE to the HRACL
ACL. The ACE grants the SELECT
privilege to the DB_HR
database user.
DECLARE
ace_entry XS$ACE_TYPE;
BEGIN
ace_entry := XS$ACE_TYPE(privilege_list=>XS$NAME_LIST('"SELECT"'),
granted=>true,
principal_name=>'DB_HR',
principal_type=>XS_ACL.PTYPE_DB);
SYS.XS_ACL.APPEND_ACES('HRACL',ace_entry);
END;
REMOVE_ACES Procedure
The REMOVE_ACES
procedure removes all ACEs from an ACL.
Syntax
XS_ACL.REMOVE_ACES ( acl IN VARCHAR2);
Parameters
Parameter | Description |
---|---|
|
The name of the ACL from which the ACEs are to be removed. The name is schema qualified, for example, |
Examples
The following example removes all ACEs from the ACL called HRACL
:
BEGIN SYS.XS_ACL.REMOVE_ACES('HRACL'); END;
SET_SECURITY_CLASS Procedure
The SET_SECURITY_CLASS
procedure sets or modifies the security class for an ACL.
Syntax
XS_ACL.SET_SECURITY_CLASS ( acl IN VARCHAR2, sec_class IN VARCHAR2);
Parameters
Parameter | Description |
---|---|
|
The name of the ACL for which the security class is to be set. The name is schema qualified, for example, |
|
The name of the security class that defines the ACL scope or type. The name is schema qualified, for example, |
Examples
The following example associates the HRPRIVS
security class with the HRACL
ACL:
BEGIN SYS.XS_ACL.SET_SECURITY_CLASS('HRACL','HRPRIVS'); END;
SET_PARENT_ACL Procedure
The SET_PARENT_ACL
sets or modifies the parent ACL for an ACL.
Syntax
XS_ACL.SET_PARENT_ACL( acl IN VARCHAR2, parent IN VARCHAR2, inherit_mode IN PLS_INTEGER);
Parameters
Parameter | Description |
---|---|
|
The name of the ACL whose parent needs to be set. The name is schema qualified, for example, |
|
The name of the parent ACL. The name is schema qualified, for example, |
|
The inheritance mode. This can be one of the following values:
|
Examples
The following example sets the AllDepACL
ACL as the parent ACL for the HRACL
ACL. The inheritance type is set to EXTENDED
.
BEGIN SYS.XS_ACL.SET_PARENT_ACL('HRACL','AllDepACL',XS_ACL.EXTENDED); END;
ADD_ACL_PARAMETER Procedure
The ADD_ACL_PARAMETER
adds an ACL parameter value for a data security policy.
Syntax
XS_ACL.ADD_ACL_PARAMETER ( acl IN VARCHAR2, policy IN VARCHAR2, parameter IN VARCHAR2, value IN NUMBER); XS_ACL.ADD_ACL_PARAMETER ( acl IN VARCHAR2, policy IN VARCHAR2, parameter IN VARCHAR2, value IN VARCHAR2);
Parameters
Parameter | Description |
---|---|
|
The name of the ACL to which the parameter is to be added. The name is schema qualified, for example, |
|
The name of the data security policy for which the ACL parameter has been created. The name is schema qualified, for example, |
|
The name of the ACL parameter as defined by the data security policy. |
|
The value of the ACL parameter to be used. |
Examples
The following example adds the REGION
parameter for ACL1
. The name of the data security policy for which the ACL parameter is created is TEST_DS
. The value of the REGION
parameter is WEST
.
BEGIN SYS.XS_ACL.ADD_ACL_PARAMETER('ACL1','TEST_DS','REGION', 'WEST'); END;
REMOVE_ACL_PARAMETERS Procedure
The REMOVE_ACL_PARAMETERS
removes the specified ACL parameter for an ACL. If no parameter name is specified, then all ACL parameters for the ACL are removed.
Syntax
XS_ACL.REMOVE_ACL_PARAMETERS ( acl IN VARCHAR2, parameter IN VARCHAR2); XS_ACL.REMOVE_ACL_PARAMETERS ( acl IN VARCHAR2);
Parameters
Parameter | Description |
---|---|
|
The name of the ACL from which the parameter(s) are to be removed. The name is schema qualified, for example, |
|
The name of the parameter that needs to be removed from the ACL. |
Examples
The following example removes the REGION
parameter from the ACL1
ACL:
BEGIN XS_ACL.REMOVE_ACL_PARAMETERS('ACL1', 'REGION'); END;
The following example removes all ACL parameters for ACL1
.
BEGIN SYS.XS_ACL.REMOVE_ACL_PARAMETERS('ACL1'); END;
SET_DESCRIPTION Procedure
The SET_DESCRIPTION
procedure sets a description string for an ACL.
Syntax
XS_ACL.SET_DESCRIPTION ( acl IN VARCHAR2, description IN VARCHAR2);
Parameters
Parameter | Description |
---|---|
|
The name of the ACL for which the description is to be set. The name is schema qualified, for example, |
|
A string description for the ACL. |
Examples
The following example sets a description for the HRACL
ACL:
BEGIN SYS.XS_ACL.SET_DESCRIPTION('HRACL','Grants privileges to HR representatives and managers.'); END;
DELETE_ACL Procedure
The DELETE_ACL
procedure deletes the specified ACL.
Syntax
XS_ACL.DELETE_ACL ( acl IN VARCHAR2, delete_option IN PLS_INTEGER := XS_ADMIN_UTIL.DEFAULT_OPTION);
Parameters
Parameter | Description |
---|---|
|
The name of the ACL to be deleted. The name is schema qualified, for example, |
|
The delete option to use. To the data security policy, the behavior of the following options is the same:
|
Examples
The following example deletes the HRACL
ACL using the default delete option:
BEGIN SYS.XS_ACL.DELETE_ACL('HRACL'); END;