SQL - Data Control Language
Transcription
SQL - Data Control Language
Fabien Coelho SQL DCL : Data Control Language Fabien Coelho SQL DCL : Data Control Language Droits système vs base de données système autorisation de connexion SQL DCL : Data Control Language — utilisateurs réunis en groupes — authentification par mot de passe — machines autorisées (numéro ip) base de donnée Fabien Coelho — accès aux catalogues, aux données, aux langages MINES ParisTech — consultation vs modification — délégation des droits à d’autres utilisateurs — correspondance avec le précédent Composé avec LATEX, révision 2839 1 Fabien Coelho 2 SQL DCL : Data Control Language Fabien Coelho SQL DCL : Data Control Language Création d’un rôle utilisateur : LOGIN Concept de rôle titulaire de droits dans la base de données — identifié par nom (et numéro) pour le cluster approximation par catalogue : calvin@dbname — propriétaire d’objets (base, schéma, relation) CREATE ROLE "calvin" WITH LOGIN NOINHERIT ENCRYPTED PASSWORD ’Hobbes!’ IN ROLE "etudiant"; — super-user, création de bases, d’utilisateurs. . . utilisateur rôle spécial qui peut se connecter Création d’un rôle de regroupement : NOLOGIN — mot de passe, nombre de connexion max, expiration. . . groupe rôles donnés à des utilisateurs, pas de connection — organisation, regroupement des droits — restrictif (acquisition explicite) ou hérité (automatique) CREATE ROLE "maitre" NOLOGIN -- par défaut ADMIN "calvin" ROLE "hobbes", "suzy"; 4 3 Fabien Coelho SQL DCL : Data Control Language Fabien Coelho SQL DCL : Data Control Language Création d’un utilisateur CREATE USER hobbes WITH ENCRYPTED PASSWORD ’grr’ IN GROUP family; Acquisition explicite d’un rôle SET ROLE . . . droits effectifs de ce rôle CREATE USER calvin WITH ENCRYPTED PASSWORD ’h02bes’ CREATEDB CREATEUSER IN GROUP family; — doit être membre du rôle (groupe) — CURRENT USER vs CURRENT ROLE — les droits du rôle s’appliquent strictement RESET ROLE repasse au rôle (user) initialement connecté. INHERIT vs NOINHERIT contrôle des droits hérités automatiquement Création d’un groupe CREATE GROUP family; CREATE GROUP herge WITH tintin, milou, haddock; 5 Fabien Coelho 6 SQL DCL : Data Control Language Fabien Coelho SQL DCL : Data Control Language ROLE INHERIT vs NOINHERIT NOINHERIT droits des groupes, ignorés par défaut SET ROLE explicite pour y accéder Contrôles des accès — sujet important pour une base de donnée partagée CREATE TABLE t1(); -- permission denied SET ROLE plusfort; CREATE TABLE t2(); -- ok — système de droit très complet. . . sujets administrateur, propriétaire, utilisateurs, groupes ou PUBLIC objets DATABASE SCHEMA TABLE LANGUAGE FUNCTION INHERIT droits des groupes cumulés par défaut c’est valeur par défaut, hélas ? ! CREATE TABLE t1(); -- ok et connexion à une base particulière droits selon les objets, plus droits d’attribution des droits — par défaut permissif (consultation/utilisation pour PUBLIC) logiquement user NOINHERIT, groupe INHERIT 7 8 Fabien Coelho SQL DCL : Data Control Language Fabien Coelho Modes d’authentifications des connexions clients Droits de connexion et méthode d’authentification pg hba.conf fichier de configuration dans la base trust pas d’authentification ! modifiable par l’administrateur du système password mot de passe géré par PostgreSQL, circule en clair syntaxe method bases users hosts auth... md5 idem, mais pas de circulation en clair method local ou réseau host hostssl hostnossl bases all sameuser samegroup. . . hosts numéro IP et masque de sous-réseau SSPI MS Windows – single sign on Kerberos environnement chiffré. . . auth trust password md5 ident. . . all all all comics crypt idem, ancienne version (pg avant 7.2) GSSAPI RFC 2743 – single sign on users all calvin +eleves (membres du groupe) local hostnossl hostssl host SQL DCL : Data Control Language ident RFC 1413 (tcp 113) – connexions réseau ou locales calvin ident hobbes 10.2.14.0/24 md5 all 0.0.0.0/0 md5 +eleves 127.0.0.1/32 md5 LDAP RFC 4510 Lightweight Directory Access Protocol PAM Pluggable Authentication Modules (Linux, Solaris) 9 Fabien Coelho 10 SQL DCL : Data Control Language Fabien Coelho SQL DCL : Data Control Language Droits sur DATABASE Allocation ou retrait des droits sur les objets CONNECT connection à un catalogue — syntaxe un peu verbeuse, mais compréhensible. . . GRANT { ALL | { USAGE | ... }[, ...] } (col[, ...] ) ON { DATABASE | SCHEMA | TABLE | ... } objectname TO { { user | GROUP group | PUBLIC}[, ...] } [ WITH GRANT OPTIONS ] ; CREATE création de nouveaux SCHEMA TEMPORARY création de tables temporaires Droits sur SCHEMA REVOKE [ GRANT OPTIONS FOR ] { ALL | { USAGE | SELECT | ... }[, ...] } ON { DATABASE | SCHEMA | TABLE | ... } objectname FROM { { user | GROUP group | PUBLIC}[, ...] } ; CREATE créations de relations TABLE SEQUENCE VIEW et objets attachés CONSTRAINT INDEX. . . USAGE utilisation des relations 11 Fabien Coelho 12 SQL DCL : Data Control Language Fabien Coelho SQL DCL : Data Control Language Droits sur TABLE SELECT INSERT UPDATE DELETE autorise ces opérations (colonne) REFERENCES clefs étrangères (origine ou destination) (colonne) Droit sur LANGUAGE RULE créations de règles de transformations. . . TRIGGER actions automatiques avant ou après évènements USAGE nouvelles fonctions dans ce langage exemples : C, SQL, PL/pgSQL, PL/Tcl, PL/Perl, PL/Python. . . versions trusted (limitée) ou untrusted (complète) Droit sur FUNCTION EXECUTE exécution d’une fonctions concerne indirectement OPERATOR AGGREGATE. . . 13 Fabien Coelho 14 SQL DCL : Data Control Language Fabien Coelho SQL DCL : Data Control Language Manipulation de tables ? système droit connexion dans pg hba.conf Droits d’administrations DATABASE droit CONNECT createrole création utilisateurs et groupes SCHEMA droit USAGE createdb création de databases TABLE droit SELECT INSERT UPDATE DELETE. . . superuser le reste (ajout langage. . . ) autres éventuellement sur les séquences, vues. . . 15 16 Fabien Coelho SQL DCL : Data Control Language Fabien Coelho SQL DCL : Data Control Language Affichage des droits (privileges) pg catalog consultation des tables systèmes type interne aclitem dans description des objets Droit de modification des droits ? psql commande interactive \dp administrateur de la base, évidemment ! grantee=perms/grantor, * si attribuables propriétaire de l’objet concerné ! r SELECT read, w UPDATE write, a INSERT append, d DELETE, utilisateurs à qui on l’a donné x REFERENCES, t TRIGGER, X EXECUTE, U USAGE, C CREATE, c CONNECT, T TEMPORARY GRANT ... WITH GRANT OPTIONS; comics=# \dp auteur Access privileges for database "comics" Schema | Name | Type | Access privileges --------+--------+-------+---------------------------------------public | auteur | table | {coelho=arwdxt/coelho,eleves=r/coelho} 18 17 Fabien Coelho SQL DCL : Data Control Language Fabien Coelho SQL DCL : Data Control Language Conclusion Compléments à SQL, pas tous standards — très complet. . . FUNCTION ajout de nouvelles fonctions — PosgreSQL respecte le standard TRIGGER actions sur évènements (appel une fonction) c’est bien le seul ! — peu utilisé ! RULE réécriture des requêtes droits réels souvent liés aux contenus des tuples traduction de INSERT UPDATE DELETE sur VIEW telle facture éditable par telle personne. . . donc gestion par les applications INDEX indexation des tables pour optimisation 20 19 Fabien Coelho SQL DCL : Data Control Language Extensions des capacités TYPE ajout de nouveaux types (base, composites) DOMAIN type + contraintes LANGUAGE nouveau langage côté serveur OPERATOR CLASS classe d’opérateurs (pour indexation) List of Slides 1 SQL DCL : Data Control Language 2 Droits système vs base de données 3 Concept de rôle 4 Création d’un rôle utilisateur : LOGIN 4 Création d’un rôle de regroupement : NOLOGIN OPERATOR un opérateur (appel une fonction) 5 Création d’un utilisateur AGGREGATE un aggrégat (appel une fonction) 5 Création d’un groupe CAST conversions entre types 6 Acquisition explicite d’un rôle CONVERSION encodages des chaı̂nes de caractères 7 ROLE INHERIT vs NOINHERIT 8 Contrôles des accès 9 Droits de connexion et méthode d’authentification EXTENSION groupe d’objets (fonctions, opérateurs. . . ) 21 10 Modes d’authentifications des connexions clients 11 Allocation ou retrait des droits sur les objets 12 Droits sur DATABASE 12 Droits sur SCHEMA 13 Droits sur TABLE 13 Droit sur FUNCTION 14 Droit sur LANGUAGE 15 Manipulation de tables ? 16 Droits d’administrations 17 Droit de modification des droits ? 18 Affichage des droits (privileges) 19 Conclusion 20 Compléments à SQL, pas tous standards 21 Extensions des capacités