Droits, Vues et gestion des utilisateurs

publicité
Postgresql : gestion multi-utilisateurs
Gestion des Droits
Rôle de Connexion
Rôle de Groupe
Appartient
Objets
A des droits sur
{
Tables
Vues
Les Rôles
Un rôle correspond à un utilisateur et/ou à un groupe. Un rôle a des droits et il peut être membre d'un
ou plusieurs autres rôles.
Le concept des utilisateurs et des groupes est facile à appréhender. Malheureusement, il ne donne
pas beaucoup de liberté dans son utilisation. Un utilisateur fait partie d'un ou plusieurs groupes. Il
hérite en cela des droits de ces groupes. À partir du moment où un utilisateur fait partie d'un groupe, il
dispose des droits de ce groupe. Il lui est impossible de masquer les droits du groupe pour ne voir que
les siens. Il lui est aussi impossible de masquer ses droits par ceux du groupe. Les rôles permettent
tout cela.
À sa création, un rôle peut avoir plusieurs options :
•
•
•
•
login
createdb
createrole
superuser
le rôle est autorisé à se connecter sur une base
le rôle est autorisé à créer une base de données
le rôle est autorisé à créer un autre rôle
le rôle a tous les droits car il est un superutilisateur
Un rôle pouvant créer un autre rôle n'est pas forcément un superutilisateur. Pour qu'un rôle soit
superutilisateur, il doit avoir été créé avec l'option superuser par un superutilisateur.
Il est donc possible de nommer un administrateur, chargé de la création des bases et des rôles, qui
ne soit pas le maître absolu du SGBD. Certes, il pourra créer des bases mais cela ne lui donnera pas
le droit de supprimer objets et données dans cette base (en supposant qu'un autre rôle soit le
propriétaire de la base).
Les rôles sont définis pour l'ensemble des bases de données. Par il existe un rôle « postgres » à qui
est attribué le droit « superutilisateur ».
© Jacques Chambon
1/7
Postgresql : gestion multi-utilisateurs
Vision Interface PgAdmin
Pour créer un rôle avec l'interface, il suffit de sélectionner l'objet, de cliquer bouton droit de la souris, et
de sélectionner la commande « ajouter un rôle ».
Première étape : ajouter un Deuxième étape : ajouter un Troisième étape :
groupe
utilisateur
l'utilisateur au groupe.
affecter
Vision SQL
Création des Rôles de connexion
CREATE ROLE "dupont" LOGIN NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE;
CREATE ROLE "durant" LOGIN NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE;
CREATE ROLE "duchmuc" LOGIN NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE;
CREATE ROLE "dudule" LOGIN NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE;
Création des Rôles de groupe
CREATE ROLE "Acheteur" NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE;
CREATE ROLE "Cadastre" NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE;
CREATE ROLE "Cadastre_centre" NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE;
CREATE ROLE "Cadastre_fleuve" NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE;
CREATE ROLE "Service_Technique" NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE;
Affectation des Rôles de connexion aux rôles de groupe
GRANT "Acheteur" TO "dupont";
GRANT "Cadastre_fleuve" TO "durant";
GRANT "Cadastre_centre" TO "duchmuc";
GRANT "Service_Technique" TO "dudule";
Les VUES (Views)
Les vues sont dérivées des tables, contrairement à une table, une vue ne contient pas de données,
elle n'a pas d'existence permanente. Elle ne peut donc être utilisée pour réaliser des mises à jour ou
© Jacques Chambon
2/7
Postgresql : gestion multi-utilisateurs
des destructions de données. Chaque fois qu'une vue est utilisée dans une requête, la table
correspondant a cette vue est créée.
Une vue ne correspond pas obligatoirement à une table dans sa totalité. Elle peut être composée
d'éléments d'une tables ( par projection ou sélection) ou de plusieurs tables ( par jointure).
En général on crée une vue pour deux raisons:
•
Afin de réaliser des accès restreints. L'utilisateur ne voit qu'une partie des données de la table
dont est issue la vue.
•
Améliorer l'interface utilisateur en construisant des vues qui sont des jointures entre plusieurs
tables. Par exemple on renseigne une table issue d'une association en insérant les libellés
correspondant aux clés présentes dans la table "association"
Création de vues
Avec contrôle dépendant du contenant : mode Sélection
Nous allons créer la Vue « Luminaire_fleuve_vue », qui permettra la restriction associée au salarié
« Durant ».
Pour créer une vue il faut cliquer Il faut commencer par donner un nom et préciser le
bouton droit sur la rubrique Vue. propriétaire dans dans l'onglet « Propriétés ».
Choisir « Ajouter une vue »
Définir ensuite la
requête correspondant à
la vue adéquate.
La dernière étape consiste à déterminer les droits d'accès sur
cette vue.
Le propriétaire a tous les droits : l'interface le détermine
automatiquement.
Il suffit d'ajouter que le rôle « Cadastre fleuve » disponible dans la
liste déroulante, aura le droit SELECT (cochez la zone
correspondante) et valider en cliquant sur le bouton « Ajou/Modif)
Validation générale par le bouton OK
Avec contrôle dépendant du contenant : mode Projection
Dans l'exemple proposé, des attributs de service ont été ajoutés
à certaines tables. C'est le cas pour la table « changer » dont la
colonne offset_ n'est qu'une colonne de service.
La vue « changer_vue » ne présentera aux utilisateurs que les trois premières colonnes.
Syntaxe SQL
CREATE OR REPLACE VIEW changer_vue AS
SELECT changer.cha_date, changer.lum_code_, changer.amp_numero
FROM changer;
© Jacques Chambon
3/7
Postgresql : gestion multi-utilisateurs
ALTER TABLE changer_vue OWNER TO postgres;
GRANT ALL ON TABLE changer_vue TO postgres;
GRANT SELECT ON TABLE changer_vue TO public;
Test des connexions
Le test de la connexion se fait au niveau du middleware dans lequel on précise le nom de connexion
de l'utilisateur et son mot de passe associé.
Vision ODBC
C'est à partir des outils d'administration /
Source de Données ODBC, que se
configure la liaison middleware.
Il est important de préciser le user name
et le Password.
Cette liaison doit être configurée sur le
poste de travail de Durant. C'est une
vision « poste à poste » de l'usage d'un
poste de travail.
Un poste de travail est associé à un seul
utilisateur.
Dans Access, il faut ensuite utiliser la commande « Fichier / Données externes / Lier des tables» pour
accéder aux données via ODBC.
Seules les tables autorisées pourront être ouvertes par Durant. Si vous établissez un lien avec la table
Type_ampoule, cette liaison apparaîtra, mais une tentative de lecture se traduira par un échec.
La requête suivante pourra alors être réalisée, afin d'offrir à Durant une vision globale sur les
luminaires présents dans sa zone de compétence.
Remarques : 1 - l'attribut « offset_ » n'apparaît pas dans la « table » luminaire_fleuve.
© Jacques Chambon
4/7
Postgresql : gestion multi-utilisateurs
2 - cette vision en lecture seule pourrait être remplacée par une Vue au niveau de la base de
données.
Dans la base proposée en exemple, une vue a été créée pour avoir la liste des Luminaires des
secteurs 3 et 4.
Vision JDBC
Avec OoBase il faut créer une nouvelle base de Données en utilisant une connexion JDBC. Les étapes
sont les suivantes :
Dans la première ligne suivante, il faut indiquer le nom ou l'adresse du serveur et le nom de la base.
Attention, dans l'environnement Open office la casse a son importance!
Localhost désigne la machine locale.
Il faut ensuite donner le nom et le mot de passe de l'utilisateur définit dans la base de Données
© Jacques Chambon
5/7
Postgresql : gestion multi-utilisateurs
testez la connexion en frappant le mot de passe attendu
Enregistrez l'environnement requêteur local et ouvrez la « base » en suivant
La liaison est immédiate
On visualise alors tous les objets disponibles
dans la Base de Données, mais le contenu des
seuls objets autorisés pourra être affiché.
© Jacques Chambon
6/7
Postgresql : gestion multi-utilisateurs
Avec OoCalc, il suffit d'appuyer sur la touche F4 pour obtenir la liste de toutes les connexions établies
avec les différentes bases du sytème d'informations.
L'usage de l'icône « Copier » permet de faire « descendre les données » dans la partie tableur.
© Jacques Chambon
7/7
Téléchargement