Lettre d'information de Dalibo

L'actualité de PostgreSQL et de ses projets satellites. Mars 2012.

Événements

Mises à jour mineures de PostgreSQL : 9.1.3, 9.0.7, 8.4.11, 8.3.18

Le projet PostgreSQL a sorti le lundi 27 février des mises à jour de sécurité pour toutes les branches actives du SGBD PostgreSQL. Ces mises à jour correspondent aux versions 9.1.3, 9.0.7, 8.4.11, 8.3.18.

Les utilisateurs de pg_dump, de certificats SSL pour la validation ou de triggers utilisant une fonction en SECURITY DEFINER doivent mettre à jour immédiatement leur installation. Il est fortement conseillé à tous les autres administrateurs de mettre à jour leur version de PostgreSQL lors du prochain arrêt planifié de la base. Des détails sur les correctifs de sécurité suivent ci-dessous.

Les fonctionnalités affectées par les corrections de cette mise à jour incluent: la réplication binaire et le serveurs en Hot Standby, les index GIN, les requêtes CTE, les wrappers de données distantes, les langages PL/pgsql et PL/python, le type de données inet, les modules intarray, pgcrypto et pg_upgrade ainsi que les outils pg_restore et pg_dump. Les utilisateurs de ces fonctionnalités doivent installer la mise à jour dès que possible.

Cette mise à jour contient 46 correctifs pour la version 9.1. Les versions plus anciennes ont moins de correctifs. Parmi les ces derniers :

  • Correction d'une corruption des index Btree lors d'insertions en parallèle à un VACUUM ;
  • Retour à la normale après des erreurs survenant lors du rejeu d'un DROP TABLESPACE
  • Correction de la mise à zéro transitoire du cache disque de PostgreSQL lors du rejeu des journaux de transactions
  • Correction du postmaster pour tenter un redémarrage après un crash d'un serveur Hot Standby
  • Correction d'un cas particulier dans le nettoyage des transactions SSI
  • Mise à jour des droits par colonne des autorisations, et non pas seulement des droits par table, lors du changement du propriétaire d'une table
  • Correction de la gestion des sous-plans d'une requête CTE en écriture lors de la vérification du READ COMMITTED
  • Correction des échecs causant le message « could not find plan for CTE »
  • Correction de l'erreur «type de nœud non supporté» causé par la clause COLLATE dans une expression INSERT
  • Correction d'un crash lors de problèmes sur la suppression de fichiers de données après une validation (COMMIT)
  • Correction de la fuite de mémoire récemment introduite dans le traitement des types de données inet / cidr
  • Correction de l'estimation des coûts de la gestion des colonnes dans une clause IN (…) avec un index GIN
  • Correction des fuites de mémoire lors des conversions d'entrées/sorties dans PL/pgsql
  • Amélioration de pg_upgrade permettant le renommage de la bibliothèque partagée PL/python (affectant les mises à jour vers la 9.1)

Comme pour les autres versions mineures, il n'est pas nécessaire de sauvegarder et recharger les bases de données. Il n'est pas utile non plus d'utiliser pg_upgrade. Pour appliquer cette mise à jour, arrêtez PostgreSQL, mettez à jour les exécutables et redémarrez PostgreSQL. Puis réalisez les étapes post-mise-à-jour une fois le serveur redémarré.

Cette mise à jour inclut les trois correctifs de sécurité suivants:

  • CVE-2012-0866: Permissions on a function called by a trigger are not checked. (Les droits sur une fonction appelée par un trigger ne sont pas vérifiés)

Ce correctif empêche les utilisateurs de définir des triggers qui exécutent des fonctions pour lesquelles l'utilisateur n'a pas le droit EXECUTE.

CREATE TRIGGER ne parvenait pas à vérifier tous les droits sur la fonction trigger à appeler. Un utilisateur sans droit pouvait attacher une fonction trigger à une table dont il est propriétaire et faire en sorte qu'elle soit exécutée avec les données de son choix. Habituellement, cela exécute la fonction avec les droits du propriétaire de la table et ne devrait pas donner de droits supplémentaires. Néanmoins, si une fonction trigger est marquée SECURITY DEFINER, une escalade des droits est possible.

  • CVE-2012-0867: SSL certificate name checks are truncated to 32 characters, allowing connection spoofing under some circumstances. (Les vérifications du nom du certificat SSL sont tronquées à 32 caractères, permettant un « spoofing » de connexion dans certaines circonstances)

Cela corrige le tronquage du nom commun SSL, qui permettait à un attaquant le détournement d'une connexion SSL dans des circonstances exceptionnelles.

