Benutzer-Werkzeuge

Webseiten-Werkzeuge


dba:proxy_connect

Oracle User Proxy Connection verwenden

ab Oracle 9i R2g

Die Idee hinter dem Proxy Connect ist die Anmeldung an einem Schema mit den Credentials eines anderen DB Users, z.b. soll ein persönlicher User sich an dem Schema eines technischen Users anmelden.

D.h. der persönliche User, z.B. ein Datenbank Entwickler, benötigt nicht das Passwort des technischen Schemas um mit diesem Schema zu arbeiten.

Für eine erfolgreiche Anmeldung darf keiner der User gelocked sein. Das Passwort des technischen Users kann aber abgelaufen sein.

 Oracle Proxy User account status matrix

ab Oracle 12c

Proxy only connect! Auf das Schema kann nur noch über Proxy zugegriffen werden!

1. User anlegen und Grant connect through auf diesen User erlauben

#create minimal USER
CREATE USER gpi identifed BY gpi;
GRANT CREATE SESSION TO gpi;
 
 
#alter the target USER that GPI can CONNECT AS HR
ALTER USER HR GRANT CONNECT THROUGH gpi;
 
#oder alternativ mit einer zugewiesenen Rolle
 
ALTER USER HR GRANT CONNECT THROUGH gpi WITH ROLES hr_user_role;

2. An der DB Anmelden mit

sqlplus gpi[HR]@local_db
 
 
# mit dem Password von GPI anmelden:
 
 
SQL>SELECT USER FROM dual;
USER
-----
HR

Überwachen mit:

DB Views

Wer darf sich an diesem Schema anmelden:

SELECT 	proxy
	, client
	, authentication
	, authorization_constraint
	, ROLE
	, proxy_authority
 FROM dba_proxies
WHERE client LIKE UPPER('&&SCHEMA_NAME.')	
ORDER BY 1
/

Dieser User darf sich an welches Schema anmelden:

SELECT 	proxy
	, client
	, authentication
	, authorization_constraint
	, ROLE
	, proxy_authority
 FROM dba_proxies
WHERE proxy LIKE UPPER('&&USER_NAME.')	
ORDER BY 1
/

Angemeldeten User in der DB prüfen

In einer User Session

Leider wird der angemeldete Proxy User tatsächlich zum Schema Owner, in den traditionellen View taucht der Name des Proxy Users dann nicht mehr auf.

Eine Möglichkeit ist aber die Abfrage der Umgebung der SQL Session mit:

SELECT SYS_CONTEXT ('USERENV', 'CURRENT_USER')           CURRENT_USER
     , SYS_CONTEXT ('USERENV', 'CURRENT_USERID')         CURRENT_USERID
     , SYS_CONTEXT ('USERENV', 'PROXY_USER')             PROXY_USER
     , SYS_CONTEXT ('USERENV', 'PROXY_USERID')           PROXY_USERID
     , SYS_CONTEXT ('USERENV', 'AUTHENTICATED_IDENTITY') AUTH_IDENT
FROM DUAL
/

siehe SYS_CONTEXT

Diese Information ließe sich dann wieder verwenden um zum Beispiel eine Spalte wie LAST_UPDATE_USER in der Tabelle mit dem Wert des aktuellen Proxy Users zufüllen.

Auditing

Im Auditing wird die Spalte PROXY_SESSIONID mit der Session ID des Proxy Users gefüllt, auch in der Spalte COMMENT_TEXT kann über das Schlüsselwort „PROXY“ erkannt werden ob hier eine Proxy Connect vorgelegen hat.

SELECT a.username connecting_user ,
       a.action_name,
       a.timestamp, 
       a.comment_text, 
       b.username proxy_username, 
       b.action_name proxy_action_name, 
       b.comment_text proxy_comment_text
 FROM dba_audit_trail a INNER JOIN dba_audit_trail b ON (a.proxy_sessionid=b.sessionid)
ORDER BY a.timestamp
/

Selects über Proxy auditieren

Auditing Proxy Activities:

...
Actions taken by proxy connections can be audited with standard database auditing commands such as the following:

AUDIT SELECT TABLE ON customers BY midtier ON BEHALF OF karen;

AUDIT SELECT TABLE ON customers by acct_mgr ON BEHALF OF all;

In either of these cases, the proxy information is included in the audit trail views.
...

aus der Doku.

demnächst mehr

Sicherheitsrisiko

Bei einem Test mit der Oracle XE (11.2.0.2) ist mir aufgefallen, das ein User mit abgelaufenen Passwort sich als Proxy Connect trotzdem anmelden kann.

Unter 12c (12.1.0.2) konnte das Verhalten aber nicht nachvollzogen werden, das scheint inzwischen gefixt zu sein.

Quellen

Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
"Autor: Gunther Pipperr"
dba/proxy_connect.txt · Zuletzt geändert: 2018/07/08 15:54 von Gunther Pippèrr