Authentification IAM pour les bases de données dans Cloud SQL

Cette page décrit le fonctionnement de l'authentification IAM pour les bases de données sur les instances Cloud SQL. Elle explique également comment ce processus affecte la création des utilisateurs et des comptes de service, ainsi que les connexions utilisant ces comptes.

Présentation

Intégré à la gestion de l'authentification et des accès (IAM), Cloud SQL vous aide à mieux gérer l'accès des comptes d'utilisateur et de service aux bases de données. Cette fonctionnalité s'appelle l'authentification IAM pour les bases de données.

L'authentification est le processus qui permet de valider l'identité d'un utilisateur qui tente d'accéder à une instance. Cloud SQL utilise les types d'authentification 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.

Authentification IAM pour Cloud SQL

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 aux membres ou aux groupes. Pour en savoir plus, consultez la présentation d'IAM.

Les administrateurs dont les utilisateurs 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 :

  • Membres Dans Cloud SQL, vous pouvez utiliser deux types de membres IAM : le compte d'utilisateur et le compte de service (pour les applications). Les autres types de membres, tels que les groupes Google, les domaines G Suite ou les domaines Cloud Identity, ne sont pas compatibles avec l'authentification IAM pour les bases de données. Pour en savoir plus, consultez la page Concepts liés à l'identité.
  • Rôles Pour l'authentification IAM pour les bases de données, un utilisateur a besoin de l'autorisation cloudsql.instances.login pour se connecter à une instance. Pour obtenir cette autorisation, vous devez lier l'utilisateur ou le compte de service au rôle prédéfini "Utilisateur de l'instance Cloud SQL" ou à un rôle personnalisé qui regroupe cette autorisation. Pour en savoir plus sur les rôles IAM, consultez la page Rôles.
  • Ressource Les ressources auxquelles les membres accèdent sont des instances Cloud SQL. Par défaut, les liaisons de stratégie IAM sont appliquées au niveau du projet, de sorte que les membres reçoivent les autorisations de rôle pour toutes les instances Cloud SQL du projet.

Options d'authentification IAM pour les bases de données

Cloud SQL pour MySQL est compatible avec l'authentification manuelle de base de données IAM.

Authentification IAM manuelle pour les bases de données

L'authentification IAM manuelle pour les bases de données nécessite que le membre IAM transmette explicitement le jeton d'accès au lieu de l'attribut mot de passe dans la requête de connexion client. Les membres doivent d'abord se connecter à Google Cloud et demander explicitement à IAM le jeton d'accès.

À l'aide du SDK Cloud, vous pouvez explicitement demander un jeton OAuth 2.0 avec le champ d'application de l'API Cloud SQL 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 permettre aux utilisateurs et aux comptes de service d'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. 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 demande d'ajouter le rôle "Utilisateur Cloud SQL" à l'utilisateur. Ce rôle est requis 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.

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 dupliqué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.

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. 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.
  2. 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 3 000 par minute et par instance.
  3. L'authentification IAM pour les bases de données n'est pas compatible avec les instances qui utilisent MySQL 5.6.

Étape suivante