Ungenutzte Privilegien mit Privilege Analysis finden
OracleSicherheitBefehl
-- 1) Capture privilege usage for a specific user:
BEGIN
DBMS_PRIVILEGE_CAPTURE.CREATE_CAPTURE(
name => 'CAP_APP_USER',
description => 'Actual privilege usage of the application user',
type => DBMS_PRIVILEGE_CAPTURE.G_CONTEXT,
condition => 'SYS_CONTEXT(''USERENV'',''SESSION_USER'') = ''CUSTOMER_APP''');
DBMS_PRIVILEGE_CAPTURE.ENABLE_CAPTURE(name => 'CAP_APP_USER', run_name => 'RUN_2026_10');
END;
/
-- Other types: G_DATABASE (whole DB), G_ROLE (roles => role_name_list('DBA')), G_ROLE_AND_CONTEXT
-- 2) After a representative workload (including month end), stop and generate results:
BEGIN
DBMS_PRIVILEGE_CAPTURE.DISABLE_CAPTURE(name => 'CAP_APP_USER');
DBMS_PRIVILEGE_CAPTURE.GENERATE_RESULT(name => 'CAP_APP_USER', run_name => 'RUN_2026_10');
END;
/
-- 3) Used and never-used privileges:
SELECT username, sys_priv, obj_priv, object_owner, object_name, used_role
FROM dba_used_privs WHERE capture = 'CAP_APP_USER';
SELECT username, sys_priv, obj_priv, object_owner, object_name
FROM dba_unused_privs WHERE capture = 'CAP_APP_USER';
-- 4) Through which role chain was the privilege used?
SELECT username, sys_priv, used_role, path
FROM dba_used_sysprivs_path WHERE capture = 'CAP_APP_USER';
-- 5) Cleanup:
EXEC DBMS_PRIVILEGE_CAPTURE.DROP_CAPTURE(name => 'CAP_APP_USER');Was es tut
Privilege Analysis erfasst zur Laufzeit, welche System-/Objektprivilegien im gewählten Umfang (gesamte Datenbank, Rolle, Bedingung) tatsächlich genutzt werden; das Ergebnis listet ungenutzte Privilegien, sodass REVOKEs nach dem Least-Privilege-Prinzip geplant werden können.
Wann einsetzen
Beim Bereinigen von Anwendungskonten mit DBA-/ANY-Privilegien, für Rechteprüfungen vor einem Audit und um herauszufinden, was eine Standardanwendung wirklich braucht.
Vorsicht
Seit 2018 in der Enterprise Edition enthalten (vorher war eine Database-Vault-Lizenz nötig); keine Zusatzlizenz. Während der Erfassung entsteht ein geringer Overhead. Das Ergebnis spiegelt nur die Workload im Erfassungsfenster wider: Liefen Monatsend-, Jahresend- oder Notfalljobs nicht, kann ein als "ungenutzt" angezeigtes Privileg dennoch nötig sein, daher schrittweise entziehen. Es kann immer nur eine Erfassung aktiv sein; einzige Ausnahme: Eine G_DATABASE-Erfassung kann zusätzlich zu einer Rollen- oder Context-Erfassung aktiv sein.
Verwandte Einträge
- TDE-Keystore anlegen, öffnen, Master Key setzen und sichern (ab 19c)
- Tablespaces mit TDE verschlüsseln (neu und bestehend, online/offline)
- Unified-Auditing-Policy anlegen, bedingt aktivieren, Einträge prüfen und entfernen
- Zugriffs-Policy auf Zeilenebene mit VPD hinzufügen (DBMS_RLS)
- Profil für Passwortrichtlinien anlegen und Benutzern zuweisen