Query per generare la DDL di creazione UTENZA, RUOLI e PRIVILEGI

.

Con l’articolo Query per generare la DDL di creazione UTENZA,
RUOLI e
PRIVILEGI forniamo una serie di statement,
i quali estraggono il codice di creazione di un UTENTE.

Inoltre è possibile estrapolare i ruoli, i privilegi di sistema e sugli oggetti, e la quota sul tablespace di default di un determinato UTENTE.

Query per generare la DDL di creazione UTENZA, RUOLI e PRIVILEGI:

--DDL Utente - grant

set head off
set pages 1000
set long 9999999
undef user
select dbms_metadata.get_ddl('USER',username) || '/' usercreate from dba_users where USERNAME = upper('&user')

--GRANT Utente
SELECT DBMS_METADATA.GET_GRANTED_DDL('ROLE_GRANT',upper('&&user')) FROM DUAL;
SELECT DBMS_METADATA.GET_GRANTED_DDL('SYSTEM_GRANT',upper('&&user')) FROM DUAL;
SELECT DBMS_METADATA.GET_GRANTED_DDL('OBJECT_GRANT',upper('&&user')) FROM DUAL;
SELECT DBMS_METADATA.GET_GRANTED_DDL('TABLESPACE_QUOTA',upper('&&user')) FROM DUAL; /

Query dinamica per duplicare i PRIVILEGI di un UTENTE e assegnarli ad un altro

.

Con l’articolo Query dinamica per duplicare i PRIVILEGI di un UTENTE e assegnarli ad un altro, possiamo recuperare tutti i RUOLI,
i PRIVILEGI di sistema e
i PRIVILEGI sugli oggetti di un UTENTE
e costruire il comando di GRANT assegnandoli ad un altro UTENTE.


Query dinamica per assegnare Ruoli di un utente:

select 'grant ' ||granted_role || ' to &userid' ||
decode(admin_option, 'NO', ';', 'YES', ' with admin option;') "ROLE"
from dba_role_privs
where grantee = '&userid';


Query dinamica per assegnare Privilegi di un utente:

select 'grant ' || privilege || ' to &quserid' ||
decode(admin_option, 'NO', ';', 'YES', ' with admin option;') "PRIV"
from dba_sys_privs
where grantee = '&userid';

Statement per assegnare Privilegi sugli oggetti di un utente:

select 'grant '||privilege||' on '||owner||'.'||table_name||' to '||grantee||';' 
from dba_tab_privs where grantor = '&userid';

Query per visualizzare i PRIVILEGI sugli OGGETTI assegnati a un UTENTE

.

Query per visualizzare i PRIVILEGI sugli OGGETTI
assegnati a un UTENTE,
vediamo i PRIVILEGI sugli OGGETTI assegnati
a un determinato UTENTE.

Inoltre selezioniamo:
l’owner della tabella,
la tabella,
il privilegio e
l’utente a cui è stato assegnato l’utente.

I campi selezionati sono:

OWNER – Proprietario dell’oggetto
TABLE_NAME – Nome della tabella
PRIVILEGE – Privilegio nell’oggetto
GRANTEE – Nome dell’utente a cui è stato concesso il privilegio.

Queste informazioni le estrapoliamo dalla tabella DBA_TAB_PRIVS.

Infine,
filtriamo le informazioni per utente
a cui gli è stato concesso
il privilegio.

Query per visualizzare i PRIVILEGI sugli OGGETTI assegnati a un UTENTE:

set lines 200
col privilege for a20
col grantee for a20
col owner for a20
select owner OWN_TABLE,table_name,privilege, GRANTEE OWN_PRIVILEGE FROM DBA_TAB_PRIVS WHERE GRANTEE ='&USERID';

Query per visualizzare i PRIVILEGI di sistema assegnati a un UTENTE o a un RUOLO.

.

L’articolo Query per visualizzare i PRIVILEGI di sistema assegnati a un determinato UTENTE o
a un determinato RUOLO,
fornisce una semplice query
che visualizza i campi:

GRANTEE – L’utente proprietario del privilegio.
PRIVILEGE – Il privilegio di sistema.


Recuperiamo le informazioni dalla tabella DBA_SYS_PRIVS e
filtriamo la ricerca per GRANTEE,
ossia utente assegnatario.

Privilegi di sistema di un utente:

set lines 200
col grantee for a20
col privilege for a70
select grantee,privilege from dba_sys_privs where grantee ='&USERID';

Query per vedere i RUOLI assegnati a un UTENTE del database Oracle

.

La query nell’articolo Query per vedere i RUOLI assegnati a un UTENTE del database Oracle,
ci permette di individuare i RUOLI assegnati a un determinato utente del database Oracle selezionando GRANTEE,
ossia l’utente che riceve il ruolo,
e GRANTED_ROLE il quale identifica il nome del ruolo.

Attenzione: nel caso in cui vogliamo verificare i privilegi che fanno parte di un ruolo,
dobbiamo eseguire la query Privilegi di un utente,
sostituendo USERID (il nome dell’utente) con GRANTED_ROLE (Il nome del ruolo).

Ruoli di un utente:

set lines 200
col GRANTED_ROLE for a40
col grantee for a30
select grantee,granted_role from dba_role_privs where grantee='&USERID';

Query per creare il comando per assegnare la quota di un utente sul proprio DEFAULT_TABLESPACE

.

La query dinamica Quote di un utente, ha lo scopo di creare il comando per poter assegnare la quota di un utente sul proprio default_tablespace,
prendendo in considerazione la quota assegnata di untente già presente sul database.

Quote di un utente:

select 'alter user &userid quota '||
decode(max_bytes, -1, 'unlimited',
ceil(max_bytes / 1024 / 1024) || 'M') ||
' on ' || tablespace_name || ';'
from dba_ts_quotas
where username = '&userid';

Query per visualizzare lo stato delle password degli account di un database, il PROFILO e i RUOLI associati

.


La query Ruoli e profili utente, evidenzia lo stato della password degli account di un database, il profilo associato e i ruoli assegnati.
Questo è possibile grazie alla selezione dei campi:

USERNAME – Nome degli SCHEMA del database.
ACCOUNT_STATUS – Status dell’account se LOCKED o EXPIRED
PROFILE – Profilo associato all’utente dove sono assegnate la quantità di risorse macchina e gestione della password di un utente.
CREATED – Data di creazione dell’utente.
GRANTED_ROLE – Il nome del ruolo associato.

Queste informazioni sono state estrapolate dalle viste DBA_USERS e DBA_ROLE_PRIVS unite dalla JOIN username=grantee.

Query per visualizzare lo stato delle password degli account di un database, il PROFILO e i RUOLI associati

set lines 300
set pages 999
col user for a15
col ACCOUNT_STATUS for a20
col PROFILE for a25
col granted_role for a35
select distinct username, account_status, profile, created, granted_role
from dba_users, dba_role_privs where username=grantee
order by 1;

Wordpress Social Share Plugin powered by Ultimatelysocial