Gérer les rôles utilisateur AlloyDB

Cette page décrit le fonctionnement d'AlloyDB pour PostgreSQL avec les rôles utilisateur PostgreSQL.

À propos des rôles utilisateur dans AlloyDB

Une base de données AlloyDB utilise le concept PostgreSQL standard des rôles. Un rôle peut agir en tant qu'utilisateur de base de données, en tant que groupe d'utilisateurs ou les deux.

Un rôle utilisateur dispose du privilège LOGIN qui permet aux utilisateurs de se connecter au système. Un rôle de groupe comporte des rôles de membre avec différents droits, que vous pouvez accorder ou révoquer pour tous les membres en même temps.

Rôles PostgreSQL prédéfinis d'AlloyDB

PostgreSQL dispose d'un ensemble de rôles prédéfinis avec différents droits. AlloyDB ajoute plusieurs rôles d'utilisateur et de groupe à cet ensemble de rôles prédéfinis de PostgreSQL.

Le tableau suivant répertorie les rôles PostgreSQL que AlloyDB prédéfinit:

Nom du rôle Droits
alloydbsuperuser CREATEROLE, CREATEDB et LOGIN.
postgres CREATEROLE, CREATEDB et LOGIN.
alloydbimportexport CREATEROLE et CREATEDB.
alloydbagent CREATEROLE et CREATEDB.
alloydbreplica REPLICATION
alloydbiamuser Par défaut, ce rôle ne dispose d'aucun droit.

Les sections suivantes fournissent des informations sur certains des rôles AlloyDB les plus couramment utilisés.

Rôle de groupe alloydbsuperuser

Le rôle alloydbsuperuser est un rôle prédéfini permettant de configurer initialement le système de base de données et d'effectuer d'autres tâches de super-utilisateur. Ce rôle dispose des droits suivants:

  • Créer des extensions nécessitant des droits de super-utilisateur
  • Créer des déclencheurs d'événements
  • Créer des utilisateurs de réplication
  • Créer des publications et des abonnements de réplication

En tant que service géré, AlloyDB ne vous permet pas d'accorder aux utilisateurs le rôle superuser PostgreSQL. À la place, vous pouvez accorder à n'importe quel rôle d'utilisateur de base de données des droits de super-utilisateur AlloyDB en lui attribuant le rôle alloydbsuperuser.

Rôle utilisateur postgres

L'utilisateur postgres fait partie du rôle alloydbsuperuser. Lorsque vous créez un cluster AlloyDB, vous attribuez un mot de passe au rôle utilisateur postgres. Vous vous connectez ensuite à votre système à l'aide du rôle utilisateur postgres pour créer des bases de données, des rôles supplémentaires, etc.

Rôle utilisateur alloydbimportexport

Lorsque vous créez un cluster AlloyDB, l'utilisateur par défaut, alloydbimportexport, est créé avec l'ensemble minimal de droits requis pour les opérations d'importation et d'exportation.

Vous pouvez créer vos propres utilisateurs pour effectuer ces opérations. Si vous ne créez pas d'utilisateur alloydbimportexport personnalisé, le système utilise l'utilisateur alloydbimportexport par défaut pour les opérations d'importation et d'exportation.

L'utilisateur alloydbimportexport est un utilisateur système. Vous ne pouvez pas utiliser directement l'utilisateur alloydbimportexport pour vous connecter ni effectuer d'autres opérations dans la base de données PostgreSQL.

Rôle de groupe alloydbiamuser

Les utilisateurs de la base de données appartenant au rôle de groupe alloydbiamuser s'authentifient auprès d'une instance AlloyDB à l'aide d'Identity and Access Management, au lieu d'utiliser l'authentification standard PostgreSQL basée sur un mot de passe.

AlloyDB ne vous permet pas d'accorder ce rôle aux utilisateurs à l'aide de la commande PostgreSQL GRANT ou de méthodes similaires. Vous pouvez plutôt utiliser les outils d'administration AlloyDB pour créer et gérer des utilisateurs de base de données basés sur la gestion des identités et des accès. Pour en savoir plus, consultez Gérer l'authentification IAM.

