Contrôle de l'accès des utilisateurs à la base de données Postgre SQL - Amazon Relational Database Service

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 des utilisateurs à la base de données Postgre SQL

Les nouvelles bases de données dans Postgre SQL sont toujours créées avec un ensemble de privilèges par défaut dans le public schéma de la base de données qui permettent à 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 bases de données que vous créez sur votre SQL instance RDS de base de données Postgre, nous vous recommandons de révoquer ces privilèges par défaut. public 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 configurez une base de données sur un récemment créé RDSpour une SQL instance de base de données Postgre destinée à être utilisée par plusieurs chercheurs, qui ont tous besoin d'un accès en lecture-écriture à la base de données.

  1. Utilisez psql (oupgAdmin) pour vous connecter à votre instance de base de SQL données Postgre RDS pour :

    psql --host=your-db-instance.666666666666.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password

    Lorsque 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.

  2. 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
  3. Vous créez ensuite une instance de base de données :

    postgres=> CREATE DATABASE lab_db; CREATE DATABASE
  4. 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
  5. Créez un rôle pour les utilisateurs de base de données.

    postgres=> CREATE ROLE lab_tech; CREATE ROLE
  6. 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 TO lab_tech; GRANT
  7. 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 TO lab_tech; GRANT
  8. 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
  9. 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 Gestion des SQL utilisateurs et des rôles de Postgre.

Pour plus d'informations sur les privilèges dans les SQL bases de données Postgre, consultez la GRANTcommande dans la documentation PostgreSQL.