|
||||
Ouverture de sessionNavigationContactez-nousAdministration du site : RechercheSujets du forumSujets actifsNouveaux sujets:SyndicationSondageQuelle est la version de PostgreSQL la plus répandue sur vos serveurs ? 8.3 10% 8.2 42% 8.1 40% 8.0 2% 7.4 6% 7.3 ou antérieure 0% Nombre de votes: 48 |
Utiliser du Python côté serveurTechnique | Utiliser du Python côté serveurPar Jean-Christophe Arnu le 30/09/2004 - 15:39 Python est un langage largement utilisé de nos jours. Il permet de s'interfacer avec un grand nombre de bases de données et PostgreSQL n'échappe pas à la règle. Bien que Python soit connu pour le développement de requêtage des serveurs PostgreSQL (applications, maintenance, ...), un support est aussi intégré «côté serveur» dans PostgreSQL. Hors, dans le « ChangeLog » de la version de 7.4 de PostgreSQL (version 7.4 du changelog également), on trouve la petite phrase suivante dans la section « côté serveur » : Make PL/Python an untrusted language, now called plpythonu (Kevin Jacobs, Tom) Comme il y est dit, Python ne supporte plus un environnement d'exécution restreint et, de ce fait, PostgreSQL ne supporte plus Python (ou PL/Python) comme langage «accrédité». Mais quel est cet environnement d'exécution restreint en Python ? Qu'est-ce qu'un langage « accrédité » ? Pourquoi les développeurs de PostgreSQL ont décidé de placer Python en langage « non accrédité » et qu'est-ce que cela implique ? Python est un langage script relativement répandu et répondant à un grand nombre de problématique. Comme tout langage de cette génération, Python intégrait la possibilité de lancer des scripts chargés dynamiquement à l'intérieur d'un environnement d'exécution où certaines fonctionnalités seraient permises et où d'autres seraient inaccessibles. Cette fonctionnalité d'environnement restreint permettait donc de rendre l'application qui l'implantait capable de limiter les actions des utilisateurs et de rendre l'application plus robuste vis à vis de l'ingéniosité de ces derniers. Plusieurs environnements Python d'exécution restreinte existent comme rexec ou Bastion. Jusqu'à récemment, PostgreSQL utilisait rexec mais les développeurs de Python ont décidé de rendre ces modules inactifs dans les version 2.2 et 2.3 de Python (voir [1]). En effet, plusieurs failles dans ces modules ont été trouvées (voir le fil de discussion commençant par [2]). Reste à savoir pourquoi l'équipe PostgreSQL a fait le choix de placer Python en langage non accrédité. PostgreSQL permet d'utiliser plusieurs langages dans les procédures stockées, les déclencheurs, etc... Chaque langage côté serveur dispose donc d'une entrée dans une table Pour conclure, nous pouvons souhaiter que Python réintègre rapidement un environnement d'exécution limité de manière à ce que les utilisateurs puissent bénéficier de la puissance de ce langage sur PostgreSQL et côté serveur. |
|||
© PostgreSQLFr, tous droits réservés.
Site déclaré à la CNIL sous le numéro 1074678, conformément à la Loi en vigueur.