2. Utenti – Ruoli - Privilegi
Ogni utente ha un nome e una password e possiede oggetti personali in Oracle.
Un ruolo è costituito da una serie di privilegi. Ogni utente può avere un ruolo o
dei privilegi specifici.
Sono privilegi di sistema consentono di eseguire gruppi specifici di comandi:
CREATE TABLE consente di creare delle tabelle.
I privilegi su oggetti del database offrono privilegi su alcuni oggetti specifici
3. Utenti
In Oracle esistono molti utenti predefiniti tra cui SYS e SYSTEM.
Per creare altri utenti è possibile collegarsi come SYSTEM.
Per creare un utente si usa la sintassi
CREATE USER pippo IDENTIFIED BY pluto
(Usando IDENTIFIED EXTERNALLY si usano le impostazioni del sistema operativo)
Per modificare un’utente si usa un comando ALTER
ALTER USER pippo IDENTIFIED BY paperino
(per altro esiste anche il comando password di SQLPLUS)
Per eliminate un utente si usa il comando
DROP USER pippo [CASCADE]
CASCADE permette di eliminare tutti gli oggetti posseduti dall’utente
In realtà pippo non può collegarsi finché non ha il privilegio di creare una sessione
GRANT CREATE SESSION TO pippo
4. Profili
Inoltre l’amministratore può definire un profilo per l’utente stabilendo la durata della
password, il numero di tentativi prima del blocco.
create profile LIMITED PROFILE limit
FAILED LOGON ATTEMPTS 5;
create user PINCO identified by PALLINO
profile LIMITED PROFILE
Dopo 5 tentativi l’utente si blocca, per sbloccarlo
alter user PINCO account unlock;
Oppure per bloccarlo
alter use PINCO account lock
5. Scadenza della Password
Per impostare una password che scade dopo 30 giorni
alter profile LIMITED_PROFILE limit
PASSWORD_LIFE_TIME 30
Dopo tale periodo viene richiesta una nuova password, al prossimo collegamento. Per
altro è possibile forzare la scedenza di una passord con:
alter user PINCO password expire
O anche indicare password expire subito all’atto della creazione dell’utente
Le informazioni sugli utenti sono presenti nel data dictionary nelle viste:
DBA_USERS o USER_USERS
6. RUOLI STANDARD
• CONNECT è un ruolo che dà la possibilità di connettersi e creare alcuni oggetti nel
proprio schema (tabelle, viste, sequenze, sinonimi, cluster).
• RESOURCE è un ruolo per utenti più esigenti che necessitano anche la creazione di
Stored procedure, triggers, tipi di dati eccetera.
• DBA ha tutti i privilegi di sistema, tra cui quello di concedere privilegi, e quote di
utilizzo illimitati
E’ possibile creare altri ruoli con il comando
CREATE ROLE dw_manager;
(Come l’utente il ruolo può essere identificato da una
Password o NOT IDENTIFIED)
I privilegi o i ruoli possono essere concessi con il comando GRANT
grant CONNECT to PINCO with admin option
La clausola opzionale ‘with admin option’ indica che PINCO potrà concedere lo stesso
ruolo ad altri utenti o ruoli.
7. CONCEDERE PRIVILEGI O RUOLI
E’ possibile in modo simile assegnare privilegi o ruoli a utenti o ruoli:
Concedere un ruolo a un utente
GRANT dw_manager TO sh WITH ADMIN OPTION;
Concedere privilegi di sistema a un ruolo
GRANT
CREATE ANY MATERIALIZED VIEW
, ALTER ANY MATERIALIZED VIEW
, DROP ANY MATERIALIZED VIEW
TO dw_manager
WITH ADMIN OPTION;
Concedere privilegi su un oggetto ad un ruolo
GRANT SELECT ON sh.sales TO warehouse_user;
Concedere un ruolo ad un ruolo
GRANT dw_manager TO warehouse_user;
Concedere tutti i privilegi su una tabella a un utentes
GRANT ALL ON bonuses TO hr WITH GRANT OPTION;
Avendo indicato ‘with grant option’ l’utente hr potrà a sua volta tutti
i privilegi su quella tabella a un altro
Concedere alcuni privilegi su una vita a tutti
GRANT SELECT, UPDATE ON emp_view TO PUBLIC;
8. REVOCARE PRIVILEGI E RUOLI
Revoca di un privilegio di sistema a due utenti
REVOKE DROP ANY TABLE FROM hr, oe;
Revoca di un ruolo a un utente
REVOKE dw_manager FROM sh;
Revoca di due privilegi su una vista all’utente pubblico
REVOKE SELECT, UPDATE ON emp_details_view TO public;
9. ALCUNI TIPI DI PRIVILEGI
• Su tabelle, viste materializzate (ALL)
– INSER, DELETE, UPDATE, SELECT
– ALTER, REFERENCES, INDEX
• Su procedure, funzioni, package, tipi di dati,…
– EXECUTE
• Su sequenze
– SELECT, ALTER
• Su directory
– READ, WRITE
10. CREATE USER RIVISITATA
La create user può essere un comando molto complesso è possibile indicare:
• Un profilo
• Un tablespace di default e ta temporary tablespaces
• Password expire
• La quota di spazio
CREATE USER sidney
IDENTIFIED BY out_standing1
DEFAULT TABLESPACE example
QUOTA 10M ON example
TEMPORARY TABLESPACE temp
QUOTA 5M ON system
PROFILE app_user
PASSWORD EXPIRE;
11. ALTER USER E RUOLI PREDEFINITI
Nel comando ALTER USER è possibile definire uno o più ruoli standard per l’utente
ALTER USER sh
DEFAULT ROLE ALL EXCEPT dw_manager;
ALTER USER sh
DEFAULT ROLE ruolo1, ruolo2;
Normalmente ha tutti i ruoli sono predefiniti per un utente.
Per attivare un ruolo non predefinito è possibile scrivere
SET ROLE impiegato
SET ROLE ALL;
SET ROLE ALL EXCEPT dw_manager;
SET ROLE NONE;