Gérer l'authentification IAM

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

L'authentification IAM complète l'authentification de base de données via des utilisateurs PostgreSQL standards, que chaque cluster AlloyDB prend en charge.

Vous pouvez vous authentifier à l'aide de comptes individuels ou de groupes :

  • Comptes individuels : vous ajoutez chaque utilisateur ou compte de service IAM au cluster. Vous pouvez utiliser des rôles d'utilisateur IAM ou PostgreSQL pour vous authentifier auprès de ce cluster.
  • Groupes : vous ajoutez un groupe IAM au cluster. Tous les membres (utilisateurs et comptes de service) de ce groupe héritent des autorisations d'authentification. Vous pouvez ainsi gérer l'accès en gérant l'appartenance à un groupe sans ajouter chaque membre au cluster individuellement.

L'authentification IAM est désactivée par défaut sur les instances AlloyDB.

Pour utiliser l'authentification IAM, procédez comme suit :

  1. Activez l'authentification IAM individuelle ou de groupe sur votre instance.
  2. Attribuez les rôles requis au compte ou au groupe.
  3. Ajoutez le compte ou le groupe à votre cluster.
  4. Accordez des droits pour une base de données au compte ou au groupe.

Activer et désactiver l'authentification IAM

Pour activer l'authentification IAM sur une instance, définissez les options de base de données.

Pour désactiver l'authentification IAM, définissez les options sur off.

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

Accorder l'accès à un compte individuel

Pour activer l'accès IAM à un nouvel utilisateur de base de données, procédez comme suit :

  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 et définissez le nom d'utilisateur comme adresse e-mail de l'utilisateur ou du compte de service IAM.

Pour accorder l'accès à un compte IAM à d'autres clusters de votre projet, répétez la dernière étape.

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

Vous pouvez permettre aux utilisateurs ou aux comptes de service IAM de 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: fournit à l'utilisateur l'accès à 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 utilisateur ou un compte 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 Compte principal, saisissez le compte 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 utilisez la valeur my-service@my-project.iam.

  7. Pour attribuer des rôles autres que le rôle par défaut alloydbsuperuser à l'utilisateur, 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 tout rôle que vous souhaitez supprimer pour cet utilisateur.

      Pour en savoir plus, consultez la section 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 ou un compte de service IAM, utilisez la gcloud alloydb users create commande.

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 utilisez la valeur my-service@my-project.iam.

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

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

Accorder les droits d'accès appropriés à la base de données aux utilisateurs IAM

Lorsque vous ajoutez un utilisateur IAM à un cluster AlloyDB, il ne dispose par défaut d'aucun droit sur les bases de données, à l'exception des objets de base de données auxquels PUBLIC peut accéder.

Si les utilisateurs ont besoin d'un accès supplémentaire, accordez-leur des droits supplémentaires à l'aide de l' GRANT instruction PostgreSQL :

GRANT SELECT ON TABLE_NAME TO "USERNAME";

Remplacez les variables suivantes :

  • USERNAME : adresse e-mail de l'utilisateur. Vous devez inclure des guillemets doubles autour de l'adresse.

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

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

Console

  1. Accédez à la page Clusters.

    Accéder aux clusters

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

  3. Cliquez sur Utilisateurs.

  4. Sur la ligne représentant 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 utilisez la valeur my-service@my-project.iam.

  • CLUSTER : ID du cluster duquel supprimer cet utilisateur.

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

Accorder l'accès à un groupe IAM

Pour utiliser l'authentification de groupe (preview), ajoutez un groupe IAM au cluster AlloyDB.

Ajouter un groupe IAM à un cluster

  1. Attribuez les rôles alloydb.databaseUser et serviceusage.serviceUsageConsumer au compte de groupe. Pour en savoir plus, consultez Mettre à jour un compte IAM avec le rôle approprié.

    Un cluster peut contenir jusqu'à 200 groupes IAM à tout moment. Les groupes inactifs sont comptabilisés dans cette limite.

    Les noms de groupe IAM ne peuvent comporter que 63 caractères.

    Si vous disposez d'un groupe IAM dont le nom dépasse la limite de longueur, vous pouvez l'imbriquer sous un groupe parent dont le nom est valide. Vous devez ajouter le groupe parent au cluster avant de pouvoir utiliser le groupe imbriqué.

  2. Pour créer un utilisateur de base de données pour le groupe, utilisez la commande gcloud alloydb users create avec l'option --type=IAM_GROUP.

    gcloud beta alloydb users create GROUP_EMAIL \
    --cluster=CLUSTER \
    --region=REGION \
    --type=IAM_GROUP

Ajouter automatiquement des membres d'un groupe

