Cette page explique comment utiliser l'option d'autorité de certification (AC) gérée par le client comme mode d'AC du serveur pour votre instance Cloud SQL.
Présentation
Avec l'option d'autorité de certification gérée par le client, vous configurez votre propre pool d'autorités de certification et votre propre autorité de certification dans Certificate Authority Service (CA Service). Lorsque vous sélectionnez l'option d'autorité de certification gérée par le client, vous configurez la hiérarchie de l'autorité de certification et gérez la rotation des certificats d'autorité de certification pour vos instances Cloud SQL.
Avant de pouvoir créer une instance Cloud SQL avec l'option d'autorité de certification gérée par le client, vous devez créer un pool d'autorités de certification dans la même région que votre instance, ainsi qu'au moins une autorité de certification dans ce pool à l'aide du service CA. L'autorité de certification peut être une autorité de certification racine ou une autorité de certification subordonnée. Vous pouvez également créer une autorité de certification subordonnée dans CA Service, puis la relier à une autorité de certification racine externe. Lorsque vous créez votre instance, vous spécifiez le pool d'autorités de certification. Votre demande est déléguée à un compte de service spécifique au projet, qui est autorisé à utiliser le pool d'autorités de certification. Le compte de service demande une CA au pool, et Cloud SQL utilise cette CA pour signer le certificat de serveur de l'instance.
Pour le mode CA du serveur de votre instance dans Cloud SQL, vous pouvez choisir parmi les trois options suivantes :
- autorité de certification interne par instance
- Autorité de certification partagée gérée par Google
- autorité de certification gérée par le client
Vous pouvez choisir l'option d'autorité de certification gérée par le client si vous devez gérer votre propre autorité de certification pour des raisons de conformité. Pour en savoir plus sur l'utilisation des autres options, consultez Autoriser l'authentification avec des certificats SSL/TLS.
Workflow
Pour utiliser l'option d'autorité de certification gérée par le client, le workflow est le suivant :
- Créez un compte de service pour votre projet Cloud SQL.
- Créez un pool d'autorités de certification dans CA Service.
- Créez une autorité de certification dans CA Service.
- Créez une instance Cloud SQL qui utilise l'autorité de certification. Lorsque vous créez votre instance, vous déléguez au compte de service l'autorisation de signer le certificat de serveur avec le pool d'autorités de certification que vous avez créé.
Avant de commencer
Avant d'utiliser l'option d'autorité de certification gérée par le client, assurez-vous de remplir les conditions suivantes.
Rôles requis
Pour obtenir les autorisations nécessaires pour créer un compte de service spécifique à Cloud SQL, demandez à votre administrateur de vous accorder le rôle IAM Créateur de compte de service (roles/iam.serviceAccountCreator
) pour chaque projet.
Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.
Pour obtenir les autorisations nécessaires pour créer un pool d'autorités de certification et une autorité de certification, demandez à votre administrateur de vous accorder le rôle IAM Responsable des opérations du service d'autorité de certification(roles/privateca.caManager
) sur le service d'autorité de certification.
Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.
Créer un compte de service spécifique à un projet
Dans le projet dans lequel vous prévoyez de créer vos instances Cloud SQL, créez un compte de service dédié qui gérera la demande de création et signera les certificats de serveur pour vos instances Cloud SQL.
gcloud
Exécutez la commande suivante pour créer un compte de service pour votre projet Cloud SQL :
gcloud beta services identity create \ --service=sqladmin.googleapis.com \ --project=PROJECT_ID
Remplacez PROJECT_ID
par l'ID du projet dans lequel vous prévoyez de créer vos instances Cloud SQL.
La commande crée un compte de service nommé service-PROJECT_ID@gcp-sa-cloud-sql.iam.gserviceaccount.com
dans le projet. Notez le nom du compte de service Demandeur de certificat CA Service.
Créer un pool d'autorités de certification
Créez un pool d'autorités de certification dans CA Service.
Vous pouvez créer un pool d'autorité de certification dans le même projet que celui dans lequel vous prévoyez de créer vos instances Cloud SQL, ou vous pouvez créer le pool d'autorité de certification dans un autre projet. Toutefois, si vous créez le pool d'AC dans un autre projet, il est possible que VPC Service Controls vous empêche de créer des instances Cloud SQL en fonction de la règle de l'organisation. Pour résoudre le problème, assurez-vous que le projet qui héberge le pool d'autorité de certification et l'autorité de certification, ainsi que le projet qui héberge Cloud SQL, appartiennent au même périmètre de service. Pour en savoir plus, consultez Périmètres de service et Gérer les périmètres de service.
Pour créer un pool d'autorités de certification, suivez les instructions de la section Créer un pool d'autorités de certification. Vous pouvez accepter les valeurs par défaut pour le pool d'AC, avec les paramètres de configuration requis suivants :
- Créez le pool d'autorités de certification dans la même région que celle dans laquelle vous prévoyez de créer votre instance Cloud SQL. Pour obtenir la liste des régions compatibles avec Cloud SQL, consultez Régions.
- Autoriser les demandes de certificat basées sur la configuration.
- Autoriser les noms DNS dans les autres noms de l'objet (SAN). Lorsque vous configurez les contraintes d'identité du pool d'autorité de certification, ne définissez aucune restriction sur le format des noms DNS qui pourraient entrer en conflit avec ce que Cloud SQL pourrait ajouter au SAN.
Accorder au compte de service l'accès au pool d'autorités de certification
Pour vous assurer que le compte de service dispose des autorisations nécessaires pour demander et signer des certificats pour vos instances Cloud SQL, accordez-lui le rôle suivant pour le pool d'autorités de certification que vous avez créé :
roles/privateca.certificateRequester
gcloud
Exécutez la commande
gcloud privateca pools
pour accorder au compte de service l'accès au pool d'autorités de certification :
gcloud privateca pools add-iam-policy-binding CA_POOL_ID \ --project=PROJECT_ID \ --location=REGION \ --member serviceAccount:SERVICE_ACCOUNT_NAME \ --role=roles/privateca.certificateRequester
Effectuez les remplacements suivants :
CA_POOL_ID
par l'ID du pool d'autorités de certification que vous avez créé.PROJECT_ID
par l'ID du projet dans lequel vous prévoyez de créer vos instances Cloud SQL.REGION
par la région dans laquelle vous avez créé le pool d'autorités de certification.SERVICE_ACCOUNT_NAME
par le nom du compte de service CA Service Certificate Requester que vous avez créé pour le projet précédemment.
Créer une autorité de certification dans le pool d'autorités de certification
Créez au moins une autorité de certification dans le pool d'autorités de certification que vous avez créé.
Vous pouvez créer une autorité de certification racine ou subordonnée.
Pour créer une autorité de certification racine, suivez les instructions de la section Créer une autorité de certification racine. Vous pouvez accepter les valeurs par défaut pour l'autorité de certification, mais assurez-vous de la créer à l'état Activée.
Lorsque vous configurez l'algorithme et la taille de clé de l'autorité de certification, vous pouvez sélectionner n'importe quelle taille de clé et n'importe quel algorithme. Cloud SQL génère ses certificats de serveur à l'aide de clés de courbe elliptique EC P-384 (SHA-384), mais les clés cryptographiques de votre CA ne doivent pas nécessairement correspondre.Si vous créez une autorité de certification subordonnée, vous devez d'abord créer et configurer votre autorité de certification racine.
Pour créer une autorité de certification subordonnée dans CA Service, suivez les instructions de la section Créer une autorité de certification subordonnée.
Pour créer une autorité de certification subordonnée à partir d'une autorité de certification racine externe, suivez les instructions de la section Créer une autorité de certification subordonnée à partir d'une autorité de certification racine externe.
Créer une instance Cloud SQL
Pour créer une instance Cloud SQL qui utilise l'option d'autorité de certification gérée par le client, procédez comme suit.
Console
Vous ne pouvez pas utiliser la console Google Cloud pour créer des instances qui utilisent l'option d'AC gérée par le client. Si vous créez une instance à l'aide de la consoleGoogle Cloud , le mode CA partagée est défini par défaut.
Pour sélectionner un autre mode d'autorité de certification du serveur, utilisez plutôt la commande gcloud sql instances create
.
gcloud
gcloud sql instances create "INSTANCE_NAME" \ --database-version=DATABASE_VERSION \ --project=PROJECT_ID \ --region=REGION \ --server-ca-mode=CUSTOMER_MANAGED_CAS_CA \ --server-ca-pool=projects/PROJECT_ID_CAS/locations/REGION/caPools/CA_POOL_ID
Effectuez les remplacements suivants :
INSTANCE_NAME
par le nom de l'instance Cloud SQL que vous souhaitez créer.DATABASE_VERSION
par leenum
de la version de l'instance Cloud SQL que vous souhaitez créer. L'option d'autorité de certification gérée par le client n'est compatible qu'avec MySQL 8.0.30 et versions ultérieures.PROJECT_ID
par l'ID du projet dans lequel vous prévoyez de créer vos instances Cloud SQL.PROJECT_ID_CAS
par l'ID du projet dans lequel vous avez créé votre CA_POOL_ID. Ce projet peut être le même que celui dans lequel vous souhaitez créer votre instance Cloud SQL ou un autre.REGION
par la région dans laquelle vous avez créé le pool d'autorités de certification. Vous devez créer votre instance dans la même région que le pool d'autorités de certification.CA_POOL_ID
par l'ID du pool d'autorités de certification que vous avez créé.
REST
Pour créer une instance Cloud SQL qui utilise l'option d'autorité de certification gérée par le client, utilisez la méthode instances.insert
et spécifiez les propriétés suivantes :
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
PROJECT_ID
: ID du projet dans lequel vous prévoyez de créer vos instances Cloud SQL.PROJECT_ID_CAS
: ID du projet dans lequel vous avez créé votre CA_POOL_ID. Ce projet peut être le même que celui dans lequel vous souhaitez créer votre instance Cloud SQL ou un autre.INSTANCE_ID
: nom de l'instance Cloud SQL que vous souhaitez créer.REGION
correspond à la région dans laquelle vous avez créé le pool d'autorités de certification. Vous devez créer votre instance dans la même région que le pool d'autorités de certification.CA_POOL_ID
par l'ID du pool d'autorités de certification que vous avez créé.
Méthode HTTP et URL :
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances
Corps JSON de la requête :
{
"name":"INSTANCE_ID",
"region":"REGION
",
"databaseVersion": "DATABASE_VERSION",
"settings":{
"ipConfiguration":
{
"serverCaPool": "projects/PROJECT_ID_CAS/locations/REGION/caPools/CA_POOL_ID",
"serverCaMode": "CUSTOMER_MANAGED_CAS_CA"
}
}
}
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", "status": "PENDING", "user": "user@example.com", "insertTime": "2025-01-16T02:32:12.281Z", "operationType": "UPDATE", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID_CSQL/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
Résoudre les problèmes
Problème | Dépannage |
---|---|
Vous recevez le message d'erreur suivant : PERMISSION_DENIED: Permission .
|
Assurez-vous d'avoir attribué le rôle roles/privateca.certificateRequester au compte de service que vous avez créé pour votre projet Cloud SQL.
Pour en savoir plus, consultez Accorder l'accès au pool d'autorités de certification au compte de service.
|
Vous recevez le message d'erreur suivant : PERMISSION_DENIED: Request is prohibited by organization's policy vpcServiceControlsUniqueIdentifier VPC_SERVICE_CONTROLS_UNIQUE_IDENTIFIER.
|
Assurez-vous de configurer VPC Service Controls de sorte que le projet qui héberge le pool et l'autorité de certification CA Service et le projet qui héberge Cloud SQL appartiennent au même périmètre de service. Pour en savoir plus, consultez Périmètres de service et Gérer les périmètres de service. |
Un des messages d'erreur
|
Vérifiez les paramètres de configuration de votre pool d'AC et de votre AC. Assurez-vous de remplir toutes les conditions requises indiquées dans Créer un pool d'autorités de certification et Créer une autorité de certification dans le pool d'autorités de certification. |
Vous recevez le message d'erreur suivant :
|
Cela représente des problèmes de quota avec le service CA. Vérifiez le quota du service CA dans votre projet. Vérifiez si vous utilisez des requêtes dans votre pool d'AC en dehors de Cloud SQL. Pour en savoir plus, consultez la page Quotas et limites. |
Vous recevez le message d'erreur suivant : NOT FOUND: parent resource CA_POOL_ID not found.
|
Vérifiez l'ID, l'emplacement et le nom du pool d'autorité de certification que vous avez spécifiés lorsque vous avez créé votre instance Cloud SQL. Assurez-vous de ne pas avoir fait de faute de frappe. |
Vous recevez le message d'erreur suivant : FAILED_PRECONDITION: There are no enabled CAs in the CaPool.
Please ensure that there is at least one enabled Certificate Authority to
issue a certificate.
|
Assurez-vous d'avoir créé au moins une autorité de certification dans le pool de CA que vous avez spécifié lors de la création de votre instance Cloud SQL, et que l'autorité de certification est activée. |
Vous recevez le message d'erreur suivant : FAILED_PRECONDITION: Per-Product Per-Project Service Account (P4 SA) SERVICE_ACCOUNT_NAME not found for project PROJECT_ID.
|
Assurez-vous d'avoir créé le compte de service pour votre projet Cloud SQL. Pour en savoir plus, consultez Créer un compte de service spécifique à un projet. |
Vous recevez le message d'erreur suivant : INVALID ARGUMENT: Invalid format for server CA pool.
|
Assurez-vous d'avoir spécifié le pool d'autorité de certification au bon format : projects/PROJECT_ID/locations/REGION/caPools/CA_POOL_ID
|
Vous recevez le message d'erreur suivant : INVALID ARGUMENT: The instance's server CA pool must be in the same region as the instance.
|
Assurez-vous que le pool d'autorités de certification se trouve dans la même région que l'instance Cloud SQL que vous souhaitez créer. |