Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Contrôle de l'accès utilisateur à la base de données PostgreSQL
Les nouvelles bases de données de PostgreSQL sont toujours créées avec un ensemble de privilèges par défaut dans le schéma public de la base de données, qui permet à tous les utilisateurs et rôles de base de données de créer des objets. Ces privilèges permettent aux utilisateurs de base de données de se connecter à la base de données, par exemple, et de créer des tables temporaires lorsqu'ils sont connectés.
Pour mieux contrôler l'accès des utilisateurs aux instances de base de données que vous créez sur votre instance de base de données RDS for PostgreSQL, nous vous recommandons de révoquer ces privilèges public par défaut. Vous accordez ensuite des privilèges spécifiques aux utilisateurs de base de données de manière plus détaillée, comme indiqué dans la procédure suivante.
Pour configurer des rôles et des privilèges pour une nouvelle instance de base de données
Supposons que vous configuriez une base de données sur une instance de base de données RDS for PostgreSQL récemment créée à l'usage de plusieurs chercheurs, qui ont tous besoin d'un accès en lecture/écriture à la base de données.
-
Utilisez
psql(ou pgAdmin) pour vous connecter à votre instance de base de données RDS for PostgreSQL :psql --host=your-db-instance.666666666666.aws-region.rds.amazonaws.com --port=5432 --username=postgres --passwordLorsque vous y êtes invité, saisissez votre mot de passe. Le client
psqlse connecte à la base de données de connexions administratives par défaut,postgres=>, et l'affiche sous forme d'invite. -
Pour empêcher les utilisateurs de base de données de créer des objets dans le schéma
public, procédez comme suit :postgres=>REVOKE CREATE ON SCHEMA public FROM PUBLIC;REVOKE -
Vous créez ensuite une instance de base de données :
postgres=>CREATE DATABASElab_db;CREATE DATABASE -
Révoquez tous les privilèges du schéma
PUBLICsur cette nouvelle base de données.postgres=>REVOKE ALL ON DATABASElab_dbFROM public;REVOKE -
Créez un rôle pour les utilisateurs de base de données.
postgres=>CREATE ROLElab_tech;CREATE ROLE -
Donnez aux utilisateurs de base de données disposant de ce rôle la possibilité de se connecter à la base de données.
postgres=>GRANT CONNECT ON DATABASElab_dbTOlab_tech;GRANT -
Accordez à tous les utilisateurs dotés du rôle
lab_techtous les privilèges sur cette base de données.postgres=>GRANT ALL PRIVILEGES ON DATABASElab_dbTOlab_tech;GRANT -
Créez des utilisateurs de base de données, comme suit :
postgres=>CREATE ROLE lab_user1 LOGIN PASSWORD 'change_me';CREATE ROLEpostgres=>CREATE ROLE lab_user2 LOGIN PASSWORD 'change_me';CREATE ROLE -
Accordez à ces deux utilisateurs les privilèges associés au rôle lab_tech :
postgres=>GRANT lab_tech TO lab_user1;GRANT ROLEpostgres=>GRANT lab_tech TO lab_user2;GRANT ROLE
À ce stade, lab_user1 et lab_user2 peuvent se connecter à la base de données lab_db. Cet exemple ne respecte pas les bonnes pratiques pour une utilisation en entreprise, qui peuvent inclure la création de plusieurs instances de base de données, différents schémas et l'octroi d'autorisations limitées. Pour des informations plus complètes et des scénarios supplémentaires, consultez Managing PostgreSQL Users and Roles
Pour plus d'informations sur les privilèges dans les bases de données PostgreSQL, veuillez consulter la commande GRANT