4D v11 SQL et les schémas SQL

publicité
4D v11 SQL et les schémas SQL
Par Timothy PENNER, Technical Services Team Member, 4D Inc.
Note technique 4D-200901-01-FR
Version 1 - Date 1 janvier 2009
Résumé
Note traduite de l'anglais par Stéphanie Tirtiat (4D S.A.S., Support Technique International).
Cette note technique décrit les concepts généraux des schémas dans la version 3 de 4D v11 SQL (11.3), et
ultérieure. Elle vous fournit des exemples pour créer, modifier et supprimer des schémas. Une base exemple
sous forme de composant propose un moyen encore plus simple pour le développeur de créer et modifier des
schémas. Ces informations devraient permettre aux développeurs 4D v11 SQL d'aborder et d'utiliser les
schémas SQL.
4D Notes techniques
Copyright © 1985-2009 4D SAS - Tous droits réservés
Tous les efforts ont été faits pour que le contenu de cette note technique présente le maximum de fiabilité possible.
Néanmoins, les différents éléments composant cette note technique, et le cas échéant, le code, sont fournis sans garantie d'aucune sorte.
L'auteur et 4D S.A. déclinent donc toute responsabilité quant à l'utilisation qui pourrait être faite de ces éléments, tant à l'égard de leurs
utilisateurs que des tiers.
Les informations contenues dans ce document peuvent faire l'objet de modifications sans préavis et ne sauraient en aucune manière engager 4D
SA. La fourniture du logiciel décrit dans ce document est régie par un octroi de licence dont les termes sont précisés par ailleurs dans la licence
électronique figurant sur le support du Logiciel et de la Documentation afférente. Le logiciel et sa documentation ne peuvent être utilisés, copiés
ou reproduits sur quelque support que ce soit et de quelque manière que ce soit, que conformément aux termes de cette licence.
Aucune partie de ce document ne peut être reproduite ou recopiée de quelque manière que ce soit, électronique ou mécanique, y compris par
photocopie, enregistrement, archivage ou tout autre procédé de stockage, de traitement et de récupération d'informations, pour d'autres buts que
l'usage personnel de l'acheteur, et ce exclusivement aux conditions contractuelles, sans la permission explicite de 4D SA.
4D, 4D Calc, 4D Draw, 4D Write, 4D Insider, 4ème Dimension ®, 4D Server, 4D Compiler ainsi que les logos 4e Dimension, sont des marques
enregistrées de 4D SA.
Windows,Windows NT,Win 32s et Microsoft sont des marques enregistrées de Microsoft Corporation.
Apple, Macintosh, Power Macintosh, LaserWriter, ImageWriter, QuickTime sont des marques enregistrées ou des noms commerciaux de Apple
Computer,Inc.
Mac2Win Software Copyright © 1990-2002 est un produit de Altura Software,Inc.
4D Write contient des éléments de "MacLink Plus file translation", un produit de DataViz, Inc,55 Corporate drive,Trumbull,CT,USA.
XTND Copyright 1992-2002 © 4D SA. Tous droits réservés.
XTND Technology Copyright 1989-2002 © Claris Corporation.. Tous droits réservés ACROBAT © Copyright 1987-2002, Secret Commercial
Adobe Systems Inc.Tous droits réservés. ACROBAT est une marque enregistrée d'Adobe Systems Inc.
Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires
respectifs.
1 / 12
4D v11 SQL et les schémas SQL
Introduction
La troisième édition de 4D v11 SQL (11.3) apporte son lot d'améliorations et d'implémentations pour la
gamme de produit 4D v11 SQL. Une fonctionnalité particulièrement utile est le support des schémas par
l'interpréteur SQL intégré dans cette gamme. L'implémentation de cette fonction a suscité des modifications
dans l'interface et l'introduction de nouvelles commandes SQL. Cette note technique décrit ces changements
de l'interface et explique comment utiliser chacune des nouvelles commandes du langage SQL. Nous
comparerons également la gestion des droits d'accès entre cette version 11.3 et les versions précédentes. Une
base exemple accompagne cette note technique.
Qu’est-ce que les schémas SQL ?
Les schémas SQL sont une manière de sécuriser les accès extérieurs - par exemple via ODBC ou une
connexion SQL - à votre base de données.
Comparaison avec les versions précédentes (11.0, 11.1, 11.2)
Avant la version 11.3 de 4D v11 SQL, les droits d’accès pour les connexions extérieures via SQL ou ODBC
ne pouvaient s’appliquer que globalement pour toute la base de données. Ces accès se paramétraient dans les
préférences SQL.
2 / 12
Préférences SQL dans les versions 11.0, 11.1 et 11.2
A partir de la version 4D v11.3 SQL, les droits d'accès pour les connexions externes sont définies par
schéma et chaque table peut être configurée pour utiliser un schéma. Les paramètres accessibles dans les
préférences SQL ne sont maintenant utilisées que pour le schéma par défaut, DEFAULT_SCHEMA, qui est
appliqué automatiquement à chaque table nouvelle créée ainsi qu'à toute table qui existait dans la base de
données avant la mise à jour vers cette troisième édition de 4D v11 SQL.
Chaque schéma a trois droits d’accès qui peuvent être assigné chacun à un groupe d’utilisateurs :
• Lecture seulement (Données)
• Lecture/Ecriture (Données)
• Complet (Données & Structure)
Note :
comme dans les versions précédentes, le contrôle d'accès ne s'applique qu'aux connexions provenants de
l'extérieur. Les commandes internes Debut SQL/Fin SQL, EXECUTER SQL, CHERCHER PAR
SQL,… gardent un accès total aux tables.
Note du traducteur :
Pour information, à partir de la version 11.3, une nouvelle option Autoriser les requêtes Flash Player,
3 / 12
permet d’activer le mécanisme de prise en charge des requêtes Flash Player par le serveur SQL de 4D (voir
addendum pour plus d'information 4D v11 addendum r3).
Pourquoi utiliser les schémas ?
Les schémas devraient être utilisés dans toute base de données qui est sensée être interrogée par des sources
extérieures - via SQL ou ODBC par exemple - dans un souci de sécurité des données.
De plus, les schémas sont assez simples à utiliser et à paramétrer, soit par le code SQL soit à l’aide de
composants.
Comment fonctionnent-ils ?
Un schéma est un objet virtuel contenant des tables.
En SQL, le but des schémas est d’assigner des droits d’accès spécifiques à différents ensembles d’objets de
la base. Toute table, vue, procédure est en fait toujours créée dans un schéma.
Les schémas divisent la base de données en entités indépendantes. En d’autres termes, une table appartient
toujours à un seul schéma.
Quand une base de données est créée ou convertie en 4D v11.3 SQL (ou version ultérieure), un schéma par
défaut est créé et regroupe toutes les tables de la base : DEFAULT_SCHEMA. Il ne peut être ni supprimé ni
renommé.
Les modifications du DEFAULT_SCHEMA peuvent se faire soit par le code SQL soit par le dialogue des
préférences SQL.
4 / 12
Préférences SQL dans la version 11.3
Note :
Seuls le Super_Utilisateur et l’Administrateur de la base de données peuvent créer, modifier et supprimer des
schémas. Si aucun mot de passe n’est nécessaire pour ouvrir la base, alors tout utilisateur peut accéder aux
schémas sans restriction.
Les schémas sont créés, modifiées et supprimés via les commandes SQL. Un nouveau menu popup dans
l’inspecteur de structure permet d’assigner un schéma à une table.
5 / 12
Créer un schéma
Pour créer un schéma, on utilise cette syntaxe :
Debut SQL
CREATE SCHEMA monSchema;
Fin SQL
Lecode ci-dessus va créer un schéma nommé monSchema.
Modifier un schéma
Un schéma se modifie par programmation en utilisant les commandes SQL.
Pour rappel, le schéma par défaut, DEFAULT_SCHEMA peut être modifié par programmation mais aussi
par le dialogue des préférences SQL.
Les paragraphes suivants insistent sur la syntaxe spécifique de ces diverses opérations.
Renommer un schéma
Renommer un schéma se fait de cette manière :
Debut SQL
ALTER SCHEMA monSchema RENAME TO SchemaTest;
6 / 12
Fin SQL
Le code ci-dessus renomme le schéma monSchema en SchemaTest.
Accorder des droits de lecture
Accorder des droits de lecture sur un schéma se fait de cette manière :
Debut SQL
GRANT READ ON SchemaTest to Groupe_Utilisateurs;
Fin SQL
On accorde dans cet exemple des droits de lecture sur le schéma pour le groupe nommé
<Groupe_Utilisateurs>.
Note :
Attention aux caractères utilisés dans le nom du groupe. S’il comporte des espaces ou des accents, il faudra
respecter la règle des noms_sql et utiliser les crochets.
http://www.4d.fr/documentation/4DdocV11/CMF/CMF18480.HTM
Par exemple :
GRANT READ ON SchemaTest to [Groupe des Développeurs];
Accorder des droits de lecture et écriture
Accorder des droits de lecture et écriture sur un schéma se fait de cette manière :
Debut SQL
GRANT READ WRITE ON SchemaTest to Groupe_ChefsDeProjets;
Fin SQL
Le code ci-dessus accorde un accès en lecture et écriture sur le schéma nommé SchemaTest pour le groupe
nommé <Groupe_ChefsDeProjets>.
Accorder tous les droits
Accorder tous les droits sur un schéma se fait de cette manière :
Debut SQL
7 / 12
GRANT ALL ON SchemaTest to Groupe_Developpeurs;
Fin SQL
Le code ci-dessus accorde un accès total au groupe nommé <Groupe_Developpeurs> pour le schéma
nommé SchemaTest.
Note :
Dans la version courante de 4D v11 SQL, il n’est pas possible de donner accès au pseudo-groupe <Tout le
monde>.
• Une solution est de créer un groupe contenant tous les utilisateurs et de donner les accès à ce groupe ;
• Une autre solution est de recréer le schéma puisque les nouveaux schémas créés utilisent le groupe
<Tout le monde> pour les accès READ et READ_WRITE.
Révoquer les droits d’accès
Révoquer un accès à un schéma équivaut à définir le niveau d'accès spécifié à <Personne>. Cela se fait de
cette manière :
Debut SQL
REVOKE READ WRITE ON SchemaTest;
Fin SQL
Ce code révoque les droits de lecture/écriture pour le schéma nommé SchemaTest, c’est-à-dire que
READ_WRITE est appliqué à <Personne>.
Appliquer un schéma
Les schémas créés peuvent être appliqués aux tables :
• soit par l’éditeur de structure via l’inspecteur,
• soit en utilisant la commande SQL ALTER TABLE.
Pour appliquer un schéma par code :
Debut SQL
ALTER Table Table_1 SET SCHEMA SchemaTest;
Fin SQL
Le code ci-dessus applique le schéma SchemaTest pour la table [Table_1].
8 / 12
La copie d'écran ci-dessous montre la nouvelle propriété dans la fenêtre de l'inspecteur pour appliquer un
schéma par la structure :
Supprimer un schéma
Supprimer un schéma se fait de cette manière :
Debut SQL
DROP SCHEMA SchemaTest;
Fin SQL
Le code ci-dessus supprime le schéma nommé SchemaTest.
D'autres façons de sécuriser votre base de données
En plus des droits d'accès globaux disponibles dans les versions précédentes de 4D v11 SQL, vous avez
aussi la possibilité d’utiliser la méthode base Sur Authentification SQL pour sécuriser votre base de
données. Cette méthode base a été introduite à partir de la version 4D v11.2. Elle permet de capter les
connexions SQL et de procéder à des authentifications. Ce mécanisme est bien sûr toujours disponible dans
la version 4D v11.3 SQL, et ultérieure.
Méthode base Sur authentification SQL
http://www.4d.fr/documentation/4DdocV11/CMF/CMF10034.HTM
Extrait de la documentation :
9 / 12
La Méthode base Sur authentification SQL permet de filtrer les requêtes adressées au serveur SQL intégré
de 4D. Le filtrage peut être effectué sur la base du nom, du mot de passe ainsi que (facultativement) de
l'adresse IP de l'utilisateur.
(...)
Lorsqu'elle existe, la Méthode base Sur authentification SQL est automatiquement appelée par 4D ou 4D
Server à chaque connexion externe au serveur SQL.
La base exemple
La base exemple qui accompagne cette note technique se présente en deux parties :
- la base matrice comportant le source du composant
- la base-composant
La base-composant peut être intégrée dans une base 4D v11.3 SQL (ou ultérieure) existante. Il vous
permettra de visualiser et de modifier plus aisément les schémas de la base hôte. La méthode composant
"SE_OPEN_SCHEMA_EDITOR" est utilisée pour ouvrir l'interface de l'éditeur.
La copie d'écran ci-dessous montre l'éditeur de schémas ouvert dans une base hôte qui n'a que le schéma par
défaut DEFAULT_SCHEMA :
La copie d'écran ci-dessous montre l'éditeur de schéma ouvert dans la base hôte qui possède quelques
schémas créés par l'utilisateur :
10 / 12
Ajouter un schéma
Avec ce composant "Schema Editor", vous pouvez ajouter un schema via l'interface utilisateur. Pour cela,
cliquez simplement sur le bouton "Ajouter" dans l'éditeur de schémas pour obtenir le dialogue suivant :
Modifier un schéma
Avec ce même composant, vous pouvez modifier un schéma existant en double-cliquant sur le schéma que
vous voulez modifier. Le dialogue suivant s'affichera :
11 / 12
Notes :
Comme déjà écrit plus haut, il n’est pas possible de donner accès au pseudo-groupe <Tout le monde> dans
la version courante de 4D v11 SQL. Si vous essayez, vous aurez un message d'alerte. Une solution est de
créer un groupe contenant tous les utilisateurs et de donner les accès à ce groupe.
Les schémas nouvellement créés utilisent aussi le groupe <Tout le monde> pour les accès en lecture et en
lecture-écriture. Donc, recréer simplement le schéma est une autre solution. Cependant, supprimer un
schéma aura pour conséquence que toutes les tables qui appartenaient à ce schéma reviendront au schéma par
défaut DEFAULT_SCHEMA. Vous aurez alors besoin de réassigner le schéma pour chaque table revenue
au schéma par défaut.
NDT :
Le composant 4DPop offre aussi la possibilité de créer, modifier et appliquer ces schémas par son module
4D Pop sqlSchemas.
http://www.4d.fr/products/4dpop.html
Extrait de la documentation :
Etablissez via une interface graphique les schémas SQL utilisés lors des connexions externes en mode SQL
(ODBC, SQL Pass-through natif, 4D for Flex, etc.). Les schémas sont pris en compte lorsque la méthode de
base Sur Authentification SQL est définie.
Conclusion
Cette note technique vous a décrit les concepts généraux des schémas dans la version 3 de 4D v11 SQL
(11.3), et ultérieure. Elle vous a fourni des exemples pour créer, modifier et supprimer des schémas. Une
base exemple sous forme de composant propose un moyen plus simple pour le développeur de créer et
modifier des schémas. Ces informations devraient permettre aux développeurs 4D v11 SQL d'aborder et
d'utiliser les schémas SQL.
12 / 12
Téléchargement