Créer d'autres utilisateurs PostgreSQL dans AlloyDB

Vous pouvez créer d'autres utilisateurs ou rôles PostgreSQL. Ces utilisateurs disposent des mêmes privilèges que l'utilisateur postgres : CREATE ROLE, CREATEDB et LOGIN. Pour en savoir plus sur ces droits, consultez CREATE ROLE.

Vous pouvez modifier les droits de n'importe quel utilisateur à l'aide de la commande ALTER ROLE. Si vous créez un utilisateur avec le client psql, vous pouvez choisir de l'associer à un autre rôle ou d'attribuer des droits différents.

Gérer les utilisateurs

Vous pouvez créer et gérer des rôles utilisateur AlloyDB avec la Google Cloud CLI ou à l'aide de commandes PostgreSQL. Les sections suivantes présentent des tâches de gestion des utilisateurs courantes à l'aide de l'une ou l'autre méthode.

Avant de commencer

Pour utiliser des commandes PostgreSQL pour gérer les utilisateurs d'un cluster, vous avez besoin des éléments suivants:

  • Accès au client psql
  • Accès à l'utilisateur de la base de données postgres ou à un autre rôle utilisateur disposant des droits d'administration appropriés

Pour utiliser la console Google Cloud ou Google Cloud CLI pour gérer les utilisateurs d'un cluster, ce cluster doit disposer d'une instance principale. Si votre cluster ne dispose pas d'instance principale, vous devez en créer une avant de pouvoir gérer les utilisateurs.

Créer un utilisateur de base de données

Pour créer un utilisateur de base de données qui s'authentifie directement auprès de la base de données à l'aide d'un nom d'utilisateur et d'un mot de passe (également appelé authentification intégrée), suivez les étapes de cette section.

Pour créer un utilisateur de base de données qui utilise Identity and Access Management pour s'authentifier, consultez Gérer l'authentification IAM.

Console

  1. Accédez à la page Clusters.

    accéder aux clusters

  2. Cliquez sur le nom du cluster auquel vous souhaitez ajouter un utilisateur.

  3. Cliquez sur Utilisateurs.

  4. Cliquez sur Ajouter un compte utilisateur.

  5. Laissez la case Authentification intégrée sélectionnée.

Vous pouvez sélectionner Cloud IAM pour créer un utilisateur de base de données qui utilise IAM pour s'authentifier. Cette sélection nécessite des étapes supplémentaires pour préparer votre projet et accorder les autorisations appropriées au nouvel utilisateur de la base de données. Pour en savoir plus, consultez Gérer l'authentification IAM.

  1. Saisissez un nom d'utilisateur et un mot de passe pour le nouvel utilisateur.

  2. Cliquez sur Ajouter.

psql

CREATE USER USERNAME WITH PASSWORD 'PASSWORD';

Pour savoir comment créer et définir des utilisateurs de base de données, consultez CREATE USER.

Une fois que vous avez créé un rôle utilisateur, vous pouvez modifier ses droits à l'aide de la commande ALTER ROLE dans le client psql.

gcloud

Exécutez la commande gcloud alloydb users create :

gcloud alloydb users create USERNAME \
--password=PASSWORD \
--cluster=CLUSTER_ID \
--region=REGION_ID

Remplacez les éléments suivants :

  • USERNAME: nom d'utilisateur du nouveau rôle utilisateur.

  • PASSWORD: mot de passe du nouveau rôle utilisateur. Pour créer l'utilisateur sans mot de passe, omettez cet argument.

  • CLUSTER_ID: ID du cluster auquel ajouter le nouveau rôle utilisateur.

  • REGION_ID: ID de la région dans laquelle se trouve le cluster (par exemple, us-central1).

Une fois que vous avez créé un rôle utilisateur, vous pouvez modifier ses droits à l'aide de la commande gcloud alloydb users set-roles.

