<!-- Slide number: 1 -->
Administration BD
Gestion des utilisateur, privilèges, rôles et profils
<!-- Slide number: 2 -->
#
Rôles et privilèges sont définis pour sécuriser l'accès aux données de la base
Un role est un regroupement de privilège, une fois crée il peut etre assigné à un role ou à un autre utilisateur.
<!-- Slide number: 3 -->
#
Gestion des privilèges
1- Introduction
Les privilèges sont de deux types :
- Les privileges de niveau système (a peu prs 127 privilège)
permettent la création, modification, suppression, exécution de groupes d’objets.
exemple : create table, create vue, create sequence……
Les privilèges de niveau objet:
permettent des manipulations sur des objets spécifiques
exemple : les privilèges select , update , delete sur la table HR.employees.
<!-- Slide number: 4 -->
#
2- Assigner des privilèges système à un utilisateur : GRANT
Lorsqu'un utilisateur est créé avec l'instruction CREATE USER, il ne dispose encore d'aucun droit car aucun privilège ne lui a encore été assigné.
Il ne peut même pas se connecter à la base !
GRANT syste_privilege | role | ALL PRIVILIGIES
TO user | role | PUBLIC
IDENTIFIED BY password
WITH ADMIN OPTION
N.B : ALL PRIVILIGES est un option dangereuse.
Exemple :
GRANT CREATE SESSION TO nom_utilisateur ;
GRANT CREATE TABLE TO nom_utilisateur ;
GRANT CREATE VIEW TO nom_utilisateur ;
Ou
GRANT CREATE SESSION ,CREATE TABLE ,CREATE VIEW TO nom_utilisateur ;
<!-- Slide number: 5 -->
#
2- Assigner des privilèges objet à un utilisateur : GRANT
GRANT object_privilege [ (column i, columnj ,… )] | ALL PRIVILIGES
ON schema.object
TO user | role |PUBLIC
WITH GRANT OPTION
NB : - WITH GRANT OPTION ne s’applique qu’à un role ou public.PAS pour role
- Un utilisateur munis des droits DBA ne pourra pas accorder de privilèges sur un objet qui ne lui appartient pas
Publicité
Exemple :
GRANT SELECT ,INSERT ,UPDATE ,DELETE ON SCOTT.EMP TO nom_utilisateur ;
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)
NB : si on veut autoriser update et delete , ON DOIT attribuer select aussi.
<!-- Slide number: 6 -->
#
3- Retirer des privilèges objet à un utilisateur : REVOKE
Syntaxe :
REVOKE privileges ON object FROM user;
Exemples :
REVOKE DELETE ON suppliers FROM anderson;
REVOKE ALL ON suppliers FROM anderson;
REVOKE ALL ON suppliers FROM public;
<!-- Slide number: 7 -->
#
Principes généraux appliqués aux privilèges:
Un utilisateur possede automatiquement tout les privilges sur un objet qui lui appartient
Un utilisateur ne peut pas donner plus de privilèges qu’il en a recu.
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
Conclusion : lorsque la liste des privilèges est importante, cette manière de procéder
s'avère rapidement fastidieuse et répétitive d’où l’importance des rôles:
(exemple : deux employés travaillant dans le même département.
<!-- Slide number: 8 -->
#
Créer des rôles et leur assigner des privilèges :
CREATE ROLE role
IDENTIFIED BY password
Exemple:
CREATE ROLE comptabilite ;
GRANT SELECT, INSERT, UPDATE, DELETE ON CPT.FACTURE TO comptabilite ;
GRANT SELECT, INSERT, UPDATE, DELETE ON CPT.LIG_FAC TO comptabilite ;
GRANT SELECT, INSERT, UPDATE, DELETE ON CPT.JOURNAL TO comptabilite ;
GRANT comptabilite TO nom_utilisateur ;
<!-- Slide number: 9 -->
#
ALTER ROLE: modifier un role
exemples :
ALTER ROLE warehouse_user NOT IDENTIFIED;
ALTER ROLE dw_manager IDENTIFIED BY data;
SET ROLE : activer /désactiver un role
exemples:
Publicité
SET ROLE NONE;
SET ROLE ALL EXCEPT dw_manager;
SET ROLE ALL;
SET ROLE dw_manager IDENTIFIED BY warehouse;
<!-- Slide number: 10 -->
#
Trois roles existent en standard :
CONNECT
RESSOURCE
DBA
figure : les privilèges systèmes assigné à CONNECT
L'option ADMIN OPTION positionnée à NO indique que ces privilèges ne peuvent pas être assignés à un autre utilisateur ou rôle
La liste des privilèges assignés au rôle DBA est beaucoup plus longue
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

<!-- Slide number: 11 -->
#
La liste des rôles définis est visible depuis la vue DBA_ROLES :
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


<!-- Slide number: 12 -->
#
La liste des rôles assignés à un utilisateur s'obtient via les vues DBA_ROLE_PRIVS et USER_ROLE_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


<!-- Slide number: 13 -->
#
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
La liste des privilèges assignés à l'utilisateur au cours de sa session est visible via la vue SESSION_PRIVS


<!-- Slide number: 14 -->
#
Modifier un role : ALTER ROLE
Activer / désactiver un role pour un utilisateur : ALTER USER …….
Activer un role qui ne fait pas partis de cex par défaut : SET ROLE …..
Suppression d’un role : DROP ROLE nom_role ;
Retirer des privilèges système d’un utilisateur ou d’un role: REVOKE
Retirer des privilèges objet d’un utilisateur ou d’un role: REVOKE
NB :
Publicité
- 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é
<!-- Slide number: 15 -->
#

Liste des prileges objets :
<!-- Slide number: 16 -->
Creation d’un utilisateur
Create user
Syntaxe:
create user nom_utilisateur
IDENTIFIED BY password | EXTERNALLY|GLOBALLY
DEFAULT TABLESPACE nom_tablespace
TEMPORARY TABLESPACE nom_tablespace
QUOTA taille| UNLIMITED ON nom_tablespace
ACCOUNT LOCK|UNLOCK
ALTER USER
DROP USER
Exemple:
Drop user scott ;
Ou
Drop user scott cascade ;
NB : CASCADE : supprimer un utilisateur et tous les objets de son schéma
Deux vues importantes: DBA_USERS et DBA_TS_QUOTAS
<!-- Slide number: 17 -->
Les profils
Définition:
un profil est un ensemble de limitations système
Une fois le profil assigné, l’utilisateur ne pourra plus dépassé ces limitations
Vous devez avoir le privilège CREATE PROFILE
Deux types de limitations :
limitations liées au mot de passe
Exemples :
FAILED_LOGIN_ATTEMPTS (numérique)
PASSWORD_LOCK_TIME (en jours)
PASSWORD_LIFE_TIME ( en jours)
………
NB : La valeur DEFAULT est une valeur particulière, lorsque vous assignerez la valeur DEFAULT à une limitation alors Oracle ira récupérer la valeur de la limitation dans le profil DEFAULT.
limitations liées aux ressources système
Exemples :
SESSIONS_PER_USER (numérique)
CPU_PER_SESSION ( en centièmes de seonde)
CONNECT_TIME (en minutes)
PRIVATE_SGA (la taille en kB ou MB que peut utiliser une session)
Publicité
……….
<!-- Slide number: 18 -->
#
Pour mettre en place un profil, trois étapes:
Etablir les limitations de mot de passe et les limitations système.
Créer le profil
Attribuer le profil aux utilisateurs qui devront être limités
Exemple
CREATE PROFILE app_user
LIMIT
SESSIONS_PER_USER UNLIMITED
CPU_PER_SESSION UNLIMITED
CONNECT_TIME 45
LOGICAL_READS_PER_SESSION 1000
PRIVATE_SGA 15K ;
NB : Par défaut un utilisateur se voit assigner le profil DEFAULT lors de sa création. Si vous souhaitez lui assigner un nouveau profil cela sera possible soit lors de la création soit avec la commande ALTER USER
Exemple :
ALTER USER scott PROFILE app_user;
<!-- Slide number: 19 -->
#
Modification d’un profil :
NB : - le privilege ALTER PROFILE pour modifier les ressources systèmes
- les privilèges ALTER PROFILE et ALTER USER pour les reesources liées au mots de
passes
ALTER PROFILE app_user LIMIT
FAILED_LOGIN_ATTEMPTS 5
PASSWORD_LOCK_TIME 1;
Suppression d’un profil :
NB: le privilège DROP PROFILE
DROP PROFILE app_user;
ou
DROP PROFILE app_user CASCADE;
<!-- Slide number: 20 -->
#
Pour MOI*:
Alter user ali quota unlimited on users;
Alter user ali quota 100M on users;
Grant unlimited tablespace to ali;