Configurer des instances nouvelles et existantes pour l'authentification IAM pour les bases de données

Cette page contient des procédures permettant de créer ou de modifier des instances Cloud SQL afin d'autoriser les utilisateurs, les comptes de service ou les groupes configurés à utiliser l'authentification IAM pour les bases de données Cloud SQL. Pour en savoir plus sur l'intégration IAM dans Cloud SQL, consultez la page Authentification IAM.

Une nouvelle instance possède quatre bases de données système :

  • information_schema : fournit un accès aux métadonnées de la base de données ainsi que des informations sur le serveur MySQL.
  • mysql : schéma système. Il contient des tables qui stockent les informations requises par le serveur MySQL lors de son exécution.
  • performance_schema : fonctionnalité permettant de surveiller l'exécution du serveur MySQL à un niveau inférieur.
  • sys : contient un ensemble d'objets qui aide les administrateurs de bases de données et les développeurs à interpréter les données collectées par le schéma de performances.

Avant de commencer

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Install the Google Cloud CLI.
  5. To initialize the gcloud CLI, run the following command:

    gcloud init
  6. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  7. Make sure that billing is enabled for your Google Cloud project.

  8. Install the Google Cloud CLI.
  9. To initialize the gcloud CLI, run the following command:

    gcloud init
  10. Assurez-vous de disposer des rôles d'administrateur Cloud SQL et de lecteur de Compute sur votre compte utilisateur.

    Accéder à la page IAM

    En savoir plus sur les rôles et les autorisations

Configurer de nouvelles instances pour l'authentification IAM pour les bases de données

Pour configurer une nouvelle instance Cloud SQL pour l'authentification IAM pour les bases de données, vous devez activer l'option cloudsql_iam_authentication. Une fois cette option activée, vous pouvez ajouter des utilisateurs IAM, des comptes de service ou des groupes à l'instance Cloud SQL.

Pour configurer une nouvelle instance Cloud SQL afin qu'elle utilise l'authentification IAM pour les bases de données, procédez comme suit :

Console

  1. Dans Google Cloud Console, accédez à la page Instances Cloud SQL.

    Accéder à la page Instances Cloud SQL

  2. Cliquez sur Create Instance (Créer une instance).
  3. Cliquez sur Choisir MySQL.
  4. Entrez un nom pour l'ID d'instance.
  5. N'incluez pas d'informations sensibles ou personnelles dans le nom de l'instance, car les utilisateurs externes peuvent le voir. Vous n'avez pas besoin d'indiquer l'ID du projet dans le nom de l'instance. L'ID du projet est automatiquement inclus le cas échéant (par exemple, dans les fichiers journaux).
  6. Entrez un mot de passe pour l'utilisateur racine.
  7. Dans le menu Version de la base de données, sélectionnez une version de base de données.
  8. Dans la section Sélectionner la disponibilité régionale et zonale, sélectionnez la région et la zone de votre instance. Placez l'instance dans la même région que les ressources qui y accèdent. La région que vous sélectionnez ne peut plus être modifiée. En règle générale, il n'est pas nécessaire de spécifier une zone.
  9. Dans la section Personnaliser votre instance, cliquez sur Afficher les options de configuration, puis développez Options.
  10. Cliquez sur Ajouter une option.
  11. Dans le menu Sélectionner une option, sélectionnez l'option cloudsql_iam_authentication. Assurez-vous que le paramètre Activé est sélectionné comme valeur pour cette option, puis cliquez sur OK.
  12. Configurez d'autres paramètres d'instance, si nécessaire. Pour plus d'informations sur les paramètres, consultez la section Paramètres.
  13. Cliquez sur Créer une instance.

gcloud

Exécutez gcloud sql instances create avec le paramètre --database-flags défini sur cloudsql_iam_authentication=on.

