Authentification IAM

Google Cloud propose Identity and Access Management (IAM), qui vous permet de définir de manière plus précise l'accès à des ressources Google Cloud spécifiques et d'empêcher tout accès indésirable à d'autres ressources. Cette page explique comment Cloud SQL est intégré à IAM et comment utiliser IAM pour gérer l'accès aux ressources Cloud SQL et pour authentifier les bases de données. Pour obtenir une description détaillée de Google Cloud IAM, consultez la documentation IAM.

Le service Cloud SQL propose un ensemble de rôles prédéfinis conçus pour vous aider à contrôler l'accès aux ressources qu'il fournit. Si ces rôles ne vous attribuent pas les autorisations dont vous avez besoin, vous pouvez également créer des rôles personnalisés. En outre, les anciens rôles de base (éditeur, lecteur et propriétaire) restent disponibles, même s'ils ne permettent pas un contrôle aussi précis que les rôles Cloud SQL. Vous pouvez les utiliser spécifiquement pour accéder à l'ensemble des ressources Google Cloud, et pas uniquement aux ressources Cloud SQL. Pour en savoir plus sur les rôles Google Cloud de base, consultez la section Rôles de base.

Vous pouvez définir une stratégie IAM à n'importe quel niveau de la hiérarchie des ressources : au niveau de l'entreprise, du dossier ou du projet. Les ressources héritent des stratégies de toutes leurs ressources parentes.

Documentations de référence IAM pour Cloud SQL

Concepts d'authentification IAM

Lorsque vous utilisez l'authentification IAM, l'autorisation d'accéder à une ressource (une instance Cloud SQL) 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, 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 l'authentification 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 :

  • Comptes principaux. Dans Cloud SQL, vous pouvez utiliser plusieurs types de comptes principaux : compte utilisateur, compte de service (pour les applications) ou groupe. Pour en savoir plus, consultez la page Concepts liés à l'identité.
  • Rôles Un rôle est un ensemble d'autorisations. Vous pouvez accorder des rôles aux comptes principaux afin de leur fournir les droits nécessaires à l'accomplissement de tâches spécifiques. Par exemple, avec l'authentification IAM pour les bases de données, un compte principal a besoin de l'autorisation cloudsql.instances.login pour se connecter à une instance, qui est incluse dans le rôle Utilisateur d'instance Cloud SQL. Pour obtenir l'autorisation, vous devez lier l'utilisateur, le compte de service ou le groupe au rôle Cloud SQL prédéfini ou à un rôle personnalisé qui inclut cette autorisation. Pour en savoir plus sur les rôles IAM, consultez la page Rôles.
  • Ressource Les ressources auxquelles les comptes principaux accèdent sont des instances Cloud SQL. Par défaut, des 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 Cloud SQL du projet.

Authentification à la base de données IAM

L'authentification de base de données est le processus consistant à vérifier l'identité d'un utilisateur qui tente d'accéder à des bases de données. Dans Cloud SQL, vous pouvez utiliser les types d'authentification de base de données suivants pour les utilisateurs de base de données :

  • L'authentification intégrée à la base de données utilise un nom d'utilisateur et un mot de passe pour authentifier un utilisateur de base de données.
  • L'authentification IAM pour les bases de données utilise IAM pour authentifier un utilisateur à l'aide d'un jeton d'accès. Vous disposez de deux options pour gérer les utilisateurs ou les comptes de service.
    • Individuellement : par défaut, lorsque vous utilisez l'authentification IAM pour les bases de données, vous attribuez des rôles IAM et des droits de base de données à des utilisateurs et à des comptes de service individuels. Vous ajoutez des comptes individuels à des instances et gérez les droits de chaque compte séparément.
    • Par groupe : l'authentification IAM de groupe vous permet de contrôler l'accès aux instances Cloud SQL au niveau du groupe. Par exemple, vous pouvez attribuer des rôles IAM et des droits de base de données à un groupe Cloud Identity. Tous les utilisateurs et comptes de service du groupe Cloud Identity héritent des rôles IAM et des droits de base de données attribués au groupe.

Comparer les options d'authentification de base de données

Le tableau suivant compare différentes méthodes d'authentification de base de données pour Cloud SQL.

Fonctionnalité Authentification intégrée à la base de données Authentification IAM de base de données (individuelle) Authentification IAM de groupe
Méthode d'authentification Mot de passe Jeton d'authentification temporaire Jeton d'authentification temporaire
Chiffrement du trafic réseau SSL non requis SSL requis SSL requis
Gestion des utilisateurs Manuel Centralisé via IAM Centralisé via IAM et les groupes Cloud Identity

Authentification IAM de groupe

L'authentification IAM de groupe vous permet de gérer les utilisateurs Cloud SQL au niveau du groupe. Un groupe Cloud Identity est un exemple de groupe. Cette fonctionnalité simplifie la gestion des utilisateurs de base de données. Vous pouvez gérer le rôle ou les autorisations IAM Cloud SQL pour plusieurs comptes à la fois, plutôt que de mettre à jour chaque compte de service ou utilisateur individuellement. Vous pouvez également accorder et révoquer les droits sur une base de données pour un groupe Cloud Identity. Tous les nouveaux comptes que vous ajoutez au groupe Cloud Identity héritent des droits de ce groupe.