Vous pouvez également attribuer des rôles ou des droits de super-utilisateur à un utilisateur lors de sa création. Pour ce faire, incluez les arguments --db-roles ou --superuser, comme décrit dans la section suivante.

Attribuer des rôles à un utilisateur de base de données

Console

Pour attribuer des rôles à un utilisateur de base de données, utilisez psql ou gcloud CLI au lieu de la console Google Cloud.

psql

GRANT ROLE to USERNAME;

Pour accorder à un utilisateur des droits de super-utilisateur, attribuez-lui le rôle alloydbsuperuser.

gcloud

Utilisez la commande gcloud alloydb users set-roles pour spécifier tous les rôles que vous souhaitez que l'utilisateur possède:

gcloud alloydb users set-roles USERNAME \
--db-roles=ROLES \
--cluster=CLUSTER_ID \
--region=REGION_ID

Remplacez les éléments suivants :

  • USERNAME: rôle utilisateur auquel accorder des rôles.

  • ROLES: liste de tous les rôles que vous souhaitez attribuer à l'utilisateur spécifié, séparés par une virgule. Assurez-vous de lister tous les rôles, y compris les nouveaux et les existants, que vous souhaitez attribuer à l'utilisateur.

    Pour afficher la liste des rôles existants attribués à l'utilisateur, exécutez la commande suivante:

    gcloud alloydb list users --cluster=CLUSTER_ID --region=REGION_ID
  • CLUSTER_ID: ID du cluster contenant l'utilisateur.

  • REGION_ID: ID de la région dans laquelle se trouve le cluster (par exemple, us-central1).

Pour accorder à un utilisateur des droits de super-utilisateur, vous pouvez lui accorder manuellement le rôle alloydbsuperuser à l'aide de la commande décrite précédemment ou exécuter la commande gcloud alloydb users set-superuser avec l'argument --superuser=true:

gcloud alloydb users set-superuser USERNAME \
--superuser=true \
--cluster=CLUSTER_ID \
--region=REGION_ID

Modifier le mot de passe d'un utilisateur de base de données

Pour définir un nouveau mot de passe pour un utilisateur de base de données PostgreSQL standard, suivez les étapes de cette section.

Vous ne pouvez pas modifier ni définir le mot de passe d'un utilisateur basé sur IAM, car les utilisateurs basés sur IAM ne s'authentifient pas à l'aide de mots de passe. Pour en savoir plus, consultez Se connecter à l'aide d'un compte IAM.

Console

  1. Accédez à la page Clusters.

    accéder aux clusters

  2. Cliquez sur le nom du cluster contenant l'utilisateur de la base de données dont vous souhaitez modifier le mot de passe.

  3. Cliquez sur Utilisateurs.

  4. Sur la ligne de l'utilisateur dont vous souhaitez modifier le mot de passe, cliquez sur  Ouvrir les actions pour cet utilisateur.

  5. Sélectionnez Modifier le mot de passe.

  6. Spécifiez un mot de passe:

    • Pour définir un nouveau mot de passe pour cet utilisateur, saisissez-le dans le champ Mot de passe.

    • Pour ne pas définir de mot de passe pour cet utilisateur, cochez la case Aucun mot de passe.

  7. Cliquez sur OK.

psql

ALTER USER USERNAME WITH PASSWORD 'PASSWORD';

Pour en savoir plus sur la modification du mot de passe d'un utilisateur, consultez ALTER ROLE.

gcloud

Exécutez la commande gcloud alloydb users set-password :

gcloud alloydb users set-password USERNAME \
--password=PASSWORD \
--cluster=CLUSTER_ID \
--region=REGION_ID

Remplacez les éléments suivants :

  • USERNAME: nom d'utilisateur du rôle utilisateur.

  • PASSWORD: nouveau mot de passe à attribuer au rôle utilisateur.

  • CLUSTER_ID: ID du cluster auquel le rôle utilisateur appartient.

  • REGION_ID: ID de la région dans laquelle se trouve le cluster (par exemple, us-central1).

