Privilegi di controllo dell'accesso granulari

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Questa pagina descrive i privilegi che puoi concedere a un ruolo di database per un controllo granulare degli accessi.

Per ulteriori informazioni sui ruoli dei database e sul controllo dell'accesso granulare, consulta Informazioni sul controllo dell'accesso granulare.

SELECT

Consente al ruolo di eseguire istruzioni SELECT su una tabella. Se è specificato un elenco di colonne, il privilegio è valido solo per tali colonne. Se non viene specificato alcun elenco di colonne, il privilegio è valido per tutte le colonne della tabella, comprese quelle aggiunte in seguito.

  • Dopo aver concesso l'autorizzazione SELECT a un sottoinsieme di colonne di una tabella, l'utente FGAC non può più utilizzare SELECT * nella tabella. Le query su questa tabella devono assegnare un nome a tutte le colonne da includere.

  • Il comando SELECT concesso su una colonna generata non concede SELECT alle colonne base di base.

  • Per le tabelle con interfoliazione, l'elemento SELECT concesso nella tabella padre non si propaga alla tabella secondaria.

  • Quando SELECT viene utilizzato con una funzione di aggregazione in colonne specifiche, ad esempio SUM(col_a), il ruolo deve avere il privilegio SELECT su tali colonne. Se la funzione aggregata non specifica alcuna colonna, ad esempio COUNT(*), il ruolo deve avere il privilegio SELECT su almeno una colonna della tabella.

Esempi

GRANT SELECT ON TABLE employees TO ROLE hr_director;

GRANT SELECT ON TABLE customers, orders, items TO ROLE account_mgr;

GRANT SELECT(name, level, cost_center, location, manager) ON TABLE employees TO ROLE hr_manager;

GRANT SELECT(name, address, phone) ON TABLE employees, contractors TO ROLE hr_rep;

Nell'esempio finale precedente, tutte le colonne denominate devono essere presenti in entrambe le tabelle.

INSERT

Consente al ruolo di inserire righe nelle tabelle specificate. Se viene specificato un elenco di colonne, l'autorizzazione è valida solo per tali colonne. Se non viene specificato alcun elenco di colonne, il privilegio è valido per tutte le colonne della tabella.

  • Se vengono specificati i nomi delle colonne, tutte le colonne non incluse riceveranno il valore predefinito al momento dell'inserimento.

  • INSERT non può essere concesso per le colonne generate.

Esempi

GRANT INSERT ON TABLE employees, contractors TO ROLE hr_manager;

GRANT INSERT(name, address, phone) ON TABLE employees TO ROLE hr_rep;

UPDATE

Consente al ruolo di aggiornare le righe nelle tabelle specificate. Gli aggiornamenti possono essere limitati a un sottoinsieme di colonne della tabella.

  • Oltre al privilegio UPDATE, il ruolo richiede il privilegio SELECT su tutte le colonne chiave e in tutte le colonne oggetto di query. Le colonne oggetto di query includono colonne nella clausola WHERE e colonne utilizzate per calcolare i nuovi valori delle colonne aggiornate e delle colonne generate.

  • UPDATE non può essere concesso per le colonne generate.

Esempi

GRANT UPDATE ON TABLE employees, contractors TO ROLE hr_manager;

GRANT UPDATE(name, address, phone) ON TABLE employees TO ROLE hr_rep;

DELETE

Consente al ruolo di eliminare righe dalle tabelle specificate.

  • DELETE non può essere concessa a livello di colonna.

  • Inoltre il ruolo richiede SELECT in tutte le colonne chiave e nelle colonne che potrebbero essere incluse nelle clausole WHERE della query.

  • Per le tabelle con interfoliazione, il privilegio DELETE è richiesto solo nella tabella padre. Se una tabella secondaria specifica ON DELETE CASCADE, le righe della tabella secondaria vengono eliminate anche senza il privilegio DELETE nella tabella secondaria.

Esempio

GRANT DELETE ON TABLE employees, contractors TO ROLE admin;

Informazioni dettagliate

Per ulteriori informazioni, vedi: