33
1 Bases de données et sites WEB Cours2 : Sécurité et contrôles d’accès Anne Doucet

Bases de données et sites WEB Cours2 :

Embed Size (px)

Citation preview

Page 1: Bases de données et sites WEB Cours2 :

1

Bases de données et sites WEBCours2 : Sécurité et contrôles d’accès

Anne Doucet

Page 2: Bases de données et sites WEB Cours2 :

2

Plan• Authentification• Autorisation

– Privilèges– Rôles– Profils– Limitations de ressources

• Audit• Contrôle d’accès via les vues

Page 3: Bases de données et sites WEB Cours2 :

3

Sécurité

• Confidentialité– L’information ne doit pas être accessible aux utilisateurs

non autorisés• Intégrité

– Les données ne peuvent être modifiées que par les utilisateurs habilités à le faire.

• Disponibilité– Les utilisateurs ayant le droit de faire certaines actions

doivent pouvoir accéder aux données correspondantes.• Les SGBD fournissent différents moyens pour garantir la

sécurité : authentification, contrôle d’accès, mécanismes d’audit, vues.

Page 4: Bases de données et sites WEB Cours2 :

4

Authentification• Chaque BD Oracle possède une liste de noms d’utilisateurs, et un mot de

passe associé.– Vérifié quand un utilisateur veut utiliser des données, des ressources,

des applications, par le système d’exploitation, le réseau, la base Oracle.

– Authentification dans Oracle : cryptage du mot de passe, verrouillage des comptes, expiration du mot de passe, vérification de la complexité du mot de passe.

• A la création d’un nouvel utilisateur, on définit– un espace de stockage des tables par défaut (default tablespace), – un espace de stockage de tables temporaire (temporary tablespace), – des quotas sur ces espaces.– Un profil délimitant l’accès aux ressources

Page 5: Bases de données et sites WEB Cours2 :

5

Autorisation

• Tous les éléments SQL ont un propriétaire. Un propriétaire d’un objet possède tous les droits (privilèges) sur cet objet.

• On peut donner des droits à d’autres utilisateurs pour accéder aux données, pour les modifier, pour obtenir des ressources, …

• Les droits sont accordés (ou refusés) à différents niveaux (objets, schémas, tables, tuples, CPU, …).

• On peut accorder des droits individuellement, ou par groupes.

Page 6: Bases de données et sites WEB Cours2 :

6

Privilèges

• Un privilège est un droit accordé pour utiliser un type d’instruction SQL, ou pour accéder à un objet.

• Principe :– Accorder des privilèges aux utilisateurs pour qu’ils puissent

travailler.– N’accorder aux utilisateurs que les privilèges dont ils ont

besoin. Trop de privilèges peut compromettre la sécurité.• Les privilèges sont accordés individuellement ou par groupe

d’utilisateurs (role)• Deux types de privilèges :

– System privilege – Schema Object Privilege

Page 7: Bases de données et sites WEB Cours2 :

7

System PrivilegesDroits d’effectuer certaines actions :

GRANT <system_privilege> TO <user_list> | PUBLIC [WITH GRANT OPTION]

GRANT : Accorder<System privilege> : liste de privilègesExemples : CREATE INDEX, CREATE PROCEDURE, DELETE ANY

TABLE, ALTER USER, CREATE VIEW, DROP ANY VIEW, DROP USER, …

TO <user_list> : liste d’utilisateurs autorisésTO PUBLIC donne les droits à tous les utilisateurs.WITH GRANT OPTION:permet d’accorder(transmettre) le privilège à d’autres

utilisateurs.

Ex: GRANT CREATE TABLE, CREATE TRIGGER TO user1, user2;

Page 8: Bases de données et sites WEB Cours2 :

8

Object Privileges

Droits d’effectuer des actions sur des objets du schéma:

GRANT <privilege_list> ON <database object> TO <user_list>|PUBLIC [WITH GRANT OPTION]

<Privilege list> : opérations du langage de manipulation de donnéesEx: ALTER, DELETE, EXECUTE, INSERT, UPDATE,…

<Database_object> : tables, vues, procedures, row, etc.

Ex: GRANT insert, update(Fonction, Salaire) ON EMP TO user2;GRANT all ON dept TO user3;

Page 9: Bases de données et sites WEB Cours2 :

9

Utilisation des privilèges

• Pour créer une vue, il faut :– Avoir obtenu un des privilèges système suivants

(explicitement ou par un rôle) :• CREATE VIEW (créer une vue dans son propre schéma)• CREATE ANY VIEW (créer une vue dans un autre

schéma)– Avoir un des privilèges suivants :

• SELECT, INSERT, UPDATE, DELETE sur tous les objets impliqués dans la vue

• SELECT ANY TABLE, INSERT ANY TABLE, UPDATE ANY TABLE, DELETE ANY TABLE

Page 10: Bases de données et sites WEB Cours2 :

10

Transmission des privilèges

Pour accorder un privilège à un autre utilisateur, il faut posséder le privilège avec l’option GRANT.

Ex :EMP(ID_EMP, NOM, SALAIRE, ID_SERVICE)SERVICE(ID_SERV, INTITULE, ID_DIR)

Max possède le droit SELECT sur EMP. Il peut le transmettre à un autre utilisateur (Jules), avec ou sans l’option GRANT.

Si Jules a l’option GRANT, il peut également transmettre ce droit, sinon, il en a seulement l’usage.

Page 11: Bases de données et sites WEB Cours2 :

11

Transmission des privilèges

On peut transmettre un privilège moins général que celui qu’on possède.

Max possède le droit INSERT sur EMP, avec l’option GRANT.Il peut transmettre INSERT(NOM) sur EMP à un autre utilisateur.

Un utilisateur peut obtenir le même privilège de la part de plusieurs utilisateurs différents, et le posséder de plusieurs manières (par ex. avec ou sans option GRANT).

Page 12: Bases de données et sites WEB Cours2 :

12

Exemple

Max est le propriétaire du schéma Emp, Service.Il effectue les ordres :

GRANT SELECT, INSERT ON emp TO jules, lulu WITH GRANT OPTION;GRANT SELECT, INSERT ON Service TO jules, lulu WITH GRANT OPTION;

Jules effectue les ordres suivants :GRANT SELECT, INSERT ON emp TO zoe;GRANT SELECT ON service TO zoe;

Lulu effectue les ordres suivants :GRANT SELECT, INSERT(NOM) ON emp TO zoe;GRANT SELECT ON service TO zoe;

Zoé a reçu les droits SELECT sur Emp et Service de deux utilisateurs différents. Elle a aussi reçu le droit INSERT(NOM) de deux façons différentes.

Page 13: Bases de données et sites WEB Cours2 :

13

Diagramme des droits

MaxSELECT on Serv

**

MaxINSERTOn Serv

**

MaxSELECTOn Emp

**

MaxINSERT on Emp

**

JulesSELECTOn Serv

*

JulesSELECTOnEmp

*Jules

INSERTOn Emp

*

ZoéSELECT On Emp

ZoéINSERT On Emp

LuluINSERTOn Emp

*

ZoéSELECTonServ

ZoéINSERT(NOM)

onEmp

LuluSELECTOn Emp

*

LuluSELECTOn Serv

*

*: with grant option** : propriétaire

Page 14: Bases de données et sites WEB Cours2 :

14

Annulation des privilèges

La transmission des droits conduit à un recouvrement des privilèges. SQL maintient un graphe des privilèges gardant la trace des privilèges et de leurs origines (utile pour l’annulation des privilèges).

Pour annuler des privilèges, on utilise la commande REVOKE :REVOKE <system_privilege> FROM <user_list>;REVOKE <object_privilege list> ON <database object>

FROM <user_list>;

Ex: REVOKE update ON emp FROM user1;

Si l’utilisateur a transmis ces privilèges à d’autres, le système renvoie une erreur et ne supprime pas les privilèges. Pour les supprimer, il faut utiliser l’option CASCADE.

Page 15: Bases de données et sites WEB Cours2 :

REVOKE

• REVOKE peut prendre 2 options RESTRICT et CASCADE.

• Lorsqu'on utilise REVOKE CASCADE, on supprime tous les privilèges transmis en cascade. (Un privilège obtenu par transmission (grant option) est abandonné si on supprime le privilège à celui qui l’a transmis).

• L’option REVOKE RESTRICT ne supprime que les privilèges qui n’ont pas été transmis. S’ils ont été transmis, le système renvoie une erreur.

15

Page 16: Bases de données et sites WEB Cours2 :

16

Exemple

MaxSELECT on Serv

**

MaxINSERTOn Serv

**

MaxSELECTOn Emp

**

MaxINSERT on Emp

**

JulesSELECTOn Serv

*

JulesSELECTOnEmp

*Jules

INSERTOn Emp

*

ZoéSELECT On Emp

ZoéINSERT On Emp

LuluINSERTOn Emp

*

ZoéSELECTonServ

ZoéINSERT(NOM)

onEmp

LuluSELECTOn Emp

*

LuluSELECTOn Serv

*

REVOKE SELECT,INSERT ON emp FROM lulu;Renvoie error

Page 17: Bases de données et sites WEB Cours2 :

17

Exemple

MaxSELECT on Serv

**

MaxINSERTOn Serv

**

MaxSELECTOn Emp

**

MaxINSERT on Emp

**

JulesSELECTOn Serv

*

JulesSELECTOnEmp

*Jules

INSERTOn Emp

*

ZoéSELECT On Emp

ZoéINSERT On Emp

LuluINSERTOn Emp

*

ZoéSELECTonServ

ZoéINSERT(NOM)

onEmp

LuluSELECTOn Emp

*

LuluSELECTOn Serv

*

REVOKE SELECT,INSERT ON emp FROM lulu CASCADE;

Page 18: Bases de données et sites WEB Cours2 :

18

Rôles

• Les rôles sont des groupes nommés de privilèges, qu’on accorde, en groupe, à des utilisateurs ou à d’autres rôles.

• Permet de gérer les privilèges – pour une application (ex: ensemble de privilèges

nécessaires pour exécuter l’application Paye)– Pour un groupe d’utilisateurs (privilèges des

directeurs de département, des responsables de la paye, etc.)

Page 19: Bases de données et sites WEB Cours2 :

19

Exemple

Définition du role ‘manager’ :CREATE ROLE manager;GRANT CREATE VIEW, CREATE PROCEDURE TO manager;GRANT SELECT, INSERT, UPDATE(SAL) ON emp TO manager;GRANT SELECT, INSERT, UPDATE ON dept TO manager;GRANT manager TO user1, user2, user3;

Pour annuler :REVOKE manager FROM user1;REVOKE INSERT ON emp FROM manager;

Pour annuler un role, il faut avoir le privilège GRANT ANY ROLE, ou avoir les privilèges WITH ADMIN OPTION.

Page 20: Bases de données et sites WEB Cours2 :

20

Roles prédéfinis

• Oracle a des rôles prédéfinis :– CONNECT : INSERT, UPDATE, DELETE, SELECT sur les

relations dont on a les privilèges. Permet de créer des vues. – RESOURCE : crée les tables, les vues, les triggers, les

procédures.– DBA : tous les privilèges système avec ADMIN OPTION

– EXP_FULL_DATABASE : tous les privilèges pour exporter les données de la base

– IMP_FULL_DATABASE : tous les privilèges pour importer des données.

Page 21: Bases de données et sites WEB Cours2 :

21

Profils

• Chaque utilisateur a un profil qui spécifie les ressources auxquelles il a droit.

• Permet de réguler la charge, quand il y a beaucoup d’utilisateurs.

• Plusieurs types de ressources – Ressources système (nombre des sessions concurrentes,

temps CPU, temps de connexion, …)– Restrictions concernant le mot de passe

• Blocage après un nombre d’essais sans succès• Délai d’expiration du mot de passe• Réutilisation du mot de passe

CREATE PROFILE profil LIMIT <resource parameters> |<password parameters>;

Page 22: Bases de données et sites WEB Cours2 :

22

Ressources système (1)

• SESSIONS_PER_USER

– Une session créée à chaque connexion– Consomme du temps CPU, et de la mémoire

• CPU_PER_SESSION

– Limite le temps CPU par session (en centièmes de secondes)

– Permet d’éviter de trop grandes consommations, qui pénalisent les autres utilisateurs

• CPU_PER_CALL

– Limite le temps CPU par appel

Page 23: Bases de données et sites WEB Cours2 :

23

Ressources système (2)

• CONNECT_TIME

– Limite le temps de connection d’un utilisateur• IDLE_TIME

– Limite le temps d’inactivité• LOGICAL_READS_PER_SESSION

– L’accès disque est une des opérations les plus coûteuses– Limite le nombre d’accès disque autorisés pour une session

• LOGICAL_READS_PER_CALL

– Limite le nombre d’accès disque autorisés pour une instruction

Page 24: Bases de données et sites WEB Cours2 :

24

Ressources système (3)

• PRIVATE_SGA (system global area),

– Limite la taille de l’espace système privé– exprimée en bits.

• COMPOSITE_LIMIT

– Permet de définir une limite globale d’un ensemble de ressources pour une session. Le coût total d’une session est calculé en faisant une moyenne pondérée des paramètres suivants : CPU_PER_SESSION, CONNECT_TIME, PRIVATE_SGA, LOGICAL_READS_PER_SESSION

Page 25: Bases de données et sites WEB Cours2 :

25

Ressources ‘Password’• FAILED_LOGIN_ATTEMPTS

– Limite le nombre d’essais infructueux• PASSWORD_LIFE_TIME

– Limite la durée d’expiration du mot de passe (en nb de jours)• PASSWORD_REUSE_TIME

– Limite le nombre de jour avant que le mot de passe puisse être réutilisé • PASSWORD_REUSE_MAX

