15 Oracle Database Vault Realm APIs
The DBMS_MACADM PL/SQL package enables you to configure Oracle Database Vault realms.
               
Only users who have been granted the DV_OWNER or DV_ADMIN role can use these procedures. For constants that you can use with these procedures, see Table 21-1 for more information.
               
- ADD_AUTH_TO_REALM Procedure
 TheADD_AUTH_TO_REALMprocedure authorizes a user or role to access a realm as an owner or a participant. You can authenticate both common and local realms.
- ADD_OBJECT_TO_REALM Procedure
 TheADD_OBJECT_TO_REALMprocedure registers a set of objects for realm protection.
- CREATE_REALM Procedure
 TheCREATE_REALMprocedure creates both common and local realms.
- DELETE_AUTH_FROM_REALM Procedure
 TheDELETE_AUTH_FROM_REALMprocedure removes the authorization of a user or role to access a realm.
- DELETE_OBJECT_FROM_REALM Procedure
 TheDELETE_OBJECT_FROM_REALMprocedure removes a set of objects from realm protection.
- DELETE_REALM Procedure
 TheDELETE_REALMprocedure deletes a realm, including its related configuration information that specifies who is authorized and what objects are protected.
- DELETE_REALM_CASCADE Procedure
 TheDELETE_REALM_CASCADEprocedure deletes a realm, including its related Database Vault configuration information that specifies who is authorized and the objects that are protected.
- RENAME_REALM Procedure
 TheRENAME_REALMprocedure renames a realm; the name change takes effect everywhere the realm is used.
- UPDATE_REALM Procedure
 TheUPDATE_REALMprocedure updates a realm.
- UPDATE_REALM_AUTH Procedure
 TheUPDATE_REALM_AUTHprocedure updates the authorization of a user or role to access a realm.
15.1 ADD_AUTH_TO_REALM Procedure
The ADD_AUTH_TO_REALM procedure authorizes a user or role to access a realm as an owner or a participant. You can authenticate both common and local realms.
                  
Optionally, you can specify a rule set that must be checked before allowing the authorization to be enabled.
Syntax
DBMS_MACADM.ADD_AUTH_TO_REALM( realm_name IN VARCHAR2, grantee IN VARCHAR2, rule_set_name IN VARCHAR2, auth_options IN NUMBER auth_scope IN NUMBER DEFAULT);
Parameters
Table 15-1 ADD_AUTH_TO_REALM Parameters
| Parameter | Description | 
|---|---|
| 
 | Realm name, which can be 128 characters in mixed case. To find the existing realms in the current database instance, query the  | 
| 
 | User or role name to authorize as an owner or a participant. To find the existing users and roles in the current database instance, query the  To find the authorization of a particular user or role, query the  To find existing secure application roles used in privilege management, query the  | 
| 
 | Optional. The rule set to check during runtime. The realm authorization is enabled only if the rule set evaluates to  To find the available rule sets, query the  | 
| 
 | Optional. Specify one of the following options to authorize the realm: 
 A realm can have multiple owners or participants. See Related Topics for more information about participants and owners. | 
| 
 | Determines how to execute this procedure. The default is  
 | 
Examples
The following example authorizes user PSMITH as a participant in the HR Apps realm. Because the default is to authorize the user as a participant, the auth_options parameter can be omitted. 
                     
BEGIN DBMS_MACADM.ADD_AUTH_TO_REALM( realm_name => 'HR Apps', grantee => 'PSMITH'); END; /
This example sets user PSMITH as the owner of the HR Apps realm. 
                     
BEGIN DBMS_MACADM.ADD_AUTH_TO_REALM( realm_name => 'HR Apps', grantee => 'PSMITH', auth_options => DBMS_MACUTL.G_REALM_AUTH_OWNER); END; /
The next example triggers the Check Conf Access rule set before allowing user PSMITH to act as the owner of the HR Apps realm. 
                     
