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
Interface for authenticating and impersonating EXTPROC callout functions, as well as external jobs, remote jobs and file watchers from the SCHEDULER.
Owned by SYS with EXECUTE granted to PUBLIC which
seems like a gross violation of "best practice" for security as certainly
no-one with only CREATE SESSION privilege needs to execute this package. This
grant should be revoked and only granted as required.
dbms_credential.create_credential(
credential_name IN VARCHAR2,
username IN VARCHAR2,
password IN VARCHAR2,
database_role IN VARCHAR2 DEFAULT NULL,
windows_domain IN VARCHAR2 DEFAULT NULL,
comments IN VARCHAR2 DEFAULT NULL,
enabled IN BOOLEAN DEFAULT TRUE,
key
IN VARCHAR2 DEFAULT NULL);
dbms_credential.enable_credential(credential_name IN VARCHAR2);
exec dbms_credential.enable_credential('UWCred');
SELECT *
FROM scheduler$_credential;
-- note flag = 4
Code from {ORACLE_HOME}/rdbms/admin/a11020000.sql reformatted for readability
DECLARE
CURSOR creds IS
SELECT owner, credential_name
FROM dba_scheduler_credentials
WHERE username IS NULL;
BEGIN
FOR cred_info IN creds
LOOP
dbms_credential.enable_credential('"'||cred_info.owner||'"."'|| cred_info.credential_name||'"');
END LOOP;
END;
/
dbms_credential.update_credential(
credential_name IN VARCHAR2,
attribute IN VARCHAR2, -- USERNAME, PASSWORD, WINDOWS_DOMAIN, or COMMENTS
value IN VARCHAR2);
col owner format a10
col credential_name format a20
col username format a10
col windows_domain format a15
col comments format a25
col password format a30
SELECT *
FROM dba_credentials;
exec dbms_credential.enable_credential('UWCred');
SELECT *
FROM dba_credentials;
SELECT obj#, username, password
FROM sys.scheduler$_credential;