Oracle
 sql >> Database >  >> RDS >> Oracle

Oracle - Come creare un utente di sola lettura

Un utente in un database Oracle dispone solo dei privilegi concessi dall'utente. Quindi puoi creare un utente di sola lettura semplicemente non concedendo altri privilegi.

Quando crei un utente

CREATE USER ro_user
 IDENTIFIED BY ro_user
 DEFAULT TABLESPACE users
 TEMPORARY TABLESPACE temp;

l'utente non ha nemmeno l'autorizzazione per accedere al database. Puoi concederlo

GRANT CREATE SESSION to ro_user

e poi puoi continuare a concedere tutti i privilegi di lettura che desideri. Ad esempio, se vuoi RO_USER per poter interrogare SCHEMA_NAME.TABLE_NAME , faresti qualcosa come

GRANT SELECT ON schema_name.table_name TO ro_user

In genere, tuttavia, è meglio creare un ruolo e concedere i privilegi dell'oggetto al ruolo in modo da poter concedere il ruolo a utenti diversi. Qualcosa come

Crea il ruolo

CREATE ROLE ro_role;

Concedi al ruolo SELECT l'accesso su ogni tabella in uno schema particolare

BEGIN
  FOR x IN (SELECT * FROM dba_tables WHERE owner='SCHEMA_NAME')
  LOOP
    EXECUTE IMMEDIATE 'GRANT SELECT ON schema_name.' || x.table_name || 
                                  ' TO ro_role';
  END LOOP;
END;

E poi concedi il ruolo all'utente

GRANT ro_role TO ro_user;