Lorsque vous ajoutez un groupe IAM à un cluster, tous les membres (utilisateurs et comptes de service) de ce groupe héritent des autorisations d'authentification. Vous n'avez pas besoin d'ajouter les membres individuellement. Lorsqu'un membre se connecte pour la première fois, AlloyDB crée automatiquement un compte pour lui.

Accorder des droits pour une base de données à un groupe IAM

Vous accordez des droits pour une base de données à des groupes plutôt qu'à des utilisateurs individuels.

Exécutez l'instruction GRANT à partir de la ligne de commande psql :

GRANT SELECT ON TABLE_NAME TO "GROUP_NAME";
  • GROUP_NAME : adresse e-mail du groupe. Vous devez utiliser des guillemets, car la chaîne contient des caractères spéciaux.
  • TABLE_NAME : nom de la table.

Supprimer un groupe IAM d'un cluster

Pour supprimer un groupe IAM d'un cluster AlloyDB, révoquez les autorisations du groupe dans la Google Cloud console et supprimez l'utilisateur de groupe correspondant du cluster AlloyDB.

  1. Révoquez les autorisations IAM :

    1. Dans la Google Cloud console, accédez à la page IAM.

      Accéder à IAM

    2. Recherchez le groupe IAM dont vous souhaitez supprimer l'accès.

    3. Supprimez le rôle roles/alloydb.databaseUser et tous les autres rôles associés à AlloyDB qui accordent l'accès au cluster. Cette action empêche les membres du groupe de s'authentifier.

  2. Supprimez l'utilisateur de groupe du cluster AlloyDB :

    Utilisez Google Cloud CLI pour supprimer l'utilisateur représentant le groupe IAM du cluster AlloyDB. Le nom d'utilisateur correspond généralement à l'adresse e-mail du groupe IAM.

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

    Remplacez les éléments suivants :

    • GROUP_EMAIL_ADDRESS: adresse e-mail complète du groupe IAM, par exemple my-group@example.com.
    • CLUSTER_ID : ID de votre cluster AlloyDB.
    • REGION_ID: région dans laquelle se trouve votre cluster AlloyDB, par exemple us-central1.
  3. Facultatif : Supprimez le groupe de Cloud Identity :

    Vous avez besoin des droits d'administrateur appropriés (comme Administrateur de groupes) dans votre compte Cloud Identity pour supprimer des groupes. En règle générale, les propriétaires de groupes ne peuvent supprimer que les groupes dont ils sont propriétaires.

    La propagation des modifications apportées aux autorisations IAM et aux appartenances à des groupes peut prendre du temps, potentiellement 15 minutes ou plus.

    1. Assurez-vous de disposer des droits d'administrateur appropriés, comme Administrateur de groupes dans votre compte Cloud Identity. Les propriétaires de groupes ne peuvent supprimer que les groupes dont ils sont propriétaires. Pour en savoir plus, consultez Rôles d'administrateur prédéfinis.

    2. Exécutez la commande Cloud Identity gcloud CLI suivante :

      gcloud identity groups delete GROUP_EMAIL_ADDRESS
    3. Lorsque vous révoquez l'autorisation de connexion alloydb.databaseUser pour un groupe IAM dans Cloud Identity, vous devez également supprimer le groupe du cluster AlloyDB pour vous assurer que l'accès est complètement supprimé.

Migrer des utilisateurs existants vers l'authentification de groupe IAM

Les utilisateurs IAM individuels existants n'utilisent pas l'authentification de groupe. Pour les migrer, procédez comme suit :

  1. Ajoutez les utilisateurs à un groupe IAM.
  2. Ajoutez le groupe à votre cluster.
  3. Attribuez les rôles requis au groupe.
  4. Attribuez des droits pour une base de données au groupe.
  5. Supprimez l'utilisateur individuel existant de votre cluster. Assurez-vous de transférer la propriété si nécessaire.

Lorsque l'utilisateur se reconnecte, AlloyDB recrée le compte en tant qu'utilisateur de groupe.

Résoudre les problèmes d'authentification de groupe

Utilisez les informations suivantes pour résoudre les problèmes d'authentification de groupe.

Un compte existant n'hérite pas des droits d'accès

Si un compte n'hérite pas des droits d'accès d'un groupe, procédez comme suit :

  1. Répertoriez les utilisateurs.

    gcloud alpha alloydb users list --cluster=CLUSTER --region=REGION
  2. Si le type est ALLOYDB_IAM_USER ou ALLOYDB_IAM_SERVICE_ACCOUNT, supprimez le compte. Il n'hérite pas des droits d'accès du groupe.

  3. Pour recréer le compte avec le type de groupe approprié, reconnectez-vous à l'instance avec l'utilisateur ou le compte de service. La reconnexion à l'instance recrée le compte avec le type de compte approprié ALLOYDB_IAM_GROUP_USER ou ALLOYDB_IAM_GROUP_SERVICE_ACCOUNT.

Étape suivante