Oracle
 sql >> Base de données >  >> RDS >> Oracle

Oracle - Comment créer un utilisateur en lecture seule

Un utilisateur dans une base de données Oracle ne dispose que des privilèges que vous accordez. Vous pouvez donc créer un utilisateur en lecture seule en n'accordant tout simplement aucun autre privilège.

Lorsque vous créez un utilisateur

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

l'utilisateur n'a même pas l'autorisation de se connecter à la base de données. Vous pouvez l'accorder

GRANT CREATE SESSION to ro_user

et ensuite vous pouvez accorder les privilèges de lecture que vous voulez. Par exemple, si vous voulez RO_USER pour pouvoir interroger SCHEMA_NAME.TABLE_NAME , vous feriez quelque chose comme

GRANT SELECT ON schema_name.table_name TO ro_user

Cependant, il est généralement préférable de créer un rôle et d'accorder les privilèges d'objet au rôle afin de pouvoir ensuite accorder le rôle à différents utilisateurs. Quelque chose comme

Créer le rôle

CREATE ROLE ro_role;

Accorder au rôle SELECT l'accès à chaque table d'un schéma particulier

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;

Et puis accordez le rôle à l'utilisateur

GRANT ro_role TO ro_user;