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 le nœud primaire de votre cluster de bases de données Aurora 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 un cluster de bases de données Aurora PostgreSQL récemment créé à 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 à l'instance de base de données principale sur votre cluster de bases de données Aurora PostgreSQL :psql --host=
your-cluster-instance-1.666666666666
.aws-region
.rds.amazonaws.com --port=5432 --username=postgres --passwordLorsque vous y êtes invité, saisissez votre mot de passe. Le client
psql
se 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 DATABASE
lab_db
;CREATE DATABASE
-
Révoquez tous les privilèges du schéma
PUBLIC
sur cette nouvelle base de données.postgres=>
REVOKE ALL ON DATABASE
lab_db
FROM public;REVOKE
-
Créez un rôle pour les utilisateurs de base de données.
postgres=>
CREATE ROLE
lab_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 DATABASE
lab_db
TOlab_tech
;GRANT
-
Accordez à tous les utilisateurs dotés du rôle
lab_tech
tous les privilèges sur cette base de données.postgres=>
GRANT ALL PRIVILEGES ON DATABASE
lab_db
TOlab_tech
;GRANT
-
Créez des utilisateurs de base de données, comme suit :
postgres=>
CREATE ROLE lab_user1 LOGIN PASSWORD 'change_me';
CREATE ROLE
postgres=>
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 ROLE
postgres=>
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