Révoquer un rôle auprès d'un utilisateur de base de données

Console

Pour révoquer des rôles auprès d'un utilisateur de base de données, utilisez psql ou la gcloud CLI au lieu de la console Google Cloud.

psql

Vous pouvez révoquer les droits précédemment accordés à un ou plusieurs rôles, ou révoquer l'appartenance d'un utilisateur à un rôle.

REVOKE ROLE FROM USERNAME;

Pour supprimer les droits de super-utilisateur d'un utilisateur, révoquez le rôle alloydbsuperuser.

gcloud

Pour révoquer un rôle avec Google Cloud CLI, utilisez la commande gcloud alloydb users set-roles pour spécifier tous les rôles que vous souhaitez que l'utilisateur possède, en omettant les rôles à révoquer.

gcloud alloydb users set-roles USERNAME \
--db-roles=ROLES \
--cluster=CLUSTER_ID \
--region=REGION_ID

Remplacez les éléments suivants :

  • USERNAME: rôle utilisateur à partir duquel les rôles doivent être révoqués.

  • ROLES: liste de tous les rôles (séparés par une virgule) que vous souhaitez attribuer à l'utilisateur spécifié, en omettant les rôles à révoquer.

    Pour obtenir la liste de tous les rôles attribués à l'utilisateur, exécutez la commande suivante:

    gcloud alloydb list users --cluster=CLUSTER_ID --region=REGION_ID
  • CLUSTER_ID: ID du cluster contenant l'utilisateur.

  • REGION_ID: ID de la région dans laquelle se trouve le cluster (par exemple, us-central1).

Pour révoquer les droits de super-utilisateur, vous pouvez supprimer manuellement le rôle alloydbsuperuser d'un utilisateur à l'aide de la commande décrite précédemment ou exécuter la commande gcloud alloydb users set-superuser avec l'argument --superuser=false.

Afficher la liste des utilisateurs de la base de données

Console

  1. Accédez à la page Clusters.

    accéder aux clusters

  2. Cliquez sur le nom du cluster dont vous souhaitez afficher les utilisateurs.

  3. Cliquez sur Utilisateurs.

psql

La commande \du affiche un tableau de tous les utilisateurs de la base de données, y compris leur appartenance à des groupes.

\du

gcloud

Exécutez la commande gcloud alloydb users list :

gcloud alloydb users list \
--cluster=CLUSTER_ID \
--region=REGION_ID

Remplacez les éléments suivants :

  • CLUSTER_ID: ID du cluster dont vous souhaitez lister les utilisateurs.

  • REGION_ID: ID de la région dans laquelle se trouve le cluster (par exemple, us-central1).

Supprimer un utilisateur de base de données

Console

  1. Accédez à la page Clusters.

    accéder aux clusters

  2. Cliquez sur le nom du cluster dont vous souhaitez supprimer l'utilisateur.

  3. Cliquez sur Utilisateurs.

  4. Sur la ligne de l'utilisateur que vous souhaitez supprimer, cliquez sur  Ouvrir les actions pour cet utilisateur.

  5. Sélectionnez Supprimer.

  6. Dans la boîte de dialogue Supprimer le compte utilisateur ?, cliquez sur Supprimer.

psql

Avant de supprimer un utilisateur, vous devez supprimer tous les objets qu'il possède ou en réaffecter la propriété, et révoquer les droits accordés par le rôle sur d'autres objets.

DROP ROLE USERNAME;

gcloud

Exécutez la commande gcloud alloydb users delete :

gcloud alloydb users delete USERNAME \
--cluster=CLUSTER_ID \
--region=REGION_ID

Remplacez les éléments suivants :

  • USERNAME: rôle utilisateur à supprimer.

  • CLUSTER_ID: ID du cluster à partir duquel le rôle utilisateur doit être supprimé.

  • REGION_ID: ID de la région dans laquelle se trouve le cluster (par exemple, us-central1).

Étape suivante