Vous pouvez configurer Identity and Access Management;authentification IAM pour les bases de données sur des clusters AlloyDB pour PostgreSQL nouveaux ou existants afin de gérer les connexions et les autorisations de base de données à l'aide de comptes IAM individuels ou de groupes IAM.
L'authentification IAM complète l'authentification de la base de données via les utilisateurs PostgreSQL standards, qui sont compatibles avec tous les clusters AlloyDB.
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 et gérez les autorisations par compte.
Groupes : vous ajoutez un groupe IAM au cluster afin que tous ses membres (utilisateurs et comptes de service) héritent des autorisations permettant de s'authentifier auprès des instances principales, des instances de pool de lecture et d'AlloyDB Studio sans avoir à ajouter chaque membre individuellement.
L'authentification IAM est désactivée par défaut sur les instances AlloyDB.
Pour utiliser l'authentification IAM, procédez comme suit :
- Activez l'authentification IAM individuelle ou de groupe sur votre instance.
- Attribuez les rôles requis au compte ou au groupe.
- Ajoutez le compte ou le groupe à votre cluster.
- Accordez des droits sur la 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'un cluster nouveau ou existant, définissez les indicateurs de base de données requis :
Pour l'authentification individuelle, définissez l'indicateur de base de données
alloydb.iam_authenticationsuron.Pour l'authentification de groupe, définissez les options de base de données
alloydb.iam_authenticationetalloydb.iam_group_authenticationsuron.
Pour désactiver l'authentification IAM, définissez les options sur off.
Pour en savoir plus sur la définition des indicateurs, consultez Configurer les indicateurs de base de données d'une instance.
Accorder l'accès à un compte individuel
Pour activer l'accès IAM pour un nouvel utilisateur de base de données, procédez comme suit :
Mettez à jour les paramètres IAM de votre projet pour accorder l'accès à la base de données AlloyDB au compte de service ou à l'utilisateur IAM approprié.
Créez un utilisateur de base de données sur votre cluster, en définissant le nom d'utilisateur comme l'adresse e-mail de l'utilisateur ou du compte de service IAM.
Pour accorder à un compte IAM l'accès à 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 autoriser les utilisateurs ou les comptes de service IAM à 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 compte d'utilisateur ou de service IAM à un cluster
Console
Accédez à la page Clusters.
Cliquez sur le nom du cluster auquel vous souhaitez ajouter un utilisateur.
Cliquez sur Utilisateurs.
Cliquez sur Ajouter un compte utilisateur.
Sélectionnez Cloud IAM.
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,
dana@example.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 servicemy-service@my-project.iam.gserviceaccount.com, vous devez utiliser la valeurmy-service@my-project.iam.Pour attribuer à l'utilisateur des rôles autres que le rôle par défaut
alloydbsuperuser, procédez comme suit :- Saisissez le nom du rôle dans Rôles.
- Pour ajouter le rôle, appuyez sur Entrée ou Tabulation.
Sélectionnez x pour tout rôle que vous souhaitez supprimer pour cet utilisateur.
Pour en savoir plus, consultez Rôles prédéfinis.
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 commande gcloud alloydb users create.
gcloud alloydb users create USERNAME \
--cluster=CLUSTER \
--region=REGION \
--type=IAM_BASEDRemplacez 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,
dana@example.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 servicemy-service@my-project.iam.gserviceaccount.com, vous devez utiliser la valeurmy-service@my-project.iam.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, par exempleus-central1.
Accorder les autorisations de base de données approprié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'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.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
Accédez à la page Clusters.
Cliquez sur le nom du cluster dont vous souhaitez supprimer l'utilisateur.
Cliquez sur Utilisateurs.
Sur la ligne représentant l'utilisateur que vous souhaitez supprimer, cliquez sur Ouvrir les actions pour cet utilisateur.
Sélectionnez Supprimer.
Dans la boîte de dialogue Supprimer le compte utilisateur ?, cliquez sur Supprimer.
gcloud
Exécutez la commande gcloud alloydb users delete.
gcloud alloydb users delete USERNAME \
--cluster=CLUSTER \
--region=REGIONRemplacez 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,
dana@example.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 servicemy-service@my-project.iam.gserviceaccount.com, vous devez utiliser la valeurmy-service@my-project.iam.CLUSTER: ID du cluster duquel supprimer cet utilisateur.REGION: ID de la région dans laquelle se trouve le cluster. Exemple :us-central1
Accorder l'accès à un groupe IAM
Pour utiliser l'authentification de groupe, vous devez ajouter un groupe IAM au cluster AlloyDB.
Ajouter un groupe IAM à un cluster
Avant d'ajouter un groupe IAM à un cluster, tenez compte des exigences suivantes :
Un cluster peut comporter jusqu'à 200 groupes IAM à tout moment. Les groupes inactifs sont comptabilisés dans cette limite.
Les noms des groupes IAM ne peuvent pas dépasser 63 caractères. Si vous avez un groupe IAM dont le nom dépasse 63 caractères, vous pouvez l'imbriquer dans un groupe parent dont le nom est valide. Vous devez ajouter le groupe parent au cluster avant de pouvoir utiliser le groupe imbriqué.
Pour ajouter un groupe IAM à un cluster, procédez comme suit :
Attribuez les rôles
roles/alloydb.databaseUseretroles/serviceusage.serviceUsageConsumerau compte de groupe. Pour en savoir plus sur l'attribution de ces rôles, consultez Mettre à jour un compte IAM avec le rôle approprié.Pour créer un utilisateur de base de données pour le groupe, exécutez la commande
gcloud alloydb users createavec l'option--type=IAM_GROUP:gcloud alloydb users create GROUP_EMAIL \ --cluster=CLUSTER \ --region=REGION \ --type=IAM_GROUPRemplacez les éléments suivants :
GROUP_EMAIL: adresse e-mail complète du groupe IAM (par exemple,my-group@example.com).CLUSTER: ID du cluster auquel ajouter le groupe.REGION: ID de la région où se trouve le cluster, par exempleus-central1.
Ajouter automatiquement les membres d'un groupe
Lorsque vous ajoutez un groupe IAM à un cluster, tous les utilisateurs et comptes de service de ce groupe héritent des autorisations d'authentification. Vous n'avez pas besoin d'ajouter les membres individuellement. Les membres du groupe peuvent se connecter directement aux instances principales, aux instances de pool de lecture et à AlloyDB Studio dans la console Google Cloud , y compris lors de leur première connexion aux instances de pool de lecture sans se connecter d'abord à l'instance principale. Lorsqu'un membre se connecte pour la première fois, AlloyDB crée automatiquement un compte de base de données pour ce compte principal.
Lorsque vous restaurez ou migrez un cluster AlloyDB à partir d'une sauvegarde Cloud SQL pour PostgreSQL, AlloyDB mappe et conserve les configurations des utilisateurs individuels et des groupes IAM. Pour en savoir plus sur la migration à partir d'une sauvegarde Cloud SQL pour PostgreSQL, consultez Migrer de Cloud SQL pour PostgreSQL vers AlloyDB.
Accorder des droits sur une base de données à un groupe IAM
Vous accordez des droits de 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";
Remplacez les éléments suivants :
TABLE_NAME: nom de la table à laquelle vous souhaitez accorder l'accès au groupe.GROUP_NAME: adresse e-mail du groupe. Incluez des guillemets doubles autour de l'adresse, car elle contient des caractères spéciaux.
Supprimer un groupe IAM d'un cluster
Pour supprimer un groupe IAM d'un cluster AlloyDB, révoquez les autorisations du groupe dans la console Google Cloud , puis supprimez l'utilisateur du groupe correspondant du cluster AlloyDB.
Révoquer les autorisations IAM :
Dans la console Google Cloud , accédez à la page IAM.
Recherchez le groupe IAM dont vous souhaitez supprimer l'accès.
Supprimez le rôle
roles/alloydb.databaseUseret tous les autres rôles liés à AlloyDB qui accordent l'accès au cluster. Cette action empêche les membres du groupe de s'authentifier.
Supprimez l'utilisateur du groupe du cluster AlloyDB :
Utilisez la Google Cloud CLI pour supprimer l'utilisateur représentant le groupe IAM du cluster AlloyDB. Le nom d'utilisateur est généralement l'adresse e-mail du groupe IAM :
gcloud alloydb users delete GROUP_EMAIL_ADDRESS \ --cluster=CLUSTER_ID \ --region=REGION_IDRemplacez les éléments suivants :
GROUP_EMAIL_ADDRESS: adresse e-mail complète du groupe IAM, par exemplemy-group@example.com.CLUSTER_ID: ID de votre cluster AlloyDB.REGION_ID: région où se trouve votre cluster AlloyDB (par exemple,us-central1).
Facultatif : Supprimez le groupe de Cloud Identity :
Vous devez disposer des droits d'administrateur appropriés (comme "Administrateur des groupes") dans votre compte Cloud Identity pour supprimer des groupes. En général, 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.
Assurez-vous de disposer des droits d'administrateur appropriés, tels que le rôle d'administrateur des 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.
Exécutez la commande gcloud CLI Cloud Identity suivante :
gcloud identity groups delete GROUP_EMAIL_ADDRESSLorsque vous révoquez l'autorisation de connexion
alloydb.databaseUserpour 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 IAM de groupe
Les utilisateurs IAM individuels existants n'utilisent pas l'authentification de groupe. Pour les migrer, procédez comme suit :
- Ajoutez les utilisateurs à un groupe IAM.
- Ajoutez le groupe à votre cluster.
- Attribuez les rôles requis au groupe.
- Attribuez des droits sur la base de données au groupe.
- Supprimez l'utilisateur individuel existant de votre cluster. Assurez-vous de transférer la propriété si vous le souhaitez.
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 des groupes.
Un compte existant n'hérite pas des droits
Si un compte n'hérite pas des droits d'un groupe, procédez comme suit :
Répertoriez les utilisateurs du cluster :
gcloud alloydb users list \ --cluster=CLUSTER \ --region=REGIONRemplacez les éléments suivants :
CLUSTER: ID de votre cluster AlloyDB.REGION: ID de la région où se trouve votre cluster AlloyDB (par exemple,us-central1).
Si le compte est de type
ALLOYDB_IAM_USER, supprimez-le du cluster. Les comptes de typeALLOYDB_IAM_USERn'héritent pas des droits du groupe.Pour recréer le compte avec le type d'utilisateur du groupe, reconnectez-vous à l'instance avec le compte utilisateur ou le compte de service. La reconnexion à l'instance recrée le compte avec le type de compte
ALLOYDB_IAM_GROUP_USERouALLOYDB_IAM_GROUP_SERVICE_ACCOUNT.