Remplacez les éléments suivants :

  • INSTANCE_NAME : le nom de la nouvelle instance
  • MYSQL_VERSION : version de MySQL (par exemple MYSQL_5_7 ou MYSQL_8_0).
  • NUMBER_OF_CORES : le nombre de cœurs dans la machine
  • AMOUNT_OF_MEMORY : la quantité de mémoire dans la machine. Une unité de taille doit être fournie (par exemple, 3 072 Mio ou 9 Gio).
  • ZONE : la zone Compute Engine préférée (telle que us-central1-a ou us-central1-b)
  • PASSWORD : créez un mot de passe pour l'utilisateur racine.
gcloud sql instances create INSTANCE_NAME \
--database-version=MYSQL_VERSION \
--cpu=NUMBER_OF_CORES \
--memory=AMOUNT_OF_MEMORY \
--zone=ZONE_NAME \
--root-password=PASSWORD \
--database-flags=cloudsql_iam_authentication=on

Terraform

Pour créer une instance avec l'authentification IAM pour les bases de données activée, utilisez une ressource Terraform.

resource "google_sql_database_instance" "default" {
  name             = "mysql-db-auth-instance-name-test"
  region           = "us-west4"
  database_version = "MYSQL_8_0"
  settings {
    tier = "db-f1-micro"
    database_flags {
      name  = "cloudsql_iam_authentication"
      value = "on"
    }
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally
  # delete this instance by use of Terraform whereas
  # `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

Appliquer les modifications

Pour appliquer votre configuration Terraform dans un projet Google Cloud, suivez les procédures des sections suivantes.

Préparer Cloud Shell

  1. Lancez Cloud Shell.
  2. Définissez le projet Google Cloud par défaut dans lequel vous souhaitez appliquer vos configurations Terraform.

    Vous n'avez besoin d'exécuter cette commande qu'une seule fois par projet et vous pouvez l'exécuter dans n'importe quel répertoire.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Les variables d'environnement sont remplacées si vous définissez des valeurs explicites dans le fichier de configuration Terraform.

Préparer le répertoire

Chaque fichier de configuration Terraform doit avoir son propre répertoire (également appelé module racine).

  1. Dans Cloud Shell, créez un répertoire et un nouveau fichier dans ce répertoire. Le nom du fichier doit comporter l'extension .tf, par exemple main.tf. Dans ce tutoriel, le fichier est appelé main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Si vous suivez un tutoriel, vous pouvez copier l'exemple de code dans chaque section ou étape.

    Copiez l'exemple de code dans le fichier main.tf que vous venez de créer.

    Vous pouvez également copier le code depuis GitHub. Cela est recommandé lorsque l'extrait Terraform fait partie d'une solution de bout en bout.

  3. Examinez et modifiez les exemples de paramètres à appliquer à votre environnement.
  4. Enregistrez les modifications.
  5. Initialisez Terraform. Cette opération n'est à effectuer qu'une seule fois par répertoire.
    terraform init

    Vous pouvez également utiliser la dernière version du fournisseur Google en incluant l'option -upgrade :

    terraform init -upgrade

Appliquer les modifications

  1. Examinez la configuration et vérifiez que les ressources que Terraform va créer ou mettre à jour correspondent à vos attentes :
    terraform plan

    Corrigez les modifications de la configuration si nécessaire.

  2. Appliquez la configuration Terraform en exécutant la commande suivante et en saisissant yes lorsque vous y êtes invité :
    terraform apply

    Attendez que Terraform affiche le message "Apply completed!" (Application terminée).

  3. Ouvrez votre projet Google Cloud pour afficher les résultats. Dans la console Google Cloud, accédez à vos ressources dans l'interface utilisateur pour vous assurer que Terraform les a créées ou mises à jour.

Supprimer les modifications

Pour supprimer vos modifications, procédez comme suit :

  1. Pour désactiver la protection contre la suppression, définissez l'argument deletion_protection sur false dans le fichier de configuration Terraform.
    deletion_protection =  "false"
  2. Appliquez la configuration Terraform mise à jour en exécutant la commande suivante et en saisissant yes lorsque vous y êtes invité :
    terraform apply
  1. Supprimez les ressources précédemment appliquées à votre configuration Terraform en exécutant la commande suivante et en saisissant yes à la requête :

    terraform destroy

REST v1

N'incluez pas d'informations sensibles ou permettant d'identifier personnellement l'utilisateur dans le nom de l'instance, car les utilisateurs externes peuvent le voir.

Vous n'avez pas besoin d'indiquer l'ID du projet dans le nom de l'instance. L'ID du projet est automatiquement inclus le cas échéant (par exemple, dans les fichiers journaux).

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • INSTANCE_ID : ID de l'instance souhaitée
  • REGION : région souhaitée, telle que us-east-1
  • PROJECT_ID : ID du projet
  • LOCATION_ID : ID de l'emplacement
  • DATABASE_VERSION : chaîne d'énumération de la version de base de données. Par exemple : MYSQL_8_0
  • PASSWORD : mot de passe de l'utilisateur racine.
  • MACHINE_TYPE : chaîne d'énumération du type (niveau) de machine, comme suit : db-custom-[CPUS]-[MEMORY_MBS].

Méthode HTTP et URL :

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/instances

Corps JSON de la requête :

{
  "name": "INSTANCE_ID",
  "region": "REGION",
  "databaseVersion": "DATABASE_VERSION",
  "rootPassword": "PASSWORD",
  "settings": {
    "tier": "MACHINE_TYPE",
    "backupConfiguration": {
      "enabled": true
    },
    "databaseFlags": [
      {
        "name": "cloudsql_iam_authentication",
        "value": "on"
      }
    ]
  }
}

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-01T19:13:21.834Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}
Pour découvrir comment est formée la requête sous-jacente de l'API REST pour cette tâche, consultez la page sur la méthode instances:insert dans APIs Explorer.

REST v1beta4

N'incluez pas d'informations sensibles ou permettant d'identifier personnellement l'utilisateur dans le nom de l'instance, car les utilisateurs externes peuvent le voir.

Vous n'avez pas besoin d'indiquer l'ID du projet dans le nom de l'instance. L'ID du projet est automatiquement inclus le cas échéant (par exemple, dans les fichiers journaux).

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • INSTANCE_ID : ID de l'instance souhaitée
  • REGION : région souhaitée, telle que us-east-1
  • PROJECT_ID : ID du projet
  • LOCATION_ID : ID de l'emplacement
  • DATABASE_VERSION : chaîne d'énumération de la version de base de données. Par exemple : MYSQL_8_0
  • PASSWORD : mot de passe de l'utilisateur racine.
  • MACHINE_TYPE : chaîne d'énumération du type (niveau) de machine, comme suit : db-custom-[CPUS]-[MEMORY_MBS].

Méthode HTTP et URL :

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/locations/LOCATION_ID/instances

Corps JSON de la requête :

{
  "name": "INSTANCE_ID",
  "region": "REGION",
  "databaseVersion": "DATABASE_VERSION",
  "rootPassword": "PASSWORD",
  "settings": {
    "tier": "MACHINE_TYPE",
    "backupConfiguration": {
      "enabled": true
    },
    "databaseFlags": [
      {
        "name": "cloudsql_iam_authentication",
        "value": "on"
      }
    ]
  }
}

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-01T19:13:21.834Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}
Pour découvrir comment est formée la requête sous-jacente de l'API REST pour cette tâche, consultez la page sur la méthode instances:insert dans APIs Explorer.