BEGIN DBMS_MACADM.ADD_AUTH_TO_REALM( realm_name => 'HR Apps', grantee => 'PSMITH', rule_set_name => 'Check Conf Access', auth_options => DBMS_MACUTL.G_REALM_AUTH_OWNER); END; /
This example shows how to commonly grant the common user C##HR_ADMIN access to the common realm HR Statistics Realm. The user running this procedure must be in the CDB root, and the rule set must be a common rule set residing in the application root.
                     
BEGIN DBMS_MACADM.ADD_AUTH_TO_REALM( realm_name => 'HR Statistics Realm', grantee => 'C##HR_ADMIN', rule_set_name => 'Check Access', auth_options => DBMS_MACUTL.G_REALM_AUTH_OWNER, auth_scope => DBMS_MACUTL.G_SCOPE_COMMON); END; /
This example shows how to locally grant the common user C##HR_CLERK access to the common realm HR Statistics Realm. The user running this procedure must be in the same PDB in which the authorization applies. To find the existing PDBs query the DBA_PDBS data dictionary view. The rule set must be a local rule set.
                     
BEGIN DBMS_MACADM.ADD_AUTH_TO_REALM( realm_name => 'HR Statistics Realm', grantee => 'C##HR_CLERK', rule_set_name => 'Check Access', auth_options => DBMS_MACUTL.G_REALM_AUTH_OWNER, auth_scope => DBMS_MACUTL.G_SCOPE_LOCAL); END; /
Related Topics
Parent topic: Oracle Database Vault Realm APIs
15.2 ADD_OBJECT_TO_REALM Procedure
The ADD_OBJECT_TO_REALM procedure registers a set of objects for realm protection.
                  
Syntax
DBMS_MACADM.ADD_OBJECT_TO_REALM( realm_name IN VARCHAR2, object_owner IN VARCHAR2, object_name IN VARCHAR2, object_type IN VARCHAR2);
Parameters
Table 15-2 ADD_OBJECT_TO_REALM Parameters
| Parameter | Description | 
|---|---|
| 
 | Realm name, which can be 128 characters in mixed case. To find the existing realms in the current database instance, query the  | 
| 
 | The owner of the object that is being added to the realm. If you add a role to a realm, the object owner of the role is shown as  To find the available users, query the  To find the authorization of a particular user or role, query the  | 
| 
 | Object name. The wildcard % is allowed, to specify all objects (except roles) for the object owner that you have specified. If you enter  To find the available objects, query the  To find objects that are secured by existing realms, query the  | 
| 
 | Object type, such as  You can also use the  | 
Example
BEGIN DBMS_MACADM.ADD_OBJECT_TO_REALM( realm_name => 'HR Apps', object_owner => '%', object_name => 'HR_SELECT_ROLE', object_type => 'ROLE'); END; /
Related Topics
Parent topic: Oracle Database Vault Realm APIs
15.3 CREATE_REALM Procedure
The CREATE_REALM procedure creates both common and local realms.
                  
After you create the realm, use the following procedures to complete the realm definition:
- 
                           ADD_OBJECT_TO_REALMprocedure registers one or more objects for the realm.
- 
                           ADD_AUTH_TO_REALMprocedure authorizes users or roles for the realm.
