Gérer l'authentification IAM

Cette page explique comment préparer votre instance AlloyDB pour PostgreSQL afin d'autoriser l'authentification de la base de données via Identity and Access Management (IAM).

L'authentification IAM complète l'authentification de base de données via les utilisateurs PostgreSQL standards, que chaque cluster AlloyDB prend en charge. Si vous activez l'authentification IAM sur votre cluster, vous pouvez utiliser des rôles utilisateur IAM ou PostgreSQL pour vous authentifier auprès de ce cluster.

Par défaut, l'authentification IAM n'est pas activée sur une instance AlloyDB. Pour activer l'authentification IAM, procédez comme suit :

  • Activez manuellement l'authentification IAM sur chaque instance à laquelle les comptes de service ou utilisateurs IAM doivent se connecter.

  • Pour chaque compte d'utilisateur ou de service IAM qui doit se connecter en tant qu'utilisateur de base de données, procédez comme suit :

    1. À l'aide des outils d'administration IAM, accordez à cet utilisateur ou compte de service les rôles alloydb.databaseUser et serviceusage.serviceUsageConsumer.

    2. À l'aide de la Google Cloud CLI, créez un utilisateur de base de données correspondant à cet utilisateur ou à ce compte de service sur votre cluster AlloyDB.

    3. À l'aide d'un compte administrateur de base de données tel que postgres, accordez des droits d'accès au nouvel utilisateur de base de données pour les tables de base de données appropriées.

Vous pouvez répéter ces étapes chaque fois que vous devez ajouter des utilisateurs IAM à votre cluster AlloyDB.

Activer ou désactiver l'authentification IAM

Pour activer l'authentification IAM sur une instance, définissez l'option alloydb.iam_authentication sur on pour cette instance.

Pour désactiver l'authentification IAM sur une instance, redéfinissez alloydb.iam_authentication sur sa valeur par défaut, off.

Pour en savoir plus sur la définition d'options sur les instances AlloyDB, consultez Configurer les options de base de données d'une instance.

Accorder à un compte d'utilisateur ou de service IAM l'accès à une instance

Pour activer l'accès IAM à un nouvel utilisateur de base de données, suivez ces deux étapes :

  1. Mettez à jour les paramètres IAM de votre projet pour accorder l'accès à la base de données AlloyDB à l'utilisateur ou au compte de service IAM approprié.

  2. Créez un utilisateur de base de données sur votre cluster, en définissant le nom d'utilisateur sur l'adresse e-mail de l'utilisateur ou du compte de service IAM.

Vous pouvez répéter l'étape 2 pour accorder à un compte IAM l'accès à d'autres clusters de votre projet.

Mettre à jour un compte IAM avec le rôle approprié

Vous pouvez autoriser les utilisateurs IAM ou les comptes de service à s'authentifier auprès des instances AlloyDB en leur attribuant les rôles IAM suivants :

  • alloydb.databaseUser : permet à l'utilisateur de se connecter à votre instance AlloyDB.
  • serviceusage.serviceUsageConsumer : permet à l'utilisateur d'accéder à une API qui vérifie les autorisations.

Pour ce faire, suivez les instructions de la section Accorder l'accès à d'autres utilisateurs. À l'étape où vous sélectionnez un rôle à attribuer au compte principal IAM, choisissez alloydb.databaseUser.

Ajouter un compte d'utilisateur ou de service IAM à un cluster

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. Sélectionnez Cloud IAM.

  6. Dans le champ Principal, saisissez le principal IAM.

    Pour un compte utilisateur IAM, indiquez l'adresse e-mail complète du compte utilisateur. Par exemple, kai@altostrat.com.

    Pour un compte de service IAM, indiquez l'adresse du compte de service sans le suffixe .gserviceaccount.com. Par exemple, pour spécifier le compte de service my-service@my-project.iam.gserviceaccount.com, vous devez utiliser la valeur my-service@my-project.iam ici.

  7. Pour attribuer à l'utilisateur des rôles autres que le rôle alloydbsuperuser par défaut, procédez comme suit :

    1. Saisissez le nom du rôle dans Rôles.
    2. Pour ajouter le rôle, appuyez sur Entrée ou Tabulation.
    3. Sélectionnez x pour chaque rôle que vous souhaitez supprimer pour cet utilisateur.

      Pour en savoir plus, consultez Rôles prédéfinis.

  8. Cliquez sur Ajouter.

gcloud

Pour créer un utilisateur de base de données PostgreSQL basé sur un utilisateur IAM ou un compte de service, utilisez la commande gcloud alloydb users create.

gcloud alloydb users create USERNAME \
--cluster=CLUSTER \
--region=REGION \
--type=IAM_BASED

Remplacez les variables suivantes :

  • USERNAME : identifiant de l'utilisateur IAM que vous souhaitez ajouter en tant que nouvel utilisateur de base de données.

    Pour un compte utilisateur IAM, indiquez l'adresse e-mail complète du compte utilisateur. Par exemple, kai@altostrat.com.

    Pour un compte de service IAM, indiquez l'adresse du compte de service sans le suffixe .gserviceaccount.com. Par exemple, pour spécifier le compte de service my-service@my-project.iam.gserviceaccount.com, vous devez utiliser la valeur my-service@my-project.iam ici.

  • CLUSTER : ID du cluster dans lequel créer ce compte utilisateur de base de données.

  • REGION : ID de la région dans laquelle se trouve le cluster. Exemple :us-central1

Accorder les autorisations de base de données appropriées aux utilisateurs IAM

Lorsqu'un utilisateur IAM est ajouté à une instance de base de données, ce nouvel utilisateur ne dispose par défaut d'aucun droit sur les bases de données.

Lorsqu'un utilisateur ou un compte de service se connecte à une base de données, il peut exécuter des requêtes sur tous les objets de base de données dont l'accès a été accordé à PUBLIC.

Si l'utilisateur a besoin d'un accès supplémentaire, des droits supplémentaires peuvent lui être accordés à l'aide de l'instruction PostgreSQL GRANT.

GRANT SELECT ON TABLE_NAME TO "USERNAME";

Remplacez les variables suivantes :

  • USERNAME : adresse e-mail de l'utilisateur. Vous devez placer l'adresse entre guillemets doubles.

  • TABLE_NAME : nom de la table à laquelle vous souhaitez accorder l'accès à l'utilisateur.

Supprimer un compte d'utilisateur ou de service IAM d'un cluster

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 correspondant à 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.

gcloud

Utilisez la commande gcloud alloydb users delete.

gcloud alloydb users delete USERNAME \
--cluster=CLUSTER \
--region=REGION

Remplacez les éléments suivants :

  • USERNAME : identifiant de l'utilisateur IAM que vous souhaitez supprimer du cluster.

    Pour un compte utilisateur IAM, indiquez l'adresse e-mail complète du compte utilisateur. Par exemple, kai@altostrat.com.

    Pour un compte de service IAM, indiquez l'adresse du compte de service sans le suffixe .gserviceaccount.com. Par exemple, pour spécifier le compte de service my-service@my-project.iam.gserviceaccount.com, vous devez utiliser la valeur my-service@my-project.iam ici.

  • CLUSTER : ID du cluster dont cet utilisateur doit être supprimé.

  • REGION : ID de la région dans laquelle se trouve le cluster. Exemple :us-central1

Étapes suivantes