Accorder des autorisations dans Azure SQL Database pour PostgreSQL

Effectué

Pour autoriser les utilisateurs à accéder aux bases de données hébergées sur votre serveur Azure Database pour PostgreSQL, vous devez créer des rôles (utilisateurs) et accorder ou refuser des privilèges aux objets de base de données.

Création d’utilisateurs de base de données dans Azure Database pour PostgreSQL

  1. Dans Azure Data Studio (ou votre outil client préféré), connectez-vous à votre serveur Azure Database pour PostgreSQL avec les informations d’identification d’administrateur.

  2. Avec la base de données pertinente comme base de données actuelle, utilisez CREATE ROLE avec les options adaptées pour créer un rôle (utilisateur).

  3. Par exemple, la requête suivante :

    1. Crée une nouvelle base de données nommée testdb.
    2. Crée un utilisateur avec un mot de passe fort.
    3. Accorde des privilèges de connexion à la base de données testdb.
    CREATE DATABASE testdb;
    CREATE ROLE <db_user> WITH LOGIN NOSUPERUSER INHERIT CREATEDB NOCREATEROLE NOREPLICATION PASSWORD '<StrongPassword!>';
    GRANT CONNECT ON DATABASE testdb TO <db_user>;
    

    Pour essayer la requête, vous pouvez remplacer les espaces réservés par vos informations utilisateur.

  4. Vous pouvez ensuite accorder davantage de privilèges aux objets de la base de données. Par exemple :

    GRANT SELECT ON ALL TABLES IN SCHEMA <schema_name> TO <db_user>;
    

La syntaxe de CREATE ROLE est la suivante :

CREATE ROLE name [ [ WITH ] option [ ... ] ]

WHERE l’option peut être :

SUPERUSER | NOSUPERUSER
| CREATEDB | NOCREATEDB
| CREATEROLE | NOCREATEROLE
| INHERIT | NOINHERIT
| LOGIN | NOLOGIN
| REPLICATION | NOREPLICATION
| BYPASSRLS | NOBYPASSRLS
| CONNECTION LIMIT connlimit
| [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
| VALID UNTIL 'timestamp'
| IN ROLE role_name [, ...]
| ROLE role_name [, ...]
| ADMIN role_name [, ...]

Les paramètres facultatifs sont :

  • SUPERUSER | NOSUPERUSER : vous ne pouvez pas attribuer de privilèges SUPERUSER dans Azure Database pour PostgreSQL. Si aucune valeur n’est pas spécifiée, NOSUPERUSER est la valeur par défaut.
  • CREATEDB | NOCREATEDB : indique si le rôle peut créer des bases de données. La valeur par défaut est NOCREATEDB.
  • CREATEROLE | NOCREATEROLE : si le rôle peut créer des rôles, par exemple exécuter CREATE ROLE. Si le privilège CREATEROLE est accordé, le rôle peut également modifier et supprimer d’autres rôles. NOCREATEROLE est la valeur par défaut.
  • INHERIT | NOINHERIT : si le rôle hérite de privilèges des rôles dont il est un membre direct ou indirect. INHERIT est la valeur par défaut.
  • LOGIN | NOLOGIN : si un rôle est autorisé à se connecter. Un rôle avec l’attribut LOGIN est un utilisateur de base de données. Les rôles sans l’attribut LOGIN doivent être utilisés pour gérer les privilèges de la base de données. NOLOGIN est la valeur par défaut.
  • REPLICATION | NOREPLICATION : indique si un rôle est un rôle de réplication. Un rôle doit avoir cet attribut pour se connecter au serveur en mode de réplication et créer ou supprimer des emplacements de réplication. L’attribut REPLICATION est un rôle privilégié qui ne doit être utilisé que pour la réplication. NOREPLICATION est la valeur par défaut. Vous devez être membre d’azure_pg_admin pour créer ce rôle.
  • BYPASSRLS | NOBYPASSRLS : si un rôle contourne chaque stratégie de sécurité au niveau des lignes (RLS).
  • CONNECTION LIMIT connlimit : spécifie le nombre de connexions simultanées qu’un rôle pouvant se connecter peut effectuer. -1 est la valeur par défaut. Ce paramètre ne place aucune limite sur les connexions simultanées.
  • [ ENCRYPTED ] PASSWORD ’password’| PASSWORD NULL : définit le mot de passe du rôle. Un mot de passe est utilisé uniquement par les rôles avec l’attribut LOGIN. Si aucun mot de passe n’est spécifié, le mot de passe est NULL et l’authentification par mot de passe échoue. Vous pouvez également indiquer explicitement PASSWORD NULL.
  • VALID UNTIL ’timestamp’ : date et heure après lesquelles le mot de passe du rôle n’est plus valide. Si vous l’omettez, il n’y a aucune échéance au mot de passe.
  • IN ROLE role_name : un ou plusieurs rôles auxquels le nouveau rôle est ajouté en tant que nouveau membre. Il n’existe aucune option pour ajouter un nouveau rôle en tant qu’administrateur. Utilisez la commande GRANT.
  • IN GROUP role_name : une alternative obsolète à IN ROLE.
  • ROLE role_name : un ou plusieurs rôles sont ajoutés en tant que membres du nouveau rôle. (Cette modification fait en effet du nouveau rôle un groupe.)
  • ADMIN role_name : la clause ADMIN est semblable à ROLE, mais les rôles nommés sont ajoutés au nouveau rôle WITH ADMIN OPTION, ce qui leur donne le droit d’accorder l’appartenance à ce rôle à d’autres personnes.

Notes

Vous pouvez modifier les attributs d’un rôle avec ALTER ROLE et supprimer un rôle avec DROP ROLE.