version 11.3 (Modifiée)
4D v11 inclut un serveur SQL performant permettant des accès externes aux données stockées dans la base 4D. Pour les applications tierces et les applications 4D, ces accès s'effectuent via un pilote ODBC 4D. Il est également possible d'effectuer des connexions directes entre une application cliente 4D et 4D Server. Toutes les connexions sont effectuées via le protocole TCP/IP.
Le serveur SQL d'une application 4D peut être stoppé ou démarré à tout moment. En outre, pour des raisons de performances et de sécurité, vous pouvez définir le port TCP et l'adresse IP d'écoute et restreindre les possibilités d'accès à la base de données 4D.
Accès externes au serveur SQL
L'accès externe au serveur SQL de 4D peut être effectué soit via ODBC (toutes configurations), soit directement (application cliente 4D connectée à 4D Server). Ce principe est résumé dans le schéma suivant :
En bleu : connexions via ODBC
En rouge : connexions directes
Au niveau des requêtes, l'ouverture d'une connexion externe directe ou via ODBC s'effectue à l'aide de la commande SQL LOGIN. Pour plus d'informations, reportez-vous à la description de cette commande.
Connexions via ODBC : 4D fournit un pilote ODBC (ou driver ODBC) permettant à toute application tierce (tableur de type Excel®, autre SGBD...) ou à une autre application 4D de se connecter au serveur SQL de 4D. Le pilote ODBC 4D doit être installé sur le poste de la partie SQL cliente. L'installation et la configuration du pilote ODBC 4D sont détaillées dans un manuel séparé.
Connexions directes : Seule une application 4D Server v11 SQL peut répondre aux requêtes SQL directes provenant d'autres applications 4D. De même, seules les applications 4D de la gamme "Professional" peuvent ouvrir une connexion directe vers une autre application 4D. Durant une connexion directe, l'échange de données s'effectue automatiquement en mode synchrone, ce qui élimine les questions liées à la synchronisation et à l'intégrité des données. Une seule connexion est autorisée par process. Si vous souhaitez établir plusieurs connexions simultanément, vous devez créer autant de process que nécessaire. Les connexions directes peuvent être sécurisées via la sélection de l'option Activer SSL du côté cible de la connexion (4D Server) dans la page "SQL" des Préférences. Les connexions directes ne sont autorisées par 4D Server que si le serveur SQL est démarré. Les connexions directes ont pour principal avantage d'accélérer les échanges.
Démarrer et stopper le serveur SQL
Dans 4D v11, le serveur SQL peut être démarré et stoppé de trois manières :
Manuellement, via la commande Démarrer le serveur SQL dans le menu Exécution de 4D :
Note : Avec 4D Server, cette commande est accessible sous forme de bouton dans la Page Serveur SQL.
Lorsque le serveur est lancé, le libellé de cette commande devient Arrêter le serveur SQL.
Automatiquement au démarrage de l'application, via les Préférences. Pour cela, affichez la page SQL/Configuration et cochez l'option Lancer le serveur SQL au démarrage :
Par programmation, via les commandes LANCER SERVEUR SQL et ARRETER SERVEUR SQL (thème "SQL").
Lorsque le serveur SQL est arrêté (ou tant qu'il n'a pas été lancé), 4D ne répond à aucune requête SQL externe.
Note : L'arrêt du serveur SQL n'a pas d'influence sur le fonctionnement du moteur SQL de 4D. Le moteur SQL est accessible en permanence pour les requêtes internes.
Préférences de publication du serveur SQL
Il est possible de configurer les paramètres de publication par défaut du serveur SQL intégré de 4D. Ces paramètres sont accessibles dans la page SQL/Configuration des Préférences de la base :
L'option Lancer le serveur SQL au démarrage permet de démarrer le serveur SQL au démarrage de l'application
Port TCP : Par défaut, le serveur SQL de 4D répond aux requêtes sur le port TCP 1919. Si ce port est déjà utilisé par un autre service ou si vos paramètres de connexion requièrent une autre configuration, vous pouvez changer le port TCP utilisé par le serveur SQL de 4D.
Note : Si vous passez 0, 4D utilisera le numéro de port TCP par défaut, c'est-àdire 1919.
Adresse IP : Vous pouvez définir l'adresse IP de la machine sur laquelle le serveur SQL doit traiter les requêtes SQL. Par défaut, le serveur répond sur toutes les adresses IP (option Toutes).
La liste déroulante "Adresse IP" liste automatiquement toutes les adresses IP présentes sur la machine. Lorsque vous sélectionnez une adresse particulière, le serveur ne répond qu'aux requêtes dirigées sur cette adresse. Cette fonctionnalité est destinée aux applications 4D hébergées sur des machines ayant plusieurs adresses TCP/IP.
Note : Côté client, l'adresse IP et le port TCP du serveur SQL auquel l'application se connecte doivent être correctement configurées dans la définition de la source de données ODBC.
Activer SSL : Cette option indique si le serveur SQL doit activer le protocole SSL pour traiter les connexions SQL. Lorsque vous cochez cette option, vous devez recopier les fichiers key.pem et cert.pem de 4D à l'emplacement suivant : MaBase/Preferences/SQL (où "MaBase" représente le dossier/package de la base).
Autoriser les requêtes Flash Player : Cette option permet d'activer le mécanisme de prise en charge des requêtes Flash Player par le serveur SQL de 4D. Ce mécanisme est basé sur la présence d'un fichier, nommé "socketpolicy.xml", dans le dossier de préférences de la base (Preferences/SQL/Flash/). Ce fichier est requis par Flash Player afin d'autoriser les connexions cross-domains ou les connexions par sockets des applications Flex (Web 2.0).
Dans la version précédente de 4D, ce fichier devait être ajouté manuellement. Désormais, lorsque vous cochez cette option, les requêtes Flash Player sont acceptées et un fichier "socketpolicy.xml" générique est créé si nécessaire pour la base.
Lorsque vous désélectionnez cette option, le fichier "socketpolicy.xml" est désactivé (renommé). Les requêtes Flash Player ultérieures reçues par le serveur SQL sont alors rejetées.
A l'ouverture de la base, l'option est cochée ou non en fonction de la présence d'un fichier "socketpolicy.xml" actif dans le dossier de préférences.
Note : Il est possible de définir l'encodage utilisé par le serveur SQL pour le traitement des requêtes externes à l'aide de la commande 4D SQL FIXER OPTION.
Contrôle des accès SQL pour le schéma par défaut
Pour des raisons de sécurité, il est possible de contrôler les actions que les requêtes externes adressées au serveur SQL peuvent effectuer dans la base de données 4D.
Ce contrôle est effectué à deux niveaux :
au niveau du type d'action autorisé,
au niveau de l'utilisateur ayant effectué la requête.
Ces paramétrages peuvent être effectués via la page SQL/Configuration des Préférences de la base :
Les paramétrages définis dans cette boîte de dialogue s'appliquent au schéma par défaut. En effet, depuis la version 11.3 de 4D, le contrôle des accès externes à la base est basé sur le concept des schémas SQL (cf. section Implémentations du moteur SQL de 4D). Si vous ne créez pas de schémas personnalisés, le schéma par défaut inclut toutes les tables de la base. Si vous créez d'autres schémas dotés de droits spécifiques et leur associez des tables, le schéma par défaut inclut uniquement les tables non incluses dans les schémas personnalisés.
Vous pouvez configurer séparément trois types d'accès au schéma par défaut via le serveur SQL :
"Lecture seulement (données)" : libre accès en lecture à toutes les données des tables de la base mais ne permet pas l'ajout, la modification ou la suppression d'enregistrements ni la modification de la structure de la base.
"Lecture/écriture (données)" : accès en lecture et en écriture (ajout, modification et suppression) à toutes les données des tables de la base mais ne permet pas la modification de la structure de la base.
"Complet (données et structure)" : accès en lecture et en écriture (ajout, modification et suppression) à toutes les données des tables de la base et à la structure de la base (tables, champs, liens, etc).
Vous pouvez désigner un ensemble d'utilisateurs pour chaque type d'accès. Pour cela, vous disposez de trois types d'options :
<Personne> : si vous sélectionnez cette option, le type d'accès sera refusé pour toutes les requêtes, quelle que soit leur provenance. Ce paramètre peut être utilisé même si le système de gestion des accès via des mots de passe de 4D n'est pas activé.
<Tout le monde> : si vous sélectionnez cette option, le type d'accès sera accepté pour toutes les requêtes (aucun contrôle n'est effectué).
groupe d'utilisateurs : cette option permet de désigner un groupe d'utilisateurs comme seul autorisé à effectuer le type d'accès associé. Cette option requiert que la gestion des mots de passe de 4D ait été activée. L'utilisateur à l'origine des requêtes fournit son nom et son mot de passe lors de la connexion au serveur SQL.
ATTENTION : Ce mécanisme s'appuie sur les mots de passe de 4D. Pour que le contrôle d'accès au serveur SQL soit effectif, le système de mots de passe de 4D doit être actif (un mot de passe doit avoir été attribué au Super_Utilisateur).
Note : Une option de sécurité supplémentaire peut être définie au niveau de chaque méthode projet 4D. Pour plus d'informations sur ce point, reportez-vous au paragraphe "Option "Disponible via SQL"" dans la section Implémentations du moteur SQL de 4D.