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