Cette page explique comment les utilisateurs et les comptes de service peuvent se connecter aux bases de données Cloud SQL à l'aide de l'authentification IAM pour les bases de données Cloud SQL. Pour en savoir plus, consultez la page Authentification IAM.
Avant de commencer
- Configurez l'instance pour qu'elle utilise l'authentification IAM pour les bases de données. Pour en savoir plus, consultez la page Configurer des instances pour l'authentification IAM pour les bases de données.
- Ajoutez un utilisateur, un compte de service ou un groupe IAM à la base de données. Pour en savoir plus, consultez les pages Ajouter un compte d'utilisateur ou de service IAM à la base de données et Ajouter un groupe à la base de données.
- Ajoutez le rôle IAM
roles/cloudsql.instanceUser
à votre utilisateur, compte de service ou groupe IAM. Il s'agit d'un rôle prédéfini qui contient l'autorisation IAM Cloud SQLcloudsql.instances.login
requise. Vous avez besoin de cette autorisation pour vous connecter à une instance de base de données avec l'authentification IAM pour les bases de données. Pour en savoir plus, consultez Rôles et autorisations. Lorsqu'un utilisateur IAM est ajouté à une base de données, il ne dispose par défaut d'aucun droit sur les bases de données. Vous devez exécuter la commande
GRANT
pour accorder les autorisations requises à l'utilisateur de base de données IAM. Pour en savoir plus, consultez Accorder des droits à l'utilisateur IAM pour une base de données et Accorder des droits à un groupe pour une base de données.Si vous utilisez l'authentification de groupe IAM, l'utilisateur ou le compte de service IAM doit être membre d'un groupe disposant d'un rôle ou d'autorisations IAM pour se connecter à l'instance Cloud SQL. Cloud SQL crée un compte après la première connexion de l'utilisateur ou du compte de service à l'instance.
Se connecter à l'aide de l'authentification IAM automatique pour les bases de données
Vous pouvez configurer un connecteur Cloud SQL pour gérer automatiquement l'authentification auprès de l'instance Cloud SQL au nom d'un utilisateur ou d'une application. Les connecteurs incluent le proxy d'authentification Cloud SQL, le connecteur Go, le connecteur Java et le connecteur Python, qui sont tous compatibles avec l'authentification IAM automatique des bases de données. Lorsque vous utilisez un connecteur Cloud SQL avec l'authentification IAM automatique pour les bases de données, le compte IAM que vous utilisez pour démarrer le connecteur doit être le même que celui qui s'authentifie auprès de la base de données.Pour vous connecter à l'aide de l'authentification IAM automatique pour les bases de données, procédez comme suit :
Proxy d'authentification Cloud SQL
Authentifiez-vous sur Google Cloud.
Utilisateur
Authentifiez-vous sur Google Cloud à l'aide des identifiants par défaut de l'application (ADC).
Exécutez la commande
gcloud auth application-default login
. Pour en savoir plus, consultez la page Configurer les identifiants par défaut de l'application.Compte de service
Pour vous authentifier auprès de Google Cloud à l'aide des ADC avec un compte de service, vous pouvez emprunter l'identité d'un compte de service ou configurer une clé de compte de service. Si vous souhaitez vous authentifier avec l'identité de compte de service empruntée, remplacez SERVICE_ACCOUNT_EMAIL_ADDRESS et exécutez la commande suivante :
gcloud auth application-default login --impersonate-service-account SERVICE_ACCOUNT_EMAIL_ADDRESS
Pour en savoir plus, consultez la page Configurer les identifiants par défaut de l'application.
Démarrez le proxy d'authentification Cloud SQL avec l'option
--auto-iam-authn
. Remplacez INSTANCE_CONNECTION_NAME par la chaîne de connexion utilisée pour identifier l'instance Cloud SQL. Si vous utilisez un port différent du port MySQL par défaut, spécifiez le numéro de port. Pour savoir comment trouver et construire cette chaîne, consultez la section Options d'authentification du proxy d'authentification Cloud SQL../cloud-sql-proxy --auto-iam-authn INSTANCE_CONNECTION_NAME
Pour en savoir plus sur le démarrage du proxy, consultez la section Démarrer le proxy d'authentification Cloud SQL.
Lorsque vous êtes prêt à vous connecter à l'instance à l'aide du proxy d'authentification Cloud SQL, connectez-vous avec le client
mysql
. Remplacez les éléments suivants :- HOSTNAME : adresse IP utilisée par le proxy d'authentification Cloud SQL. Par défaut, le proxy d'authentification Cloud SQL utilise l'adresse localhost de
127.0.0.1
, mais vous pouvez attribuer une autre adresse IP lorsque vous démarrez le proxy d'authentification Cloud SQL. - USERNAME : pour un compte utilisateur IAM, il s'agit de l'adresse e-mail de l'utilisateur, sans le symbole
@
ni le nom de domaine. Par exemple, pourtest-user@example.com
, saisisseztest-user
. Pour un compte de service, il s'agit de l'adresse e-mail du compte de service sans le suffixe@project-id.iam.gserviceaccount.com
. - PORT_NUMBER : facultatif. Si vous avez spécifié un autre port dans la chaîne de connexion de l'instance, spécifiez ce numéro de port.
Exécutez la commande suivante :
mysql --host=HOSTNAME \ --user=USERNAME \ --port=PORT_NUMBER
Pour en savoir plus sur la connexion au proxy d'authentification Cloud SQL, consultez la section Se connecter à l'aide du client mysql.
- HOSTNAME : adresse IP utilisée par le proxy d'authentification Cloud SQL. Par défaut, le proxy d'authentification Cloud SQL utilise l'adresse localhost de
Go
Java JDBC
Java R2DBC
Python
Se connecter à l'aide de l'authentification IAM manuelle pour les bases de données
Un utilisateur ou une application peut s'authentifier auprès de la base de données à l'aide d'IAM en demandant manuellement un jeton d'accès à Google Cloud et en le présentant à la base de données. À 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 manuelle 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.
Dans ces étapes, vous vous authentifiez auprès de Google Cloud, demandez un jeton d'accès, puis vous vous connectez à la base de données en transmettant le jeton en tant que mot de passe pour l'utilisateur IAM de la base de données. Suivez ces étapes pour vous connecter sans le proxy d'authentification Cloud SQL.
Pour réaliser ces étapes, vous devez :
- Utiliser l'option
mysql
--enable-cleartext-plugin. - Si vous vous connectez à une instance avec une adresse IP publique, autorisez l'accès externe à l'instance. Pour en savoir plus, consultez la section Autorisez l'adresse IP de votre machine à utiliser une adresse IP publique.
- Si vous vous connectez à une instance avec une adresse IP privée, exécutez la commande dans le réseau cloud privé virtuel (VPC).
- Utilisez la commande
gcloud sql generate-login-token
pour générer votre jeton d'authentification.
Pour vous connecter à l'aide de l'authentification IAM manuelle pour les bases de données, procédez comme suit :
gcloud
Authentifiez-vous sur Google Cloud.
Utilisateur
Authentifiez-vous auprès d'IAM en utilisant
gcloud auth login
. Pour en savoir plus, consultez la section Autoriser avec un compte utilisateur.Compte de service
Authentifiez-vous auprès d'IAM en utilisant
gcloud auth activate-service-account
. Pour en savoir plus, consultez la section Autoriser avec un compte de service.Demandez le jeton d'accès et connectez-vous avec un client.
Remplacez les éléments suivants :
- HOSTNAME : adresse IP de l'instance (soit l'adresse IP publique, soit l'adresse IP privée).
- USERNAME : pour un compte utilisateur IAM, il s'agit de l'adresse e-mail de l'utilisateur, sans le symbole
@
ni le nom de domaine. Par exemple, pourtest-user@example.com
, saisisseztest-user
. Pour un compte de service, il s'agit de l'adresse e-mail du compte de service sans le suffixe@project-id.iam.gserviceaccount.com
.
MYSQL_PWD=`gcloud sql generate-login-token` \ mysql --enable-cleartext-plugin \ --ssl-mode=REQUIRED \ --host=HOSTNAME \ --user=USERNAME
Si
ssl_mode
sur votre instance Cloud SQL est configuré surTRUSTED_CLIENT_CERTIFICATE_REQUIRED
, incluez un certificat et une clé client lorsque vous vous connectez. En outre, pour permettre au client de valider l'identité du serveur pour l'authentification mutuelle, spécifiez le certificat de serveurserver-ca.pem
. Exemple :MYSQL_PWD=`gcloud sql generate-login-token` \ mysql --enable-cleartext-plugin \ --ssl-mode=VERIFY_CA \ --ssl-ca=server-ca.pem \ --ssl-cert=client-cert.pem \ --ssl-key=client-key.pem \ --host=HOSTNAME \ --user=USERNAME
Pour en savoir plus sur la création d'un certificat et d'une clé client, consultez la section Certificats clients.
Étapes suivantes
- Apprenez-en davantage sur l'authentification IAM pour les bases de données.
- Découvrez comment activer et afficher les informations de connexion dans les journaux d'audit.
- Apprenez à créer des utilisateurs et des comptes de service qui utilisent l'authentification IAM pour les bases de données Cloud SQL.
- Découvrez comment ajouter une liaison de stratégie IAM à un compte d'utilisateur ou de service.
- Apprenez à gérer les utilisateurs et les comptes de service pour l'authentification IAM pour les bases de données.