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.

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Ã