it-swarm.com.de

Orakel - Benutzer mit Zugriff auf bestimmte Tabellen auflisten

Ich bin mir sicher, dass dies schon einmal gefragt wurde, aber ich kann die relevanten Details für Folgendes nicht finden.

Gibt es eine vorgefertigte Tabelle, die Folgendes kann (ich habe dba_tab_privs verwendet, aber sie ist begrenzt und erfüllt nicht alle meine Anforderungen), wenn nicht, hat jemand Fragen zur Beantwortung der folgenden Fragen?

  1. Alle Benutzer auflisten, denen eine bestimmte Rolle zugewiesen wurde?
  2. Alle Rollen auflisten, die einem Benutzer zugewiesen wurden?
  3. Alle Berechtigungen auflisten, die einem Benutzer erteilt wurden?
  4. Auflisten, auf welche Tabellen eine bestimmte Rolle SELECT Zugriff gewährt?
  5. Alle Tabellen auflisten, aus denen ein Benutzer AUSWÄHLEN kann?
  6. Alle Benutzer auflisten, die in einer bestimmten Tabelle AUSWÄHLEN können (entweder durch eine relevante Rolle oder durch eine direkte Gewährung (dh durch Gewährung einer Bewilligung auf atable to joe))? Das Ergebnis dieser Abfrage sollte auch zeigen, über welche Rolle der Benutzer diesen Zugriff hat oder ob es sich um eine direkte Gewährung handelt.
29
dgf

Listet alle Benutzer auf, denen eine bestimmte Rolle zugewiesen wurde

-- Change 'DBA' to the required role
select * from dba_role_privs where granted_role = 'DBA'

Listet alle Rollen auf, die einem Benutzer zugewiesen wurden

-- Change '[email protected] to the required user
select * from dba_role_privs where grantee = 'PHIL';

Listet alle Berechtigungen auf, die einem Benutzer erteilt wurden

select
  lpad(' ', 2*level) || granted_role "User, his roles and privileges"
from
  (
  /* THE USERS */
    select 
      null     grantee, 
      username granted_role
    from 
      dba_users
    where
      username like upper('%&enter_username%')
  /* THE ROLES TO ROLES RELATIONS */ 
  union
    select 
      grantee,
      granted_role
    from
      dba_role_privs
  /* THE ROLES TO PRIVILEGE RELATIONS */ 
  union
    select
      grantee,
      privilege
    from
      dba_sys_privs
  )
start with grantee is null
connect by grantee = prior granted_role;

Hinweis: Entnommen aus http://www.adp-gmbh.ch/ora/misc/recursively_list_privilege.html

Liste, auf welche Tabellen eine bestimmte Rolle SELECT Zugriff gewährt?

-- Change 'DBA' to the required role.
select * from role_tab_privs where role='DBA' and privilege = 'SELECT';

Alle Tabellen auflisten, aus denen ein Benutzer AUSWÄHLEN kann?

--Change 'PHIL' to the required user
select * from dba_tab_privs where GRANTEE ='PHIL' and privilege = 'SELECT';

Alle Benutzer auflisten, die in einer bestimmten Tabelle AUSWÄHLEN können (entweder durch eine relevante Rolle oder durch eine direkte Gewährung (dh durch Auswahl eines Zuschusses für atable to joe))? Das Ergebnis dieser Abfrage sollte auch zeigen, über welche Rolle der Benutzer diesen Zugriff hat oder ob es sich um eine direkte Gewährung handelt.

-- Change 'TABLENAME' below
select Grantee,'Granted Through Role' as Grant_Type, role, table_name
from role_tab_privs rtp, dba_role_privs drp
where rtp.role = drp.granted_role
and table_name = 'TABLENAME' 
union
select Grantee,'Direct Grant' as Grant_type, null as role, table_name
from dba_tab_privs
where table_name = 'TABLENAME' ;
35
Philᵀᴹ

Es gibt viele Möglichkeiten, um die gewünschten Informationen zu erhalten:

datenwörterbuchansichten

in Oracle vorhanden.

Sie können einfach die Ansichten abfragen und die Details abrufen: Zum Beispiel:

wählen Sie * aus DBA_COL_PRIVS.

wählen Sie * aus ALL_COL_PRIVS.

wählen Sie * aus USER_COL_PRIVS.

Dies sagt Ihnen:

Die DBA-Ansicht beschreibt alle Spaltenobjektgewährungen in der Datenbank. Die Ansicht ALL beschreibt alle Spaltenobjektgewährungen, für die der aktuelle Benutzer oder PUBLIC der Objekteigentümer, Bewilliger oder Berechtigte ist. Die USER-Ansicht beschreibt Spaltenobjektgewährung, für die der aktuelle Benutzer der Objekteigentümer, Bewilliger oder Berechtigte ist.

Für weitere Informationen siehe hier

Hoffe das hilft.

2
Vimalnath