Identity and Access Management#39;authentification IAM pour les bases de données vous permet de contrôler et de gérer l'accès à vos bases de données AlloyDB pour PostgreSQL à l'aide de stratégies IAM centralisées plutôt que de mots de passe de base de données.
L'authentification IAM pour les bases de données propose les options suivantes :
- Authentification IAM individuelle : vous ajoutez des utilisateurs ou des comptes de service spécifiques au cluster.
- Authentification IAM de groupe : vous ajoutez un groupe IAM au cluster, et tous les membres de ce groupe héritent des autorisations d'authentification.
L'authentification individuelle est utile lorsque vous devez accorder l'accès directement à des comptes spécifiques. L'authentification de groupe vous permet de gérer l'accès aux bases de données en modifiant l'appartenance au groupe, ce qui réduit la nécessité d'ajouter ou de supprimer des utilisateurs individuels au niveau du cluster.
Concepts d'authentification IAM
Lorsque vous utilisez l'authentification IAM, l'autorisation d'accéder à une instance AlloyDB n'est pas accordée directement à l'utilisateur final. À la place, les autorisations sont regroupées dans des rôles, et les rôles sont attribués à des comptes principaux. Pour en savoir plus sur les rôles et les autorisations IAM, consultez la présentation d'IAM.
Les administrateurs comptant des utilisateurs qui se connectent via l'authentification IAM pour les bases de données peuvent utiliser IAM pour gérer de manière centralisée le contrôle des accès à leurs instances à l'aide de stratégies IAM.
Les stratégies IAM impliquent les entités suivantes :
Principaux : dans AlloyDB, vous pouvez utiliser un compte utilisateur, un compte de service pour les applications ou un groupe IAM. Pour en savoir plus sur les comptes principaux, consultez Comptes principaux.
Rôles : pour l'authentification IAM pour les bases de données, un compte principal a besoin de l'autorisation
alloydb.users.login, qui est incluse dans le rôle d'utilisateur de base de données AlloyDB (roles/alloydb.databaseUser) et le rôle de consommateur Service Usage (roles/serviceusage.serviceUsageConsumer). Pour accorder ces autorisations, liez l'utilisateur, le compte de service ou le groupe à ces rôles prédéfinis ou à un rôle personnalisé incluant les autorisations requises. Pour en savoir plus sur les rôles et les autorisations, consultez Autorisations et rôles.Ressources : les ressources auxquelles les comptes principaux accèdent sont des clusters AlloyDB. Les liaisons de stratégie IAM sont appliquées au niveau du projet, de sorte que les comptes principaux reçoivent des autorisations de rôle pour toutes les instances AlloyDB du projet. Pour en savoir plus sur les ressources, consultez Ressources.
Comparer les options d'authentification pour les bases de données
Utilisez le tableau suivant pour déterminer la méthode d'authentification la mieux adaptée à votre cas d'utilisation.
| Fonctionnalité | Authentification intégrée à la base de données | Authentification IAM pour les bases de données |
|---|---|---|
| Méthode d'authentification | Mot de passe | Jeton d'authentification temporaire |
| Chiffrement du trafic réseau | SSL non requis | SSL requis |
| Gestion des utilisateurs | Manuelle | Centralisé via IAM |
Authentification IAM automatique ou manuelle pour les bases de données
AlloyDB propose deux méthodes d'authentification IAM pour les bases de données : automatique et manuelle.
Authentification IAM automatique pour les bases de données
L'authentification IAM automatique pour les bases de données vous permet de transférer des requêtes et de gérer les jetons d'accès à un connecteur AlloyDB intermédiaire, tel que le proxy d'authentification ou l'un des connecteurs de langage.
Avec l'authentification IAM automatique pour les bases de données, une application doit transmettre uniquement le nom d'utilisateur IAM de la base de données dans une requête de connexion du client. Le connecteur envoie les informations de jeton d'accès à la place de l'attribut mot de passe au nom du client.
Authentification IAM manuelle pour les bases de données
L'authentification IAM manuelle pour les bases de données nécessite que le compte principal IAM transmette explicitement le jeton d'accès comme attribut mot de passe dans la requête de connexion client. Les comptes principaux doivent d'abord se connecter à Google Cloud et demander explicitement à IAM le jeton d'accès.
Pour conserver les enregistrements d'accès aux données, y compris les connexions, vous pouvez utiliser Cloud Audit Logs. Cloud Audit Logs sont désactivés par défaut. Activez les journaux d'audit des accès aux données pour le suivi des connexions.
Authentification IAM de groupe
L'authentification IAM de groupe vous permet de gérer les utilisateurs AlloyDB au niveau du groupe sur les clusters nouveaux et existants, par exemple à l'aide d'un groupe Cloud Identity. Vous pouvez gérer les rôles et les autorisations PostgreSQL pour plusieurs utilisateurs IAM en même temps, plutôt que de mettre à jour chaque utilisateur ou compte de service individuellement. Lorsque vous accordez ou révoquez des rôles de base de données pour un groupe Cloud Identity, tous les comptes que vous ajoutez à ce groupe héritent des droits et des rôles du groupe.
Pour activer l'authentification IAM pour les groupes sur une instance, définissez les options de base de données alloydb.iam_authentication et alloydb.iam_group_authentication sur on.
L'authentification IAM de groupe vous permet d'effectuer les opérations suivantes :
Activez l'authentification de groupe sur les clusters nouveaux et existants sans appliquer de correctif manuel au cluster.
Ajouter un utilisateur à un groupe pour qu'il hérite automatiquement des rôles IAM et des droits sur la base de données.
Supprimer un utilisateur d'un groupe pour révoquer ses droits de connexion et de base de données sur les clusters AlloyDB.
Accorder ou révoquer les autorisations de connexion et l'accès aux objets de base de données pour un groupe entier à la fois, au lieu de mettre à jour des comptes individuels.
Connectez-vous directement à AlloyDB Studio dans la console Google Cloud , aux instances principales ou aux instances de pool de lecture, y compris lors de la première connexion directe aux instances de pool de lecture sans vous connecter d'abord à l'instance principale.
Restaurez ou migrez un cluster AlloyDB à partir d'une sauvegarde Cloud SQL pour PostgreSQL tout en mappant et en préservant les configurations des utilisateurs individuels et des groupes IAM.
Même si des rôles et des autorisations IAM sont attribués au niveau du groupe, les utilisateurs et les comptes de service utilisent leurs comptes et identifiants IAM individuels, et non un compte de groupe partagé, pour se connecter aux instances principales, aux instances de pool de lecture ou à AlloyDB Studio. AlloyDB crée un compte de base de données sur le cluster pour ce compte principal lors de sa première connexion.
L'activité de connexion et de base de données individuelle de chaque utilisateur ou compte de service s'affiche dans les journaux d'audit, ce qui vous permet de vérifier quel compte a effectué chaque action dans votre base de données.
Pour en savoir plus sur l'utilisation des groupes Cloud Identity, consultez la Présentation de Cloud Identity. Pour en savoir plus sur la migration à partir d'une sauvegarde Cloud SQL pour PostgreSQL, consultez Migrer de Cloud SQL pour PostgreSQL vers AlloyDB.
Lorsque vous ajoutez un utilisateur ou un compte de service à un groupe, les modifications suivantes se produisent dans AlloyDB :
Si vous avez déjà accordé des autorisations de connexion IAM au groupe, l'utilisateur ou le compte de service peut se connecter au cluster AlloyDB, car l'utilisateur ou le compte de service appartient au groupe.
L'utilisateur hérite automatiquement des droits de base de données ou des rôles accordés au groupe.
Lorsque vous supprimez un compte d'utilisateur ou de service du groupe, les modifications suivantes se produisent dans AlloyDB :
- L'utilisateur perd tous les droits de base de données précédemment hérités en tant que membre du groupe.
- L'utilisateur peut toujours créer des sessions s'il reçoit des autorisations de connexion IAM pour le cluster AlloyDB via d'autres appartenances à des groupes. Toutefois, l'utilisateur ne disposera pas des droits sur les bases de données de son ancien groupe d'appartenance lors de sa connexion.
Bonnes pratiques
Suivez ces bonnes pratiques lorsque vous utilisez l'authentification de groupe IAM :
Lorsque vous révoquez le rôle
roles/alloydb.databaseUserpour un groupe IAM dans IAM, supprimez le groupe du cluster AlloyDB.Lorsque vous supprimez un groupe de Cloud Identity, supprimez-le également du cluster AlloyDB.
Utilisez des groupes pour configurer le contrôle des accès basé sur les rôles dans votre base de données. Accordez les privilèges les plus faibles requis au groupe.
Limites
L'authentification IAM de groupe présente les limites suivantes :
L'authentification IAM de groupe n'est compatible qu'avec la version de base de données
POSTGRES_15et les versions ultérieures.Pour des raisons de sécurité, les connexions utilisant l'authentification IAM pour les bases de données ne sont disponibles que sur une connexion SSL. Les connexions non chiffrées sont refusées.
Chaque instance dispose d'un quota de connexion par minute, qu'il s'agisse de connexions réussies ou pas. Lorsque le quota est dépassé, les connexions sont temporairement indisponibles. Évitez les connexions fréquentes et limitez les connexions à l'aide de réseaux autorisés.
Le compte principal raccourci d'un compte de service, qui correspond à l'adresse e-mail sans le suffixe
., ne doit pas dépasser 63 caractères. PostgreSQL tronque les noms de rôles de plus de 63 caractères dans le catalogue de la base de données, ce qui entraîne l'échec de l'authentification IAM. Si vous ne pouvez pas raccourcir le nom du compte de service, consultez la solution de contournement pour l'emprunt d'identité d'un compte de service.Vous pouvez ajouter jusqu'à 200 groupes IAM à un cluster.
Vous ne pouvez pas ajouter de comptes de service ou d'utilisateur IAM individuels appartenant à un groupe sur le même cluster. En d'autres termes, vous ne pouvez pas ajouter un compte de type
ALLOYDB_IAM_USERsi un compte identique de typeALLOYDB_IAM_GROUP_USERouALLOYDB_IAM_GROUP_SERVICE_ACCOUNTexiste déjà.Si un compte individuel existe déjà sur un cluster de type
ALLOYDB_IAM_USER, vous ne pouvez pas l'utiliser pour l'authentification de groupe IAM. Ces types d'utilisateurs n'héritent pas des rôles IAM ni des droits sur la base de données d'un groupe. Pour résoudre ce problème et utiliser le compte avec l'authentification IAM pour les groupes, supprimez l'utilisateur ou le compte de service IAM. Pour en savoir plus sur la résolution de ce problème, consultez Un compte existant n'hérite pas des droits.La propagation des modifications apportées à l'appartenance à un groupe Cloud Identity, telles que l'ajout d'un compte, prend environ 15 minutes. Ce temps de propagation s'ajoute au temps nécessaire pour les modifications IAM.
L'authentification IAM pour les groupes nécessite que tous les indicateurs de base de données liés aux mots de passe qui régissent le nombre minimal de caractères, de caractères numériques et de longueur minimale soient assouplis ou désactivés.
L'authentification de groupe IAM n'est pas compatible avec le regroupement de connexions géré ni avec les connexions PgBouncer.
L'authentification de groupe IAM n'est pas compatible avec les identités fédérées.