– Limite le nombre de changements de mots de passe avant de pouvoir réutiliser celui-ci.

Réutilisation du mot de passe :Si PASSWORD_REUSE_TIME est 30 et PASSWORD_REUSE_MAX est

10, l’utilisateur peut réutiliser son mot de passe au bout de 30 jours, s’il a été changé 10 fois.

Si on spécifie UNLIMITED pour un des deux paramètres, l’utilisateur ne peut jamais réutiliser un mot de passe.

Page 26: Bases de données et sites WEB Cours2 :

26

ExemplesCREATE PROFILE app_user LIMIT

SESSIONS_PER_USER UNLIMITED CPU_PER_SESSION UNLIMITED CPU_PER_CALL 3000 CONNECT_TIME 45 LOGICAL_READS_PER_SESSION DEFAULT LOGICAL_READS_PER_CALL 1000 PRIVATE_SGA 15KCOMPOSITE_LIMIT 5000000;

CREATE PROFILE new_profileLIMIT PASSWORD_REUSE_MAX 10PASSWORD_REUSE_TIME 30;

Page 27: Bases de données et sites WEB Cours2 :

27

Dépassement des limites

Dépassement de CONNECT_TIME ou IDLE_TIME :- la transaction est défaite - la session est terminée - le système renvoie une erreur en cas de nouvelle instruction

Dépassement des autres limites :- l’opération est annulée- l’instruction en cours est défaite, - le système renvoie une erreur. - l’utilisateur peut valider ou annuler la transaction en cours, et doit terminer la session.

Page 28: Bases de données et sites WEB Cours2 :

28

Surveillance (Audit)

• Prévoir les ressources nécessaires pour des actions particulières

• Détecter des activités anormales (ex: suppression de données, d’objets du schéma par des utilisateurs non autorisés)

• Collecter des informations (statistiques) sur les différentes activités (fréquence des modifications de chaque table, nombre d’accès disque, nombre de sessions concurrentes, nombre d’exécutions réussies, nombre d’échecs, activités d’un utilisateur précis, etc.).

• Permet d’ajuster les paramètres pour améliorer les performances (tuning).

Page 29: Bases de données et sites WEB Cours2 :

29

Vues

• Trois visions d’une BD :– Vues (BD virtuelle)– Relations (niveau conceptuel)– Pages physiques (stockage des données)

• Pourquoi utiliser des vues ?– Pour faciliter certaines requêtes (ou les exprimer plus

simplement)– Pour la modularité (niveau d’abstraction plus élevé)– Pour protéger des données

Page 30: Bases de données et sites WEB Cours2 :

30

Vues

• Une vue est une relation virtuelle, qui contient le résultat d’une requête Q sur la base.

• Syntaxe : CREATE VIEW nom_vue [(att1, att2...)] AS requête_SQL [ WITH CHECK OPTION ]

– nom_vue désigne le nom de la relation virtuelle– att1, ... (optionnel) permet de nommer les attributs de la

vue (attributs de la requête par défaut)– requête_SQL désigne une requête SQL standard qui définit

le contenu de la vue (définition de la vue)– WITH CHECK OPTION : protège des mises à jour

intempestives

Page 31: Bases de données et sites WEB Cours2 :

31

Exemple

ENS(ID_ENS,NOM,GRADE,DOMAINE,SALAIRE,ADRESSE,TEL)

COURS(ID_COURS,TITRE,NIVEAU,ID_ENS)

CREATE VIEW ProfsdeL3 (ID, NOM) AS SELECT ID_ENS,NOM FROM ENS E,COURS C WHERE E.GRADE = ‘Professeur’

AND E.ID_ENS=C.ID_ENS AND NIVEAU=‘L3’

Page 32: Bases de données et sites WEB Cours2 :

32

Confidentialité et vues

• Les vues permettent de cacher de l’information à des utilisateurs non autorisés. On peut cacher des attributs, ou/et des nuplets.

Ex1 : Cacher le salaire, l’adresse, le téléphone des enseignantsCREATE VIEW Enseignants ASSELECT ID_ENS,NOM,GRADE,DOMAINE FROM ENS

Ex2 : Enseignants informaticiensCREATE VIEW EnseignantsInformaticiens ASSELECT ID_ENS,NOM,GRADE FROM ENS E WHERE E.DOMAINE = ‘Informatique’

Page 33: Bases de données et sites WEB Cours2 :

33

Conclusion

• La protection des données de la base est un enjeu important.

• Plusieurs moyens– Filtrer les connexions– Donner des droits spécifiques aux utilisateurs– Surveiller l’utilisation des données– Cacher des informations à l’aide de vues– Cryptage des données