Configurer des instances existantes pour l'authentification IAM pour les bases de données

Pour configurer une instance Cloud SQL existante pour l'authentification IAM pour les bases de données, vous devez activer l'indicateur cloudsql_iam_authentication. Une fois cette option activée, vous pouvez ajouter des utilisateurs IAM, des comptes de service ou des groupes à l'instance Cloud SQL.

Pour configurer une instance Cloud SQL existante afin qu'elle utilise l'authentification IAM pour les bases de données :

Console

  1. Dans Google Cloud Console, accédez à la page Instances Cloud SQL.

    Accéder à la page Instances Cloud SQL

  2. Pour ouvrir la page Présentation d'une instance, cliquez sur son nom.
  3. Cliquez sur Modifier.
  4. Dans la section Personnaliser votre instance, développez la section Options.
  5. Cliquez sur Ajouter une option.
  6. Dans le menu Sélectionner une option, sélectionnez l'option cloudsql_iam_authentication. Assurez-vous que le paramètre Activé est sélectionné comme valeur pour cette option, puis cliquez sur OK.
  7. Configurez d'autres paramètres d'instance, si nécessaire. Pour plus d'informations sur les paramètres, consultez la section Paramètres.
  8. Cliquez sur Enregistrer.

gcloud

Pour en savoir plus sur l'installation et le démarrage avec la gcloud CLI, consultez la page Installer la gcloud CLI. Pour en savoir plus sur le démarrage de Cloud Shell, consultez la page Utiliser Cloud Shell.

