Adm Roles
Adm Roles
Adm Roles
Par SheikYerbouti
er
Date de publication : 1 janvier 2004
Introduction...................................................................................................................................................................3
1 - Assigner des privilèges système à un utilisateur.................................................................................................. 4
2 - Assigner des privilèges objet à un utilisateur........................................................................................................ 5
3 - Créer des rôles et leur assigner des privilèges.....................................................................................................7
4 - Activer et désactiver un rôle................................................................................................................................ 12
5 - Suppression d'un rôle.......................................................................................................................................... 13
6 - Retirer des privilèges système............................................................................................................................ 14
7 - Retirer des privilèges objet.................................................................................................................................. 15
8 - Liste des privilèges système................................................................................................................................16
9 - Liste des privilèges objet..................................................................................................................................... 21
-2-
Le guide Oracle par Orafrance, Helyos et SheikYerbouti
https://oracle.developpez.com/guide/administration/adminrole/
Guide Oracle par SheikYerbouti
Introduction
Rôles et privilèges sont définis pour sécuriser l'accès aux données de la base
Ces concepts sont mis en oeuvre pour protéger les données en accordant (ou retirant) des privilèges a un utilisateur
ou un groupe d'utilisateurs
Un rôle est un regroupement de privilèges. Une fois créé il peut être assigné à un utilisateur ou à un autre rôle
Les privilèges sont de deux types
-3-
Le guide Oracle par Orafrance, Helyos et SheikYerbouti
https://oracle.developpez.com/guide/administration/adminrole/
Guide Oracle par SheikYerbouti
Et il en va de même pour tous les autres privilèges qui lui sont assignés.
L'ensemble de ces privilèges peuvent être assignés au sein d'une même commande
GRANT
CREATE SESSION
,CREATE TABLE
,CREATE VIEW
TO nom_utilisateur ;
-4-
Le guide Oracle par Orafrance, Helyos et SheikYerbouti
https://oracle.developpez.com/guide/administration/adminrole/
Guide Oracle par SheikYerbouti
GRANT
SELECT
,INSERT
,UPDATE
,DELETE
ON SCOTT.EMP
TO nom_utilisateur ;
Une liste de colonnes peut être indiquée dans l'instruction afin de restreindre davantage les droits sur une table
GRANT
UPDATE ( JOB, MGR )
ON SCOTT.EMP
TO nom_utilisateur ;
L'utilisateur peut modifier la table SCOTT.EMP mais uniquement les colonnes JOB et MGR
Pour pouvoir mettre à jour ou supprimer des lignes d'une table, les privilèges UPDATE ET DELETE ne
suffisent pas. Le privilège SELECT est nécessaire
Un utilisateur munis des droits DBA ne pourra pas accorder de privilèges sur un objet qui ne lui appartient
pas
Principes généraux appliqués aux privilèges
-5-
Le guide Oracle par Orafrance, Helyos et SheikYerbouti
https://oracle.developpez.com/guide/administration/adminrole/
Guide Oracle par SheikYerbouti
• Un utilisateur possède automatiquement tous les privilèges sur un objet qui lui appartient
• Un utilisateur ne peut pas donner plus de privilèges qu'il n'en a reçu
• s'il n'a pas reçu le privilège avec l'option WITH GRANT OPTION, un utilisateur ne peux pas assigner à son
tour ce même privilège
-6-
Le guide Oracle par Orafrance, Helyos et SheikYerbouti
https://oracle.developpez.com/guide/administration/adminrole/
Guide Oracle par SheikYerbouti
Une fois le rôle créé, il peut être assigné à un utilisateur ou à un autre rôle
-- CREATION DU PACKAGE
create or replace procedure test_check
authid current_user is
Begin
-- VERIFICATION DE L'ADRESSE IP DU DEMANDEUR
For i in (select sys_context (‘USERENV', ‘IP_ADDRESS') ip from dual)
Loop
If i.ip != ‘192.168.12.196' Then
-- MAUVAISE IP, SORTIE DE LA PROCEDURE
return;
End if;
-- IP OK, ON ACTIVE LE ROLE
dbms_session.set_role(‘TEST');
End loop;
End;
-7-
Le guide Oracle par Orafrance, Helyos et SheikYerbouti
https://oracle.developpez.com/guide/administration/adminrole/
Guide Oracle par SheikYerbouti
-- CONNEXION
SQL> connect scott/tiger
-- DROITS REFUSES
-- SCOTT DEMANDE L'ACTIVATION DU ROLE TEST
set role test;
• CONNECT
• RESOURCE
• DBA
8 ligne(s) sélectionnée(s).
Ce rôle permet l'ouverture (CREATE SESSION) et la modification (ALTER SESSION) d'une session
La création de tables, vues, clusters, séquences, synonymes et liens de bases de données
L'option ADMIN OPTION positionnée à NO indique que ces privilèges ne peuvent pas être assignés à un autre
utilisateur ou rôle
Les privilèges système assignés au rôle RESOURCE
-8-
Le guide Oracle par Orafrance, Helyos et SheikYerbouti
https://oracle.developpez.com/guide/administration/adminrole/
Guide Oracle par SheikYerbouti
8 ligne(s) sélectionnée(s).
Ce rôle permet de créer des types, tables clusters, opérateurs, séquences, index et procédures
Le rôle RESOURCE accorde un privilège UNLIMITED QUOTA à l'utilisateur est n'est donc à assigner qu'en
connaissance de cause
Les privilèges système assignés au rôle DBA
La liste des privilèges assignés au rôle DBA est beaucoup plus longue du fait que ce rôle est octroyé aux utilisateurs
ayant des droits d'administration de la base
D'une façon générale, il est fortement déconseillé d'utiliser ces rôles standards car ils accordent trop de
droits aux utilisateurs
La liste des rôles définis est visible depuis la vue DBA_ROLES
-9-
Le guide Oracle par Orafrance, Helyos et SheikYerbouti
https://oracle.developpez.com/guide/administration/adminrole/
Guide Oracle par SheikYerbouti
WM_ADMIN_ROLE NO
JAVAUSERPRIV NO
JAVAIDPRIV NO
JAVASYSPRIV NO
JAVADEBUGPRIV NO
EJBCLIENT NO
JAVA_ADMIN NO
JAVA_DEPLOY NO
CTXAPP NO
XDBADMIN NO
AUTHENTICATEDUSER NO
OLAP_DBA NO
SALES_HISTORY_ROLE NO
30 ligne(s) sélectionnée(s).
La liste des privilèges système assignés à un rôle s'obtient en interrogeant les vues DBA_SYS_PRIVS et
USER_SYS_PRIVS
La liste des privilèges objet assignés à un utilisateur s'obtient en interrogeant les vues
DBA_TAB_PRIVS, ALL_TAB_PRIVS et USER_TAB_PRIVS
La liste des privilèges objet sur les colonnes de tables assignés à un utilisateur s'obtient en interrogeant les vues
DBA_COL_PRIVS, ALL_COL_PRIVS et USER_COL_PRIVS
La liste des rôles assignés à l'utilisateur au cours de sa session est visible via la vue SESSION_ROLES
ROLE
------------------------------
CONNECT
RESOURCE
La liste des privilèges assignés à l'utilisateur au cours de sa session est visible via la vue SESSION_PRIVS
PRIVILEGE
-----------------------------------
CREATE SESSION
- 10 -
Le guide Oracle par Orafrance, Helyos et SheikYerbouti
https://oracle.developpez.com/guide/administration/adminrole/
Guide Oracle par SheikYerbouti
ALTER SESSION
UNLIMITED TABLESPACE
CREATE TABLE
CREATE CLUSTER
CREATE SYNONYM
CREATE VIEW
CREATE SEQUENCE
CREATE DATABASE LINK
CREATE PROCEDURE
CREATE TRIGGER
CREATE TYPE
CREATE OPERATOR
CREATE INDEXTYPE
Les privilèges assignés à un utilisateur via un rôle ne permettent pas la création de vues, de procédures,
de fonctions de packages ni de clés étrangères par l'intermédiaire de code PL/SQL dynamique (DBMS_SQL,
execute immediate)
Pour créer ces objets via PL/SQL, l'utilisateur doit avoir reçu directement les privilèges requis via l'instruction
GRANT
Les vues SESSION_PRIVS et SESSION_ROLES sont utiles pour vérifier les droits acquis au cours de la
session
Les rôles par défaut à la connexion pouvant être enrichis avec l'instruction SET ROLE (ou son équivalent
PL/SQL : DBMS_SESSION.SET_ROLE)
Un mot de passe peut être ajouté à un rôle pour pouvoir l'activer avec l'instruction ALTER ROLE
- 11 -
Le guide Oracle par Orafrance, Helyos et SheikYerbouti
https://oracle.developpez.com/guide/administration/adminrole/
Guide Oracle par SheikYerbouti
Un rôle peut être activé ou désactivé pour un utilisateur avec l'instruction ALTER USER
- 12 -
Le guide Oracle par Orafrance, Helyos et SheikYerbouti
https://oracle.developpez.com/guide/administration/adminrole/
Guide Oracle par SheikYerbouti
Le rôle spécifié ainsi que tous les privilèges qui lui sont associés sont supprimés de la base et également retiré à
tous les utilisateurs qui en bénéficiaient
- 13 -
Le guide Oracle par Orafrance, Helyos et SheikYerbouti
https://oracle.developpez.com/guide/administration/adminrole/
Guide Oracle par SheikYerbouti
Les privilèges système qui ont été assignés à des utilisateurs ou à des rôles peuvent être retirés avec l'instruction
REVOKE
- 14 -
Le guide Oracle par Orafrance, Helyos et SheikYerbouti
https://oracle.developpez.com/guide/administration/adminrole/
Guide Oracle par SheikYerbouti
Les privilèges objet qui ont été assignés à des utilisateurs ou à des rôles peuvent être retirés avec l'instruction
REVOKE
CASCADE CONSTRAINTS (applicable uniquement pour révoquer des privilèges REFERENCES) supprime toutes
les contraintes d'intégrité référentielles définies par l'utilisateur
FORCE retire le privilège EXECUTE sur les types objet
Pour pouvoir supprimer un privilège, il faut en avoir reçu l'autorisation avec l'option ADMIN OPTION
L'utilisteur disposant du rôle DBA ne peut pas retirer de privilèges qu'il n'a pas accordé
- 15 -
Le guide Oracle par Orafrance, Helyos et SheikYerbouti
https://oracle.developpez.com/guide/administration/adminrole/
Guide Oracle par SheikYerbouti
- 16 -
Le guide Oracle par Orafrance, Helyos et SheikYerbouti
https://oracle.developpez.com/guide/administration/adminrole/
Guide Oracle par SheikYerbouti
INDEXS
CREATE ANY INDEX Création d'index dans n'importe quel
schéma
ALTER ANY INDEX Modification d'index dans n'importe quel
schéma
DROP ANY INDEX Suppression d'index dans n'importe quel
schéma
QUERY REWRITE Autorise la réécriture via une vue
matérialisée dans le schéma
GLOBAL QUERY REWRITE Autorise la réécriture via une vue
matérialisée dans n'importe quel
schéma
LIBRARIES
CREATE LIBRARY Création de librairies de fonctions/
procédures externes dans le schéma
CREATE ANY LIBRARY Création de librairies de fonctions/
procédures externes dans n'importe
quel schéma
DROP ANY LIBRARY Suppression de librairies de fonctions/
procédures externes dans n'importe
quel schéma
MATERIALIZED VIEWS
CREATE MATERIALIZED VIEW Création de vues matérialisées dans le
schéma
CREATE ANY MATERIALIZED VIEW Création de vues matérialisées dans
n'importe quel schéma
ALTER ANY MATERIALIZED VIEW Modification de vues matérialisées dans
n'importe quel schéma
DROP ANY MATERIALIZED VIEW Suppression de vues matérialisées dans
n'importe quel schéma
QUERY REWRITE Autorise la réécriture via une vue
matérialisée dans le schéma
GLOBAL QUERY REWRITE Autorise la réécriture via une vue
matérialisée dans n'importe quel
schéma
ON COMMIT REFRESH Création de vues matérialisées de type
refresh-on-commit sur n'importe quelle
table
FLASHBACK ANY TABLE Autorise une requête FlashBack sur
n'importe quelle table, vue ou vue
- 17 -
Le guide Oracle par Orafrance, Helyos et SheikYerbouti
https://oracle.developpez.com/guide/administration/adminrole/
Guide Oracle par SheikYerbouti
- 18 -
Le guide Oracle par Orafrance, Helyos et SheikYerbouti
https://oracle.developpez.com/guide/administration/adminrole/
Guide Oracle par SheikYerbouti
- 19 -
Le guide Oracle par Orafrance, Helyos et SheikYerbouti
https://oracle.developpez.com/guide/administration/adminrole/
Guide Oracle par SheikYerbouti
- 20 -
Le guide Oracle par Orafrance, Helyos et SheikYerbouti
https://oracle.developpez.com/guide/administration/adminrole/
Guide Oracle par SheikYerbouti
- 21 -
Le guide Oracle par Orafrance, Helyos et SheikYerbouti
https://oracle.developpez.com/guide/administration/adminrole/