Cours Bases de données 2ème année IUT Cours 2 : Contrôle des accès Anne Vilnat http://www.limsi.fr/individu/anne/cours
Plan 1 Les privilèges Définitions 2 Rôles Définition de création d attribution de suppression 3 Profils 4 Utilisateurs
Les privilèges Définitions 1 Privilèges objet : comment attribuer aux utilisateurs de la base le droit de faire des actions sur des objets de la base. Par exemple : autoriser un utilisateur à consulter des tables, permettre à un utilisateur de faire des mises à jour, des références à des tables, 2 Privilèges système : comment permettre à un utilisateur d agir sur les définitions des objets de la base. Par exemple : autoriser un utilisateur à créer des tables, des vues, des index
Attribuer un privilège objet GRANT <liste de privilèges objet> < ALL > ON objet TO <liste d utilisateurs> < PUBLIC > [WITH GRANT OPTION] GRANT SELECT, UPDATE ON Individu TO userfilm Privilèges objet : ALTER, DELETE, INDEX, INSERT, REFERENCES, SELECT, UPDATE,... ALL : les 7 principaux objet : table, vue,.. WITH GRANT OPTION : donne le droit de transmettre à d autres
Attribuer un privilège objet (2) Pour INSERT, REFERENCES ou UPDATE, on peut limiter les attributs concernés : GRANT INSERT REFERENCES UPDATE <liste attributs> ON <nom table> <nom vue> TO <liste d utilisateurs> < PUBLIC [WITH GRANT OPTION] GRANT UPDATE nom, prenom ON Individu TO userfilm
Attribuer un privilège objet : Exemple Jean a créé la table Individu et donne les droits en lecture à Paul : GRANT SELECT ON INDIVIDU TO Paul WITH GRANT OPTION
Supprimer un privilège objet REVOKE <liste de privilèges objet> < ALL > ON objet FROM <liste d utilisateurs> < PUBLIC > [CASCADE CONSTRAINTS][FORCE] CASCADE CONSTRAINTS : pour les contraintes référentielles
Attribuer/Supprimer un privilège système pour attribuer un privilège GRANT <liste de privilèges système> TO <liste d utilisateurs> < PUBLIC > [WITH ADMIN OPTION] GRANT CREATE VIEW TO Paul Privileges système : CREATE TABLE, CREATE VIEW, ALTER TABLE, DROP TABLE,.. WITH ADMIN OPTION : donne le droit de transmettre à d autres pour supprimer un privilège REVOKE <liste de privilèges système> FROM <liste d utilisateurs> < PUBLIC
Les rôles Définition Un rôle est un ensemble de privilèges système et/ou objet identifiés par un nom. Un rôle peut être affecté : à un utilisateur pour lui attribuer des privilèges à un rôle pour lui ajouter des privilèges Un rôle permet d englober un ensemble cohérent de droits qui seront donnés...
Créer un rôle CREATE ROLE <nom de rôle> [ NOT IDENTIFIED IDENTIFIED BY <mot de passe> EXTERNALLY [GLOBALLY] CREATE ROLE roledeveloppeur GRANT CREATE TABLE, CREATE PROCEDURE TO roledeveloppeur IDENTIFIED permet de protéger le rôle par un mot de passe Par défaut : NOT IDENTIFIED
Ajouter des privilèges ou un rôle à un rôle GRANT <liste de privilèges système ou rôle> TO <liste de rôles> [WITH ADMIN OPTION] GRANT <liste de privilèges objet> ALL ON objet TO <liste de rôle> [WITH GRANT OPTION]
Attribuer un rôle à un utilisateur GRANT <liste de rôle> TO <liste d utilisateurs> [WITH ADMIN OPTION] Exemple GRANT roledeveloppeur TO Paul
Supprimer un rôle ou un rôle à un utilisateur Supprimer un rôle DROP ROLE <rôle> Supprimer un privilège système ou un rôle d un rôle REVOKE <liste de privilèges système ou rôle> ADMIN OPTION FROM <liste de rôles> Supprimer un privilège objet d un rôle REVOKE <liste de privilèges objet> ALL GRANT OPTION ON <liste d objets> TO <liste de rôles> [CASCADE CONSTRAINTS] Retirer un rôle à un utilisateur REVOKE <liste de rôles> FROM <liste d utilisateurs> PUBLIC
Les profils Définition Un profil est un ensemble de limites concernant l utilisation des ressources de la base de données. Un profil peut être attribué à un utilisateur lors de la création de l utilisateur. CREATE PROFILE LIMIT [SESSIONS PER USER entier UNLIMITED DEFAULT] [CPU PER SESSION entier UNLIMITED DEFAULT] [CONNECT TIME entier UNLIMITED DEFAULT]... Pour modifier : ALTER
Les utilisateurs Définition Tout utilisateur a un nom et un mot de passe. Il est propriétaire de tous les objets qu il a créés.. CREATE USER <nom d utilisateur> IDENTIFIED BY m de p EXTERNALLY GLOBALLY AS nom externe [DEFAULT TABLESPACE nom tablespace] [TEMPORARY TABLESPACE nom tablespace] [QUOTA entier K M UNLIMITED ON nom tablespace] [PROFILE nom de profil] [DEFAULT ROLE liste roles ALLEXCEPT liste roles NONE ] [PASSWORD EXPIRE] [ACCOUNT LOCK UNLOCK];...
En conclusion... Quand on crée un utilisateur... on lui donne un nom et un mot de passe (à changer éventuellement) on décide des ressources qu il pourra utiliser: combien de sessions il pourra ouvrir, combien de temps CPU il pourra consommer,... son profil on décide : ce qu il pourra faire sur les objets existants s il pourra créer de nouveaux objets son rôle