Pour cette procédure, exécutez la commande gcloud sql instances patch.

Remplacez les éléments suivants :

  • INSTANCE_NAME : le nom de la nouvelle instance
gcloud sql instances patch INSTANCE_NAME \
--database-flags=cloudsql_iam_authentication=on

Cette action réinitialise tous les autres paramètres d'option de base de données existants. Pour en savoir plus sur la définition des options de base de données, consultez la page Définir une option de base de données.


REST v1

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID : ID du projet
  • LOCATION_ID : ID de l'emplacement
  • INSTANCE_ID : ID de l'instance souhaitée
  • REGION : région souhaitée
  • DATABASE_VERSION : chaîne d'énumération de la version de base de données. Par exemple : MYSQL_8_0
  • PASSWORD : mot de passe de l'utilisateur racine.
  • MACHINE_TYPE : chaîne d'énumération du type (niveau) de machine, comme suit : db-custom-[CPUS]-[MEMORY_MBS].

Méthode HTTP et URL :

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/instances

Corps JSON de la requête :

{
  "name": "INSTANCE_ID",
  "region": "REGION",
  "databaseVersion": "DATABASE_VERSION",
  "rootPassword": "PASSWORD",
  "settings": {
    "tier": "MACHINE_TYPE",
    "backupConfiguration": {
      "enabled": true
    }
    "databaseFlags":
    [
      {
        "name": "cloudsql_iam_authentication",
        "value": "on"
      }
    ]
  }
}

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-01T19:13:21.834Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

REST v1beta4

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID : ID du projet
  • LOCATION_ID : ID de l'emplacement
  • INSTANCE_ID : ID de l'instance souhaitée
  • REGION : région souhaitée
  • DATABASE_VERSION : chaîne d'énumération de la version de base de données. Par exemple : MYSQL_8_0
  • PASSWORD : mot de passe de l'utilisateur racine.
  • MACHINE_TYPE : chaîne d'énumération du type (niveau) de machine, comme suit : db-custom-[CPUS]-[MEMORY_MBS].

Méthode HTTP et URL :

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/locations/LOCATION_ID/instances

Corps JSON de la requête :

{
  "name": "INSTANCE_ID",
  "region": "REGION",
  "databaseVersion": "DATABASE_VERSION",
  "rootPassword": "PASSWORD",
  "settings": {
    "tier": "MACHINE_TYPE",
    "backupConfiguration": {
      "enabled": true
    }
    "databaseFlags":
    [
      {
        "name": "cloudsql_iam_authentication",
        "value": "on"
      }
    ]
  }
}

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-01T19:13:21.834Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Étape suivante