L'authentification IAM de groupe vous permet d'effectuer les opérations suivantes :

  • Ajouter un utilisateur à un groupe et lui demander d'hériter automatiquement de ses rôles IAM et de ses droits sur la base de données.
  • Supprimer un utilisateur d'un groupe pour supprimer ses droits de connexion et de base de données des bases de données Cloud SQL.
  • Accorder les droits de connexion ou de base de données à un groupe en une fois au lieu de devoir accorder les mêmes droits plusieurs fois à différents utilisateurs.
  • Supprimer les autorisations de connexion ou l'accès à un objet de base de données pour un groupe à la fois.

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. Cloud SQL crée un compte de base de données sur l'instance pour cet utilisateur ou ce compte de service après 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. À des fins d'audit, vous avez la possibilité de voir quel compte a effectué quelle 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.

Lorsque vous ajoutez un utilisateur ou un compte de service à un groupe, les modifications suivantes se produisent dans Cloud SQL :

  • Si vous avez déjà accordé des autorisations de connexion IAM au groupe, l'utilisateur ou le compte de service peut se connecter à l'instance Cloud SQL, car l'utilisateur ou le compte de service appartient au groupe.
  • L'utilisateur hérite automatiquement des droits de base de données accordés au groupe.

Lorsque vous supprimez un compte d'utilisateur ou de service du groupe, les modifications suivantes se produisent dans Cloud SQL :

  • 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 se connecter s'il reçoit des autorisations de connexion IAM pour l'instance Cloud SQL 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 concernant l'authentification de groupe IAM

  • Lorsque vous révoquez l'autorisation de connexion (cloudsql.instances.login) pour un groupe IAM dans Cloud Identity, veillez également à supprimer le groupe de l'instance Cloud SQL.
  • Lorsque vous supprimez un groupe d'une Cloud Identity, assurez-vous également de le supprimer de l'instance Cloud SQL.
  • Utilisez des groupes pour configurer le contrôle des accès basé sur les rôles dans votre base de données. Accordez toujours au groupe les droits les moins nécessaires.
  • N'accordez pas de rôles d'authentification de groupe IAM aux utilisateurs intégrés. Par exemple, si vous disposez d'un utilisateur intégré, user-a, et que vous créez un utilisateur d'authentification de groupe IAM, user-b@example.com, n'attribuez pas le rôle user-b@example.com à user-a.

Restrictions d'authentification IAM de groupe

  • Vous pouvez ajouter jusqu'à 200 groupes IAM à une instance.
  • Vous ne pouvez pas ajouter de comptes de service ou d'utilisateur IAM individuels appartenant à un groupe sur la même instance. En d'autres termes, vous ne pouvez pas ajouter un compte de type CLOUD_IAM_USER ou CLOUD_IAM_SERVICE_ACCOUNT si un compte identique de type CLOUD_IAM_GROUP_USER ou CLOUD_IAM_GROUP_SERVICE_ACCOUNT existe déjà.
  • Si un compte individuel existe déjà sur une instance de type CLOUD_IAM_USER ou CLOUD_IAM_SERVICE_ACCOUNT, le compte ne peut pas être utilisé 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, consultez la section Un utilisateur ou un compte de service IAM existant n'hérite pas des droits sur la base de données accordés à son groupe.
  • 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 s'ajoute au temps nécessaire pour les modifications IAM.

Authentification IAM automatique ou manuelle pour les bases de données

Cloud SQL pour MySQL propose deux options 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 Cloud SQL intermédiaire, tel que le proxy d'authentification Cloud SQL ou l'un des connecteurs de langage Cloud SQL. Avec l'authentification IAM automatique pour les bases de données, les utilisateurs doivent 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.

L'authentification IAM automatique pour les bases de données nécessite l'utilisation d'un connecteur Cloud SQL et est compatible avec le proxy d'authentification Cloud SQL, le connecteur Go, le connecteur Java et le connecteur Python.

Pour l'expérience la plus sécurisée et la plus fiable possible, nous vous recommandons d'utiliser l'authentification IAM automatique pour les bases de données. L'authentification IAM pour les bases de données utilise des jetons d'accès OAuth 2.0 de courte durée, qui ne sont valides que pendant une heure. Les connecteurs Cloud SQL peuvent demander et actualiser ces jetons, garantissant ainsi que les processus de longue durée ou les applications qui reposent sur le regroupement de connexions peuvent disposer de connexions stables. Il est fortement recommandé d'utiliser l'authentification IAM automatique pour les bases de données plutôt que l'authentification manuelle.

Pour en savoir plus, consultez la section Se connecter à l'aide de l'authentification IAM automatique pour les bases de données.

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.

