DBAtlas · Atlas d'exploitation des bases de données

Trouver les privilèges inutilisés avec privilege analysis

OracleSécurité

Commande

-- 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');

Ce que fait la commande

Privilege analysis enregistre à l'exécution quels privilèges système/objet sont réellement utilisés dans la portée choisie (base entière, rôle, condition) ; le résultat liste les privilèges inutilisés afin de planifier des REVOKE selon le principe du moindre privilège.

Quand l'utiliser

Lors du nettoyage de comptes applicatifs ayant des privilèges DBA/ANY, pour les revues de privilèges avant un audit, et pour savoir ce dont un progiciel a réellement besoin.

Attention

Inclus dans Enterprise Edition depuis 2018 (exigeait auparavant une licence Database Vault) ; aucune licence supplémentaire. La capture entraîne une légère surcharge. Le résultat ne reflète que la charge de la fenêtre de capture : si les traitements de fin de mois, de fin d'année ou d'urgence n'ont pas tourné, un privilège indiqué comme "inutilisé" peut encore être nécessaire, révoquez donc progressivement. Une seule capture peut être active à la fois ; seule exception, une capture G_DATABASE peut être activée en même temps qu'une capture de rôle ou de contexte.

Ouvrir dans DBAtlas →

Voir aussi