Lors de l'utilisation de certificats SSL, les clients et serveurs peuvent être configurés pour vérifier le nom d'hôte de l'autre partie par rapport au nom commun compris dans le certificat que cette partie présente. Néanmoins, le nom extrait à partir du certificat était tronqué par erreur à 32 caractères. Habituellement, cela résulte en un échec de la vérification mais si le nom actuel de l'hôte fait exactement 32 caractères, il pourrait, en principe, être forgé. Le risque est très mince et un attaquant aurait toujours besoin de réaliser d'autres étapes, en dehors de PostgreSQL, pour réussir à exploiter cela.

  • CVE-2012-0868: Line breaks in object names can be exploited to execute code when loading a pg_dump file. (Les sauts de lignes dans le nom des objets peuvent être exploités pour exécuter du code lors du chargement d'un fichier pg_dump)

Ce correctif supprime les caractères \n et \r des commentaires compris dans la sauvegarde.

pg_dump copiait les noms des objets dans des commentaires du script SQL sans les sécuriser. Un nom d'objet contenant un retour à la ligne suivi d'une commande SQL résultait en l'exécution de cette commande lors de la restauration. Si le script SQL contenant la sauvegarde est exécuté, la commande s'exécute avec les droits de la personne qui restaure la sauvegarde, souvent un superutilisateur.

Toutes les versions supportées de PostgreSQL sont affectées. Les notes de version de chaque branche contiennent une liste complète des modifications avec de nombreux détails.

Pour les clients de Dalibo sous contrat Support PostgreSQL Premium, bénéficiant ainsi des mises à jour effectuées par notre service de support, nous profitons de cette annonce pour vous informer que nous avons procédé à la création de tickets d'intervention visant à mettre à jour vos serveurs. Nous vous invitons à nous faire part de vos contraintes quant à l'arrêt nécessaire du serveur PostgreSQL pour l'application de cette mise à jour dans ce(s) ticket(s) d'intervention.

Téléchargez les nouvelles versions maintenant sur :

PGDay.fr 2012

Le PG Day France 2012 est l'événement majeur de la communauté francophone de PostgreSQL. Il se tiendra le 7 juin à Lyon.

L'appel à conférenciers pour le PG Day vient de s'achever. Un sondage ouvert à tous va bientôt commencer pour connaître les sujets les plus populaires. Le résultat du sondage aidera le comité de programme à départager les candidats.

Cette conférence est une opportunité unique pour les sociétés qui utilisent ou développent avec PostgreSQL d'être visible au côté de sa communauté. C'est également un moyen simple et efficace de soutenir les projets de cette communauté.

Les éventuels excédents générés par la conférence seront gérés par l'association PostgreSQLFr. Les fonds récoltés seront consacrés à l'organisation d'autres événements et au soutien de projets communautaires.

Trois niveaux de partenariat sont possibles. Tous les détails sont disponibles sur cette page: http://pgday.fr/campagne_de_partenariat

Actualité des produits dérivés

Avancées sur PostgreSQL

Après la sortie des versions mineures, le développement de la 9.2 continue.

Une clause LEAKPROOF a été ajoutée sur l'instruction de création d'une procédure stockée. Elle permet de meilleures performances pour les vues sécurisées.

Les plans de requêtes affichent les blocs modifiées en plus des blocs écrits lors de l'utilisation de la clause BUFFERS.

Au niveau des performances, on peut noter une plus grande rapidité dans les tris de lignes en mémoire, la possibilité pour PostgreSQL d'ignorer la validation d'une clé étrangère dans certains cas, l'optimisation consistant à passer par les index pour calculer les agrégats min et max sur des valeurs de type boolean.

Avancées sur pgAdmin

Dix nouveaux bugs ont été corrigés ce mois-ci, juste avant la sortie de la version 1.14.2. Parmi ces corrections, notons le très ancien bug sur la copie d'une requête à partir de la fenêtre d'état du serveur, ainsi que sur la sauvegarde de la position des dialogues.

Trois autres bugs ont été corrigés après la sortie de la 1.14.3. Deux d'entre eux méritent quelques explications.

La gestion de l'historique des requêtes a posé de nombreux problèmes. Tous les problèmes trouvés ont été corrigés. Un nouveau est apparu récemment : si le fichier d'historique des requêtes contient une requête vide, la lecture du fichier, à l'ouverture de l'éditeur de requête, boucle indéfiniment. Si cela vous arrive, le plus simple est de renommer le fichier d'historique des requêtes. Si cela règle le problème, n'hésitez pas à envoyer votre fichier à Guillaume Lelarge pour qu'il vérifie qu'aucun autre problème ne réside dans ce code.

L'autre bug qui mérite une explication concerne toujours l'éditeur de requêtes. Il est possible de changer la connexion à partir de l'éditeur de requêtes. Cela permet de tester une requête sur différentes bases. Par contre, l'exécution de pgScripts faisait toujours référence à l'ancienne connexion. Du coup, si un utilisateur ouvrait l'éditeur de requêtes sur la base b1, puis changeait la connexion sur la base b2, un script SQL s'exécutait bien sur b2 mais un script pgScript s'exécutait sur b1. Guillaume a corrigé ce bug mais toutes les versions actuellement disponibles de pgAdmin disposent de ce bug.

Le travail a continué sur la version de pgAdmin en cours de développement. Deux corrections ont été apportées à l'outil de conception de bases de données. Le support de la future version 9.2 s'améliore avec la nouvelle option TIMING de EXPLAIN ANALYZE et l'option LEAKPROOF des procédures stockées. Non spécifique à la version 9.2 mais pas encore supporté par pgAdmin, la création de table par copie d'une autre a été ajoutée, et les clauses ANALYZE, CATEGORY et PREFERRED sont enfin supportées lors de la création d'un type.

Guillaume a aussi ajouté un nouvel outil d'import de données. Vous trouverez plus de renseignements sur son blog :

Quant au travail sur le support de la prochaine version stable de wxWidgets, il continue grâce à Dave Page et Akshay Joshi. Il est même terminé pour les plateformes Windows et Mac OS X.

Avancées sur les produits satellites

Après avoir sorti les versions mineures de leur branche stable, les développeurs de Slony continuent le travail sur la prochaine version, la 2.2. Quelques améliorations importantes ont été apportées en février.

Jan Wieck a ajouté la gestion du COPY sur les esclaves. En 2.1 et sur les versions précédentes, des triggers sur les tables sl_log_1 et sl_log_2 créaient des requêtes pratiquement prêtes pour stocker les informations de ces tables sur l'esclave. Seule manquait l'instruction (INSERT, UPDATE, DELETE suivant le cas). L'insertion d'un grand nombre de lignes dans sl_log_1 et sl_log_2 pouvait donc prendre du temps au niveau des esclaves, même si une amélioration avait permis d'insérer plusieurs lignes à la fois. La version 2.2 pourra passer par un COPY à la place d'INSERT séparés ou multiples. De plus, la gestion des DDL a été fortement simplifiée. Il faut donc s'attendre à avoir en 2.2 des processus slon moins consommateur en CPU mais aussi en mémoire.

Steve Singer a ajouté la possibilité de changer le nœud fournissant les données de réplication. Prenons un exemple. Si le set S1 est envoyé au nœud 3 par le nœud 2, ce dernier recevant les données du nœud 1, il n'y avait pas possibilité de faire passer le set S1 du nœud 1 au nœud 3 directement. La nouvelle commande RESUBSCRIBE NODE le permettra en 2.2. Cela nous donnerait pour cet exemple : RESUBSCRIBE NODE (ORIGIN = 1, PROVIDER = 1, RECEIVER = 3).

Une nouvelle table statistique fera son apparition : sl_apply_stats. Elle fournit des informations sur l'activité de réplication sur un esclave : nombre d'INSERT, d'UPDATE, de DELETE, durée, horodatage d'application, etc.

La version 2.2 est donc en développement fort ces derniers temps.

Sessions de formation

Dalibo organise régulièrement des sessions de formation à Paris et en province. Les prochaines sessions inter-entreprises auront lieu aux dates suivantes :


→ 14-16 mars, formation Administration PostgreSQL
→ 27-28 mars, formation Migration Oracle vers PostgreSQL
→ 11-13 avril, formation Administration PostgreSQL
→ 16-19 avril, formation Administration Avancée PostgreSQL

N'hésitez pas à nous contacter pour tout besoin de formation en intra-entreprise.

Dernières versions

Depuis le 27 février 2012 :

  • 9.1.3
  • 9.0.7
  • 8.4.11
  • 8.3.18

Versions obsolètes :

  • 8.2.23
  • 8.1.22
  • 8.0.26
  • 7.4.30

Informations générales

Cette lettre d'information présente l'actualité francophone et internationale de PostgreSQL et de ses logiciels satellites. Elle vous est proposée par la société Dalibo.

Dalibo est une société d'expertise sur PostgreSQL et tous ses projets satellites.

Dalibo peut vous accompagner dans la mise en œuvre efficace et professionnelle de PostgreSQL. Qu'il s'agisse d'un nouveau projet ou de la migration d'un existant, notre équipe d'experts se tient à votre disposition.

Si vous ne souhaitez plus recevoir cette lettre, envoyez simplement un courriel à l'adresse : newsletter-desabonnement@listes.dalibo.com

Vous pouvez retrouver cette lettre à l'adresse suivante :

http://dalibo.org/mars_2012

Afficher le texte source