À l'aide de gcloud CLI, vous pouvez explicitement demander un jeton OAuth 2.0 avec le champ d'application de l'API Cloud SQL Admin servant à vous connecter à la base de données. Lorsque vous vous connectez en tant qu'utilisateur de la base de données avec l'authentification IAM pour les bases de données, vous utilisez votre adresse e-mail comme nom d'utilisateur et le jeton d'accès comme mot de passe. Vous pouvez utiliser cette méthode avec une connexion directe à la base de données ou à travers un connecteur Cloud SQL.

La connexion avec l'authentification IAM pour les bases de données ne peut être effectuée que via une connexion SSL.

Pour en savoir plus, consultez la section Se connecter avec l'authentification IAM manuelle pour les bases de données.

Administration des utilisateurs et des comptes de service

Pour autoriser les utilisateurs et les comptes de service à accéder aux bases de données d'une instance à l'aide de l'authentification IAM pour les bases de données, vous devez les ajouter à l'instance ou les ajouter à un groupe ayant accès à l'instance. Pour en savoir plus, consultez la page Ajouter un utilisateur ou un compte de service qui utilise IAM.

Si vous utilisez Google Cloud Console pour ajouter des utilisateurs ou des comptes de service, Cloud SQL vous invite à ajouter le rôle "Utilisateur Cloud SQL" à l'utilisateur. Ce rôle est nécessaire pour que les utilisateurs se connectent à l'instance.

Après avoir ajouté l'utilisateur IAM à la base de données, vous devez accorder manuellement les privilèges sur la base de données. Utilisez la commande MySQL GRANT pour accorder d'autres privilèges sur la base de données.

Configuration d'instance pour l'authentification IAM pour les bases de données Cloud SQL

Vous pouvez activer l'authentification IAM pour les bases de données sur une instance à l'aide de l'option cloudsql_iam_authentication. Une fois cette option activée, l'instance active les connexions à partir des comptes configurés pour l'authentification IAM pour les bases de données.

Cette option est requise pour l'authentification IAM pour les groupes et l'authentification IAM pour les bases de données.

La définition de cette option n'empêche pas les utilisateurs non-IAM existants d'utiliser leur nom d'utilisateur et leur mot de passe pour se connecter. Toutefois, si vous désactivez cette option sur l'instance, tout utilisateur précédemment ajouté à l'aide de l'authentification IAM pour les bases de données perd l'accès à l'instance. Pour en savoir plus, consultez la page Configurer des instances pour l'authentification IAM pour les bases de données.

Authentification IAM pour les bases de données Cloud SQL pour différents scénarios d'instances

Instances dupliquées avec accès en lecture L'authentification IAM pour les bases de données n'est pas activée automatiquement dans une instance dupliquée avec accès en lecture, même si elle est activée sur l'instance principale. Après avoir créé une instance dupliquée avec accès en lecture, vous devez ajouter l'authentification IAM pour les bases de données. Pour en savoir plus, consultez la page Configurer des connexions à des instances répliquées pour l'authentification IAM pour les bases de données.
Instances restaurées Si une instance a été précédemment sauvegardée puis restaurée sur la même instance ou sur une autre instance du même projet, les autorisations de connexion utilisateur actuelles s'appliquent. Si vous restaurez une sauvegarde sur une nouvelle instance d'un autre projet, vous devez configurer les autorisations utilisateur de la nouvelle instance. Pour en savoir plus, consultez la section Ajouter un compte d'utilisateur ou de service qui utilise l'authentification IAM pour les bases de données.

À propos des conditions IAM

Les conditions IAM vous permettent d'attribuer des rôles en fonction de divers attributs. Par exemple, vous pouvez autoriser l'accès à certaines dates et heures uniquement ou accorder l'accès uniquement aux ressources Cloud SQL portant certains noms.

Pour en savoir plus sur les conditions IAM, consultez la page Présentation des conditions IAM. Vous pouvez également en savoir plus sur l'utilisation des conditions IAM avec Cloud SQL, y compris des exemples.

Utiliser les journaux d'audit Cloud

Pour conserver les enregistrements d'accès aux données, y compris les informations de connexion, vous pouvez utiliser des journaux d'audit. Les journaux d'audit Cloud sont désactivés par défaut. Vous devez activer les journaux d'audit des accès aux données pour le suivi des connexions. L'utilisation de la journalisation d'audit à cet effet entraîne des frais pour la journalisation des données. Pour en savoir plus, consultez les pages Journaux d'audit, Configurer les journaux d'audit des accès aux données et Tarifs des données de journalisation.

Restrictions

  1. Le nom d'utilisateur d'un compte utilisateur d'authentification IAM pour les bases de données doit être en minuscules. Par exemple, example-user@example.com. Example-User@example.com n'est pas autorisé.
  2. 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.
  3. 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. Nous vous recommandons d'éviter les connexions fréquentes et de restreindre les connexions à l'aide de réseaux autorisés. Le quota d'autorisation de connexions est de 12 000 par minute et par instance.
  4. L'authentification IAM pour les bases de données n'est pas compatible avec les instances qui utilisent MySQL 5.6.

Étape suivante