back to top

Gestire utenti e privilegi โ€“ Guida Oracle

Tra i compiti del DBA, vi รจ quello di creare e amministrare le utenze del database. Sarร  lui a decidere quali privilegi concedergli, ovvero le operazioni che essi potranno compiere sul database ad essi associato.

Abbiamo giร  avuto modo di vedere come si crea unโ€™utenza tramite le funzionalitร  offerte dal pannello di amministrazione. Ora vedremo come fare altrettanto tramite comandi SQL.

Pubblicitร 

CREATE USER

Il comando CREATE USER, la cui sintassi รจ la seguente:

CREATE USER <nome_utente> IDENTIFIED BY <password>

consente di creare un utente allโ€™interno del database. Chiaramente, per creare un utente abbiamo bisogno di unโ€™utenza dotata degli opportuni diritti o privilegi. Lโ€™utenza sys รจ dotata di tutti i privilegi necessari, pertanto sarร  quella che useremo, cosรฌ come abbiamo fatto finora. Se ancora non lโ€™abbiamo fatto, colleghiamoci dunque con tale utenza e andiamo nella sezione relativa ai comandi SQL. Se scriviamo:

CREATE USER my_user IDENTIFIED BY orcl;

Otterremo la creazione di un utente di nome โ€˜my_userโ€™ identificato dalla password โ€˜orclโ€™.

ALTER USER

Il comando appena visto possiede una serie di attributi opzionali, sui quali non ci soffermeremo per questioni di tempo, che possono essere impostati per definire meglio le caratteristiche dellโ€™utenza che si va a creare. Tutti questi attributi possono essere comunque definiti/modificati successivamente con il comando ALTER USER. Supponiamo, ad esempio, di voler modificare la password dellโ€™utenza appena creata; per farlo scriveremo:

ALTER USER my_user IDENTIFIED BY oracle;

Gestire i privilegi

Abbiamo visto sin qui la sintassi di base per la creazione e la modifica di unโ€™utenza. Proviamo ora a collegarci al database tramite la nostra nuova utenza. Fatto ciรฒ, proviamo ad interrogare la nostra tabella "Anagrafica". In questo caso, nella nostra query, il nome tabella dovrร  essere preceduto da un prefisso (nel nostro caso โ€˜Sys.โ€™) che serve a specificare il creator della tabella visto che non coincide con lโ€™attuale utenza. Come avremo avuto modo di verificare, abbiamo ottenuto un errore che ci segnala che la tabella รจ inesistente. Chiaramente, essendo sicuri che la tabella esiste, visto che lโ€™abbiamo utilizzata finora, il problema deve essere un altro!

Il problema infatti, a dispetto del messaggio dโ€™errore, non ha nulla a che fare con la tabella, bensรฌ con lโ€™utenza, e, in maniera specifica, con i privilegi ad essa associati. Concedere un privilegio ad un utenza signifca abilitarla ad effettuare quel tipo di operazione specifica.

GRANT

Supponiamo di voler concedere allโ€™utenza โ€˜my_userโ€™ il diritto di effettuare delle query (precisamente delle SELECT) sulla tabella "Anagrafica". Per farlo faremo ricorso al comando GRANT. Pertanto, colleghiamoci con lโ€™utenza โ€˜sysโ€™ e, nella sezione โ€˜Comandi SQLโ€™ scriviamo:

GRANT SELECT ON Anagrafica TO my_user;

Ora, lโ€™utenza โ€˜my_userโ€™ puรฒ effettuare liberamente delle select su Anagrafica. Torniamo a collegarci con tale utenza e scriviamo la nostra query, ricordandoci di usare il creator della tabella come prefisso. Per intenderci, se scriviamo:

SELECT * FROM Sys.Anagrafica;

Non otterremo piรน lโ€™errore visto in precedenza ma i records della tabella.

Per dare qualche dettaglio in piรน, possiamo dire che esistono sostanzialmente due tipologie di privilegi:

  • Privilegi di Sistema
  • Privilegi di Oggetto

I primi (privilegi di sistema) consentono di effettuare operazioni sul sistema, ovvero creare tabelle, procedureโ€ฆ I secondi (privilegi di oggetto) consentono, invece, di effettuare operazioni su un oggetto, ovvero di effettuare select su tabelle, modifiche in tabella, eseguire procedureโ€ฆ

REVOKE

Sino ad ora abbiamo visto come attribuire privilegi, ora vediamo come revocarli. Il comando che ci consente di revocare i privilegi รจ il comando REVOKE. Supponiamo di voler revocare il privilegio appena concesso allโ€™utente โ€˜my_userโ€™. Per farlo scriveremo:

REVOKE SELECT ON Anagrafica FROM my_user;

da questo momento, lโ€™utente โ€˜my_userโ€™ non potrร  piรน effettuare select sulla tabella indicata.

Pubblicitร