ACE Director Alum Daniel Morgan, founder of Morgan's Library, is scheduling
complimentary technical Workshops on Database Security for the first 30
Oracle Database customers located anywhere in North America, EMEA, LATAM, or
APAC that send an email to
asra_us@oracle.com. Request a Workshop for
your organization today.
Purpose
Provides constants and utilities for use with Oracle Database Vault
AUTHID
DEFINER
Constants
Name
Data Type
Value
Code Groups
G_CODES_AUDIT_EVENTS
VARCHAR2(30)
'AUDIT_EVENTS'
G_CODES_BOOLEAN
VARCHAR2(30)
'BOOLEAN'
G_CODES_DDL_CMDS
VARCHAR2(30)
'DDL_CMDS'
G_CODES_FACTOR_AUDIT
VARCHAR2(30)
'FACTOR_AUDIT'
G_CODES_FACTOR_EVAL
VARCHAR2(30)
'FACTOR_EVALUATE'
G_CODES_FACTOR_FAIL
VARCHAR2(30)
'FACTOR_FAIL'
G_CODES_FACTOR_IDENTIFY
VARCHAR2(30)
'FACTOR_IDENTIFY'
G_CODES_FACTOR_LABEL
VARCHAR2(30)
'FACTOR_LABEL'
G_CODES_DB_OBJECT_TYPE
VARCHAR2(30)
'DB_OBJECT_TYPE'
G_CODES_LABEL_ALG
VARCHAR2(30)
'LABEL_ALG'
G_CODES_MESSAGES
VARCHAR2(30)
'DV_MESSAGES'
G_CODES_OPERATORS
VARCHAR2(30)
'OPERATORS'
G_CODES_REALM_AUDIT
VARCHAR2(30)
'REALM_AUDIT'
G_CODES_RULESET_AUDIT
VARCHAR2(30)
'RULESET_AUDIT'
G_CODES_RULESET_EVAL
VARCHAR2(30)
'RULESET_EVALUATE'
G_CODES_RULESET_EVENT
VARCHAR2(30)
'RULESET_EVENT'
G_CODES_RULESET_FAIL
VARCHAR2(30)
'RULESET_FAIL'
G_CODES_SQL_CMDS
VARCHAR2(30)
'SQL_CMDS'
Context: Namespace, Attribute, Value
G_CONTEXT_PREFIX
VARCHAR2(30)
'MAC$'
G_CONTEXT_FACTOR_LABEL
VARCHAR2(30)
g_context_prefix||'F$'
G_CONTEXT_SESSION_LABEL
VARCHAR2(30)
g_context_prefix||'S$'
G_CONTEXT_FACTOR
VARCHAR2(30)
g_context_prefix||'FACTOR'
G_CONTEXT_REALM
VARCHAR2(30)
g_context_prefix||'REALM'
G_MIN_POLICY_LABEL
VARCHAR2(30)
'MIN_POLICY_LABEL'
G_MAX_SESSION_LABEL
VARCHAR2(30)
'MAX_SESSION_LABEL'
G_OLS_SESSION_LABEL
VARCHAR2(30)
'OLS_SESSION_LABEL'
G_USER_POLICY_LABEL
VARCHAR2(30)
'USER_POLICY_LABEL'
Database Vault Realm Scope
G_SCOPE_LOCAL
NUMBER
1
G_SCOPE_COMMON
NUMBER
2
Datapump Authorization Actions
G_DP_ACT_ALL
VARCHAR2(30)
'%'
G_DP_ACT_CREATE_USER
VARCHAR2(30)
'CREATE_USER'
G_DP_ACT_GRANT
VARCHAR2(30)
'GRANT'
G_DP_ACT_TABLE
VARCHAR2(30)
'TABLE'
Factor Audit Options
G_AUDIT_OFF
NUMBER
0
G_AUDIT_ALWAYS
NUMBER
POWER(2,0)
G_AUDIT_ON_GET_ERROR
NUMBER
POWER(2,1)
G_AUDIT_ON_GET_NULL
NUMBER
POWER(2,2)
G_AUDIT_ON_VALIDATE_ERROR
NUMBER
POWER(2,3)
G_AUDIT_ON_VALIDATE_FLASE
NUMBER
POWER(2,4)
G_AUDIT_ON_TRUST_LEVEL_NULL
NUMBER
POWER(2,5)
G_AUDIT_ON_TRUST_LEVEL_NEG
NUMBER
POWER(2,6)
Factor Identify By Column
G_IDENTIFY_BY_CONSTANT
NUMBER
0
G_IDENTIFY_BY_METHOD
NUMBER
1
G_IDENTIFY_BY_FACTOR
NUMBER
2
G_IDENTIFY_BY_CONTEXT
NUMBER
3
Factor Evaluation Options
G_EVAL_ON_SESSION
NUMBER
0
G_EVAL_ON_ACCESS
NUMBER
1
G_EVAL_ON_STARTUP
NUMBER
2
Factor Labeled By Column
G_LABELED_BY_SELF
NUMBER
0
G_LABELED_BY_FACTORS
NUMBER
1
Fail Options
G_FAIL_WITH_MESSAGE
NUMBER
POWER(2,0)
G_FAIL_SILENTLY
NUMBER
POWER(2,1)
Realm Audit Options
G_REALM_AUDIT_OFF
NUMBER
0
G_REALM_AUDIT_FAIL
NUMBER
POWER(2,0)
G_REALM_AUDIT_SUCCESS
NUMBER
POWER(2,1)
Realm Authorizations
G_REALM_AUTH_PARTICIPANT
NUMBER
0
G_REALM_AUTH_OWNER
NUMBER
1
Realm Objects
G_ALL_OBJECT
VARCHAR2(1)
'%'
Rule Set Audit Options
G_RULESET_AUDIT_OFF
NUMBER
0
G_RULESET_AUDIT_FAIL
NUMBER
POWER(2,0)
G_RULESET_AUDIT_SUCCESS
NUMBER
POWER(2,1)
Rule Set Evaluation Options
G_RULESET_EVAL_ALL
NUMBER
1
G_RULESET_EVAL_ANY
NUMBER
2
Rule Set Fail Options
G_RULESET_FAIL_SHOW
NUMBER
1
G_RULESET_FAIL_SILENT
NUMBER
2
Rule Set Handler Options
G_RULESET_HANDLER_OFF
NUMBER
0
G_RULESET_HANDLER_FAIL
NUMBER
POWER(2,0)
G_RULESET_HANDLER_SUCCESS
NUMBER
POWER(2,1)
Simulation/Training
G_SIMULATION
VARCHAR2(1)
'S'
Yes/No Constants
G_NO
VARCHAR2(1)
'N'
G_YES
VARCHAR2(1)
'Y'
Data Types
-
Dependencies
ALL_REGISTRY_BANNERS
DBMS_MACOLS_SESSION
FACTOR$
ALL_USERS
DBMS_MACSEC
KZV$UTL_LIBT
CHECK_FULL_DVAUTH
DBMS_MACSEC_ROLES
OLS$PROPS
CHECK_TAB_DVAUTH
DBMS_MACSEC_RULES
OUT
CHECK_TS_DVAUTH
DBMS_STANDARD
PLITBLM
CODE$
DBMS_UTILITY
ROLENAME_ARRAY
CONFIGURE_DV_INTERNAL
DV$CODE
ROLE_ARRAY
DBA_SYS_PRIVS
EVALUATE_RULE_SET
SESSION_CONTEXT
DBMS_ASSERT
EVENT_STATUS
UTL_LMS
DBMS_MACADM
EVENT_STATUS_ROW_TYPE
V_$OPTION
DBMS_MACOLS
EVENT_STATUS_TABLE_TYPE
Documented
Partially: In the Database Vault Administrator's Guide
BEGIN
IF dvsys.dbms_macutl.is_oid_enabled_ols THEN
dbms_output.put_line('Enabled');
ELSE
dbms_output.put_line('Not Enabled');
END IF;
END;
/ Not Enabled
BEGIN
IF dvsys.dbms_macutl.is_ols_installed THEN
dbms_output.put_line('Installed');
ELSE
dbms_output.put_line('Not Installed');
END IF;
END;
/ Installed
Look up an error message, replaces parameters accordingly and raise an exception
Overload 1
dbms_macutl.raise_error(p_message_code IN NUMBER);
PRAGMA SUPPLEMENTAL_LOG_DATA(raise_error, NONE);
TBD
Overload 2
dbms_macutl.raise_error(
p_message_code IN NUMBER,
p_parameter1 IN VARCHAR2);
PRAGMA SUPPLEMENTAL_LOG_DATA(raise_error, NONE);
-- found in $ORACLE_HOME/rdbms/admin/catmact.sql
IF (LENGTH(l_name) > 126) THEN
dvsys.dbms_macutl.raise_error(47951,'factor_name');
END IF;
Overload 3
dbms_macutl.raise_error(
p_message_code IN NUMBER,
p_parameter1 IN VARCHAR2,
p_parameter2 IN VARCHAR2);
PRAGMA SUPPLEMENTAL_LOG_DATA(raise_error, NONE);
TBD
Overload 4
dbms_macutl.raise_error(
p_message_code IN NUMBER,
p_parameter1 IN VARCHAR2,
p_parameter2 IN VARCHAR2,
p_parameter3 IN VARCHAR2);
PRAGMA SUPPLEMENTAL_LOG_DATA(raise_error, NONE);
TBD
Overload 5
dbms_macutl.raise_error(
p_message_code IN NUMBER,
p_parameter1 IN VARCHAR2,
p_parameter2 IN VARCHAR2,
p_parameter3 IN VARCHAR2,
p_parameter4 IN VARCHAR2);
PRAGMA SUPPLEMENTAL_LOG_DATA(raise_error, NONE);
TBD
Overload 6
dbms_macutl.raise_error(
p_message_code IN NUMBER,
p_parameter1 IN VARCHAR2,
p_parameter2 IN VARCHAR2,
p_parameter3 IN VARCHAR2,
p_parameter4 IN VARCHAR2,
p_parameter5 IN VARCHAR2);
PRAGMA SUPPLEMENTAL_LOG_DATA(raise_error, NONE);
TBD
Overload 7
dbms_macutl.raise_error(
p_message_code IN NUMBER,
p_parameter1 IN VARCHAR2,
p_parameter2 IN VARCHAR2,
p_parameter3 IN VARCHAR2,
p_parameter4 IN VARCHAR2,
p_parameter5 IN VARCHAR2,
p_parameter6 IN VARCHAR2);
PRAGMA SUPPLEMENTAL_LOG_DATA(raise_error, NONE);
Looks like a zero-value throw away. If you want to raise an exception use RAISE_APPLICATION_ERROR
dbms_macutl.raise_unauthorized_operation(p_user IN VARCHAR2);
PRAGMA SUPPLEMENTAL_LOG_DATA(raise_unauthorized_operation, NONE);
exec dvsys.dbms_macutl.raise_unauthorized_operation('UWCLASS');
BEGIN dvsys.dbms_macutl.raise_unauthorized_operation('UWCLASS'); END;
*
ERROR at line 1:
ORA-47920: Authorization failed for user UWCLASS to perform this operation
ORA-06512: at "DVSYS.DBMS_MACUTL", line 34
ORA-06512: at "DVSYS.DBMS_MACUTL", line 389
ORA-06512: at "DVSYS.DBMS_MACUTL", line 525
ORA-06512: at line 1
Checks whether a user has a role granted directly or indirectly (via another role)
with a sufficient scope or the role currently is enabled in the session while the role is not granted
dbms_macutl.role_granted_enabled_varchar(
p_role IN VARCHAR2,
p_user IN VARCHAR2
DEFAULT sys.dbms_assert.enquote_name(SYS_CONTEXT('USERENV', 'CURRENT_USER'), FALSE),
p_profile IN INTEGER DEFAULT 1,
p_scope IN VARCHAR2 := 'LOCAL')
RETURN VARCHAR2;
PRAGMA SUPPLEMENTAL_LOG_DATA(role_granted_enabled_varchar, NONE);
-- found in $ORACLE_HOME/rdbms/admin/dve20.sql
BEGIN
SELECT count(bugno) into :bug FROM sys.registry$backports WHERE bugno=31993795;
IF :bug = 0 THEN
UPDATE DVSYS.rule$ SET rule_expr =
'DVSYS.DBMS_MACUTL.ROLE_GRANTED_ENABLED_VARCHAR(''DBA'',''"'' ||
dvsys.dv_login_user || ''"'') = ''Y''' where id# = 4;
END IF;
END;
/
Checks whether a user or role may access an object via a object privilege grant
dbms_macutl.user_has_object_privilege(
p_user IN VARCHAR2,
p_object_owner IN VARCHAR2,
p_object_name IN VARCHAR2,
p_privilege IN VARCHAR2,
p_profile IN BOOLEAN DEFAULT TRUE)
RETURN BOOLEAN;
PRAGMA SUPPLEMENTAL_LOG_DATA(user_has_object_privilege, NONE);
SELECT dvsys.dbms_macutl.validate_name('C## UWCLASS')
FROM dual;
SELECT dvsys.dbms_macutl.validate_name('C## UWCLASS')
*
ERROR at line 1:
ORA-44003: invalid SQL name
ORA-06512: at "SYS.DBMS_ASSERT", line 215
ORA-06512: at "DVSYS.DBMS_MACUTL", line 781