Syntax
DBMS_MACADM.CREATE_REALM( realm_name IN VARCHAR2, description IN VARCHAR2 DEFAULT, enabled IN VARCHAR2 DEFAULT, audit_options IN NUMBER DEFAULT, realm_type IN NUMBER DEFAULT, realm_scope IN NUMBER DEFAULT, pl_sql_stack IN BOOLEAN DEFAULT);
Parameters
Table 15-3 CREATE_REALM Parameters
| Parameter | Description | 
|---|---|
| 
 | Realm name, up to 128 characters in mixed-case. Oracle suggests that you use the name of the protected application as the realm name (for example,  To find the existing realms in the current database instance, query the  | 
| 
 | Description of the purpose of the realm, up to 1024 characters in mixed-case. If you omit this setting, then it defaults to an empty string. You may want to include a description for the business objective of the given application protection and document all other security policies that compliment the realm's protection. Also document who is authorized to the realm, for what purpose, and any possible emergency authorizations. | 
| 
 | Controls realm checking and the ability of SQL statements to capture simulation log violations. If you omit this setting, then it defaults to  
 | 
| 
 | Specify
          Only the  | 
| 
 | Controls whether the realm is regular or mandatory. If you omit this setting, then it defaults to  
 | 
| 
 | Determines how to execute this procedure. The default is  
 If you create the common realm in an application root and want it visible to the associated PDBs, then you must synchronize the application. For example: ALTER PLUGGABLE DATABASE APPLICATION saas_sales_app SYNC; | 
| 
 | When simulation mode is enabled, specifies whether to record the PL/SQL stack for failed operations. If you omit this setting, then it defaults to  
 | 
Examples
The following example shows how to create a realm that is enabled and uses mandatory realm checking, and records the PL/SQL stack. Auditing is disabled because NULL defaults to DBMS_MACUTL.G_REALM_AUDIT_OFF.
                     
BEGIN DBMS_MACADM.CREATE_REALM( realm_name => 'HR Apps', description => 'Realm to protect the HR schema', enabled => DBMS_MACUTL.G_YES, audit_options => NULL, realm_type => DBMS_MACADM.MANDATORY_REALM, pl_sql_stack => TRUE); END; /
This example shows how to create a variation of the preceding example, but as a common realm located in the application root. The user who creates this realm must be a common user and must run the procedure in the application root. The enabled setting is omitted and so defaults to DBMS_MACUTL.G_YES.
                     
BEGIN DBMS_MACADM.CREATE_REALM( realm_name => 'HR Apps', description => 'Realm to protect the HR schema', audit_options => NULL, realm_type => DBMS_MACADM.MANDATORY_REALM, realm_scope => DBMS_MACUTL.G_SCOPE_COMMON); END; /
This example shows how to create a local version of the preceding example. The user who creates this realm must be in the PDB in which the realm will reside. To find existing PDBs, query the DBA_PDBS data dictionary view.
                     
BEGIN DBMS_MACADM.CREATE_REALM( realm_name => 'HR Apps', description => 'Realm to protect the HR schema', audit_options => DBMS_MACUTL.G_REALM_AUDIT_OFF, realm_type => DBMS_MACADM.MANDATORY_REALM, realm_scope => DBMS_MACUTL.G_SCOPE_LOCAL); END; /
15.4 DELETE_AUTH_FROM_REALM Procedure
The DELETE_AUTH_FROM_REALM procedure removes the authorization of a user or role to access a realm.
                  
Syntax
DBMS_MACADM.DELETE_AUTH_FROM_REALM( realm_name IN VARCHAR2, grantee IN VARCHAR2, auth_scope IN NUMBER DEFAULT);
Parameters
Table 15-4 DELETE_AUTH_FROM_REALM Parameters
| Parameter | Description | 
|---|---|
| 
 | Realm name. To find the existing realms in the current database instance, query the  | 
| 
 | User or role name. To find the authorization of a particular user or role, query the  | 
| 
 | Determines how to execute this procedure. The default is local. Options are as follows: 
 | 
Example
BEGIN DBMS_MACADM.DELETE_AUTH_FROM_REALM( realm_name => 'HR Apps', grantee => 'PSMITH', auth_scope => DBMS_MACUTL.G_SCOPE_LOCAL); END; /
Parent topic: Oracle Database Vault Realm APIs
15.5 DELETE_OBJECT_FROM_REALM Procedure
The DELETE_OBJECT_FROM_REALM procedure removes a set of objects from realm protection. 
                  
Syntax
DBMS_MACADM.DELETE_OBJECT_FROM_REALM( realm_name IN VARCHAR2, object_owner IN VARCHAR2, object_name IN VARCHAR2, object_type IN VARCHAR2);
Parameters
Table 15-5 DELETE_OBJECT_FROM_REALM Parameters
| Parameter | Description | 
|---|---|
| 
 | Realm name. To find the existing realms in the current database instance, query the  | 
| 
 | The owner of the object that was added to the realm. To find the available users, query the  | 
| 
 | Object name. (The wildcard % is allowed.) You can also use the  To find objects that are secured by existing realms, query the  See also Related Topics. | 
| 
 | Object type, such as  You can also use the  See also Related Topics. | 
Example
BEGIN DBMS_MACADM.DELETE_OBJECT_FROM_REALM( realm_name => 'HR Apps', object_owner => '%', object_name => 'HR_SELECT_ROLE', object_type => '%'); END; /
Related Topics
Parent topic: Oracle Database Vault Realm APIs
15.6 DELETE_REALM Procedure
The DELETE_REALM procedure deletes a realm, including its related configuration information that specifies who is authorized and what objects are protected.
                  
This procedure does not delete the actual database objects or users.
To find users who are authorized for the realm, query the DBA_DV_REALM_AUTH view. To find the objects that are protected by the realm, query the DBA_DV_REALM_OBJECT view. 
                     
Syntax
DBMS_MACADM.DELETE_REALM( realm_name IN VARCHAR2);
Parameters
Table 15-6 DELETE_REALM Parameter
| Parameter | Description | 
|---|---|
| 
 | Realm name. To find the existing realms in the current database instance, query the  | 
Example
EXEC DBMS_MACADM.DELETE_REALM ('HR Apps');Parent topic: Oracle Database Vault Realm APIs
15.7 DELETE_REALM_CASCADE Procedure
The DELETE_REALM_CASCADE procedure deletes a realm, including its related Database Vault configuration information that specifies who is authorized and the objects that are protected. 
                  
The DBA_DV_REALM_AUTH view lists who is authorized in the realm and the DBA_DV_REALM_OBJECT view lists the protected objects. 
                     
It does not delete the actual database objects or users. This procedure works the same as the DELETE_REALM procedure. (In previous releases, these procedures were different, but now they are the same. Both are retained for earlier compatibility.) To find a listing of the realm-related objects, query the DBA_DV_REALM view. To find its authorizations, query DBA_DV_REALM_AUTH. 
                     
Syntax
DBMS_MACADM.DELETE_REALM_CASCADE( realm_name IN VARCHAR2);
Parameters
Table 15-7 DELETE_REALM_CASCADE Parameter
| Parameter | Description | 
|---|---|
| 
 | Realm name. To find the existing realms in the current database instance, query the  | 
Example
BEGIN DBMS_MACADM.RENAME_REALM( realm_name => 'HR Apps', new_name => 'HR and HCM Apps'); END; /
Parent topic: Oracle Database Vault Realm APIs
15.8 RENAME_REALM Procedure
The RENAME_REALM procedure renames a realm; the name change takes effect everywhere the realm is used.
                  
Syntax
DBMS_MACADM.RENAME_REALM( realm_name IN VARCHAR2, new_name IN VARCHAR2);
Parameters
Table 15-8 RENAME_REALM Parameters
| Parameter | Description | 
|---|---|
| 
 | Current realm name. To find the existing realms in the current database instance, query the  | 
| 
 | New realm name, up to 128 characters in mixed-case. | 
Example
BEGIN DBMS_MACADM.RENAME_REALM( realm_name => 'HR Apps', new_name => 'HR and FIN Apps'); END; /
Parent topic: Oracle Database Vault Realm APIs
15.9 UPDATE_REALM Procedure
The UPDATE_REALM procedure updates a realm.
                  
To find information about the current settings for a realm, query the DVSYS.DV$REALM or DBA_DV_REALM view. 
                     
When you update the audit options in a realm, the existing traditional audit records are disabled. You must create a unified audit policy to capture new audit records.
Syntax
DBMS_MACADM.UPDATE_REALM( realm_name IN VARCHAR2, description IN VARCHAR2 DEFAULT, enabled IN VARCHAR2 DEFAULT, audit_options IN NUMBER DEFAULT, realm_type IN NUMBER DEFAULT, pl_sql_stack IN BOOLEAN DEFAULT);
Parameters
Table 15-9 UPDATE_REALM Parameters
| Parameter | Description | 
|---|---|
| 
 | Realm name. To find the existing realms in the current database instance, query the  | 
| 
 | Description of the purpose of the realm, up to 1024 characters in mixed-case. If you do not want to change this setting, then omit it or set it to  | 
| 
 | Controls the enablement of the realm. If you do not want to change this setting, then omit it or set it to  NULL.
 | 
| 
 | Perform one of the following actions: 
 Traditional auditing is desupported in Oracle AI Database 26ai. Oracle recommends that you use unified auditing. To audit a realm, you must use unified auditing. See Oracle AI Database Security Guide for an example of how to create a unified audit policy for a realm. | 
| 
 | Determines if a realm is regular of mandatory. If you do not want to change this setting, then omit it or set it to  
 | 
| 
 | When simulation mode is enabled, specifies whether to record the PL/SQL stack for failed operations. If you do not want to change this setting, then omit it or set it to  
 | 
Example
description,
    enabled, and audit_options settings are omitted because their
   values did not need to change.
    BEGIN DBMS_MACADM.UPDATE_REALM( realm_name => 'HR Apps', realm_type => DBMS_MACADM.MANDATORY_REALM); END; /
If you did not make any modifications to the audit_options
    parameter of your realm, then the existing traditional audit policy will still be in place. If
    you updated the audit_options parameter of the realm, then this auditing will
    be disabled because traditional auditing is desupported starting in Oracle AI Database 26ai. To create and enable a new unified audit policy, a user must be granted the
     AUDIT_ADMIN
                        Oracle AI
                                Database role and AUDIT_ADMIN Oracle Database Vault authorization. See the below
    example for creating a new unified audit policy:
    
                     
CREATE AUDIT POLICY hr_app_aud_pol
 ACTIONS COMPONENT=DV Realm Violation ON "HR Apps";
AUDIT POLICY hr_app_aud_pol;You can view the audit records by querying the UNIFIED_AUDIT_TRAIL
    data dictionary view. See How Oracle Oracle AI Database
                                        Security Guide for how this works. 
                     
15.10 UPDATE_REALM_AUTH Procedure
The UPDATE_REALM_AUTH procedure updates the authorization of a user or role to access a realm. 
                  
Syntax
DBMS_MACADM.UPDATE_REALM_AUTH( realm_name IN VARCHAR2, grantee IN VARCHAR2, rule_set_name IN VARCHAR2, auth_options IN NUMBER, auth_scope IN NUMBER DEFAULT);
Parameters
Table 15-10 UPDATE_REALM_AUTH Parameters
| Parameter | Description | 
|---|---|
| 
 | Realm name. To find the existing realms in the current database instance, query the  | 
| 
 | User or role name. To find the available users and roles in the current database instance, query the DBA_USERS and DBA_ROLES data dictionary views. To find the authorization of a particular user or role, query the  To find existing secure application roles used in privilege management, query the  | 
| 
 | Optional. A rule set to check during runtime. The realm authorization is enabled only if the rule set evaluates to  To find the available rule sets, query the  | 
| 
 | Optional. Specify one of the following options to authorize the realm: 
 The default for  | 
| 
 | Determines how to execute this procedure. The default is local. Options are as follows: 
 | 
Example
BEGIN DBMS_MACADM.UPDATE_REALM_AUTH( realm_name => 'HR Apps', grantee => 'HR_SELECT_ROLE', rule_set_name => 'Check Conf Access', auth_options => DBMS_MACUTL.G_REALM_AUTH_OWNER); END; /
Parent topic: Oracle Database Vault Realm APIs