SET SESSION AUTHORIZATION vs SET ROLE

Sur PostgreSQL, pour obtenir les permissions et attributs d’un autre rôle, on peut utiliser SET SESSION AUTHORIZATION ou SET ROLE. Si on est autorisé à le faire, le résultat semble être le même : on se fait passer pour le rôle, mais il y a quelques subtilités. ...

2022-05-04 · 3 min

Load Balancing pour Patroni avec Keepalived

Patroni ne gère que le service PostgreSQL en pilotant la réplication. Les applications doivent déterminer quelle est l’instance disponible en écriture et quelle est la ou les instances en lecture seule. Pour fournir un point d’accès unique, sous la forme d’une adresse IP virtuelle, il faut ajouter un service ou mécanisme supplémentaire. Keepalived fournit ce service, il est également capable d’équilibrer les connexions entre plusieurs instances. Keepalived est un logiciel de haute-disponibilité et d’équilibrage de charge reposant sur le noyau Linux....

2021-06-09 · 18 min

IP flottante pour Patroni avec Keepalived

Patroni ne gère que le service PostgreSQL en pilotant la réplication. Il ne fournit volontairement aucun moyen d’accès pour les applications. Elles doivent pourtant déterminer quel serveur PostgreSQL est accessible en écriture, pour cela une solution est de placer une adresse IP supplémentaire sur ce serveur en écriture qui est déplacée automatique en cas de bascule. Il faut donc ajouter un service supplémentaire à l’architecture pour gérer la placement de cette adresse IP, généralement appelée, IP virtuelle, VIP, ou IP flottante : Keepalived permet de le faire....

2021-06-07 · 7 min

PostgreSQL et SELinux à l'ère de systemd

Ce post se veut une mise à jour du post précédent sur le sujet. En effet, le module SELinux, les commandes utilisées ont évolué avec l’adoption de systemd. Les principes restent les mêmes. ...

2021-02-11 · 3 min

Confiner PostgreSQL avec SELinux

.notice{padding:18px;line-height:24px;margin-bottom:24px;border-radius:4px;color:#444;background:#e7f2fa}.notice p:last-child{margin-bottom:0}.notice-title{margin:-18px -18px 12px;padding:4px 18px;border-radius:4px 4px 0 0;font-weight:700;color:#fff;background:#6ab0de}.notice.warning .notice-title{background:rgba(217,83,79,.9)}.notice.warning{background:#fae2e2}.notice.info .notice-title{background:#f0b37e}.notice.info{background:#fff2db}.notice.note .notice-title{background:#6ab0de}.notice.note{background:#e7f2fA}.notice.tip .notice-title{background:rgba(92,184,92,.8)}.notice.tip{background:#e6f9e6}.icon-notice{display:inline-flex;align-self:center;margin-right:8px}.icon-notice img,.icon-notice svg{height:1em;width:1em;fill:currentColor}.icon-notice img,.icon-notice.baseline svg{top:0.125em;position:relative} Remarque Ce post est partiellement obsolète, avec le passage à systemd. Voir la mise à jour. J’avais déjà expérimenté un peu avec SELinux il y a deux ans sans aller trop loin, parce que j’entendais souvent la phrase “Si on veut de la sécurité, il faut SELinux” et surtout à cause de l’arrivée de l’extension sepgsql dans les modules contrib de PostgreSQL. Ça avait donné une conf pour le Fosdem où finalement, j’ai plus parlé des privilèges classiques que de SELinux. ...

2014-09-22 · 4 min

Oups... des tablespaces imbriqués

Imbriquer des tablespaces n’a pas vraiment de sens dans PostgreSQL surtout si on veut se prendre la tête avec des montages dans tous les sens… Mais bon c’est permis, car PostgreSQL utilise uniquement les liens symboliques dans $PGDATA/pg_tblspc pour accéder au contenu des tablespaces. ...

2013-04-06 · 2 min

Got GUC?

Les paramètres de configuration de PostgreSQL sont appelés GUC ce qui signifie Grand Unified Configuration, c’est le nom de la partie du code qui gère les paramètres de configuration. En gros, ce sont tous les paramètres du fichier postgresql.conf. Ce qui est moins connu et utilisé, c’est la possibilité de configurer ces paramètres à différents niveaux : Fichier postgresql.conf Ligne de commande du postmaster, le processus principal du serveur Base de données Rôle Rôle sur une base de données Session Transaction La précédence des valeurs va en descendant dans la liste, par exemple la valeur d’un paramètre au niveau d’un rôle écrase celle positionnée au niveau de la base de donnée ou la ligne de commande....

2012-01-25 · 3 min

Quand PostgreSQL n'a plus d'espace disque à manger

Voilà donc une question intéressante, comment se comporte PostgreSQL face à un système de fichier plein ? Un peu d’expérimentation est nécessaire pour se rassurer… On crée deux systèmes de fichiers de faible taille pour les tests. Le premier stockera PGDATA, ainsi qu’une base de données nommée db_data. Le second sera le tablesapce ts1, dans lequel oncréera une base de données db_ts1. L’objectif est de montrer que seules les transactions modifiant des objets stockés sur des systèmes de fichier plein sont affectées, c’est pourquoi on a besoin de plusieurs tablespaces....

2011-10-14 · 4 min

Le client de la BuildFarm de PostgreSQL dans pkgsrc-wip

Comme j’annonçais précédemment, je contribue deux machines NetBSD à la BuildFarm de PostgreSQL. La compilation ne se fait automagiquement qu’après la configuration du client (écrit en Perl). Il n’est d’ailleurs pas forcément très convi à installer, c’est pourquoi je l’ai packagé pour pkgsrc : http://pkgsrc.se/wip/pgbuildfarm. ...

2011-08-06 · 2 min

Could not open relation with oid N

On peut parfois trouver cet étrange message d’erreur dans les traces de PostgreSQL (N étant un nombre) ou lors de l’exécution d’une requête : ERROR: could not open relation with OID N Si on recherche ce message dans les mailing-lists du projet, on peut facilement conclure que la base de données est corrompue, qu’il y a des problèmes matériels et que la sécurité des données est en péril. Et bien, ce n’est pas forcément le cas : obtenir ce message peut être tout à fait normal....

2011-08-04 · 4 min