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 l'authentification de base 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 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 deux types de comptes principaux : le compte utilisateur et le compte de service (pour les applications). Les autres types de comptes principaux, tels que les groupes Google, les domaines Google Workspace 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 compte principal 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 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

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 consistant à vérifier l'identité d'un utilisateur qui tente d'accéder à une instance. Cloud SQL utilise les types d'authentification suivants pour les utilisateurs de bases 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.

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 à la base de données IAM
Méthode d'authentification Mot de passe Jeton d'authentification temporaire
Chiffrement du trafic réseau SSL non requis SSL requis
Gestion des utilisateurs Mode manuel Centralisé via IAM

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

Cloud SQL pour PostgreSQL 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. 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. Elle est actuellement 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 éphémères, 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. 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.

Si vous ajoutez des utilisateurs à l'aide de gcloud ou de l'API, vous devez accorder manuellement les droits de connexion. Utilisez la commande PostgreSQL GRANT pour accorder des droits de 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.

À 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 apprendre 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. 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 12 000 par minute et par instance.

Étapes suivantes