Bonnes pratiques de sécurité

Sécurité contre l'intrusion

Bien gérer les utilisateurs (users) et les groupes (rôles) permet de bien sécuriser ses bases, tant contre l'intrusion que contre les erreurs de manipulation.

Les accès peuvent se gérer à plusieurs niveaux (base de données, schéma, table, tablespace, function...).

On peut autoriser à un utilisateur (à tous les niveaux) :

  • La lecture (select) : droit de consulter les données

  • L'écriture (insert) : droit de créer de nouvelles données

  • La modification (update) : droit de modifier des données existantes

  • La suppression (delete) : droit de supprimer des données

  • La création de clés primaires / étrangères (references) : droit de créer des clés primaires et étrangères.

  • La création de triggers (trigger) : droit de créer des triggers. Un trigger est une fonction qui se déclenche lors d'un événement prédéfini.

L'utilisation des rôles et des droits associés permet de gérer de manière très fine les accès et les utilisateurs, permettant ainsi d'assurer l'intégrité des données.

Typiquement, les données de référence seront en lecture seule (sauf pour le ou les administrateurs SIG) et les données métier seront lisibles uniquement pour les services concernés.

La définition des groupes et rôles est réalisée au niveau du serveur par l’administrateur.

La conception de ces rôles et droits d'accès est aussi importante que la conception de la base de données elle-même.

Faire des sauvegardes (dumps) régulières voire mettre en place un système de réplication

Il est indispensable de mettre en place un système de sauvegarde des bases de données, organisé selon les besoins.

Le plus simple est de faire des dumps réguliers des bases de données.

Il est important de stocker ces dumps sur une autre machine que celle du serveur PostgreSQL pour garantir leur disponibilité en cas de problème.

(par un point de montage ou une solution de sauvegarde automatique type arkeia software).

En cas d'incident les données restaurées dateront du moment de la sauvegarde. Il est conseillé d'effectuer ce type de sauvegarde à des moments de faible charge du serveur.

Il est aussi possible de mettre en place un système de réplication de la base qu'il soit synchrone (en quasi temps-réel) ou asynchrone.

On parle alors de serveurs maîtres et esclaves.

Cette fonctionnalité est disponible par défaut dans PostgreSQL mais il existe aussi des extensions pour faciliter la réplication, la synchronisation ou la répartition des charges, qui peuvent avoir certains avantages (pgCluster, pgpool, slony etc).