Cette page explique comment utiliser l'option d'autorité de certification (CA) gérée par le client comme mode de CA de 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 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 des autorités 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 et 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 lier à une autorité de certification racine externe. Lorsque vous créez votre instance, vous spécifiez le pool d'autorités de certification. Votre requête 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 autorité de certification dans le pool, et Cloud SQL utilise cette autorité de certification pour signer le certificat de serveur de l'instance.
Pour le mode autorité de certification 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 la section 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 le service CA.
- Créez une instance Cloud SQL qui utilise l'autorité de certification. Lorsque vous créez votre instance, vous délégez l'autorisation au compte de service 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 de certification 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 via 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 Gestionnaire 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 via 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 de signature des 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és de certification dans le même projet que celui dans lequel vous prévoyez de créer vos instances Cloud SQL, ou dans un autre projet. Toutefois, si vous créez le pool d'autorités de certification dans un autre projet, VPC Service Controls peut vous empêcher de créer des instances Cloud SQL, en fonction des règles de votre organisation. Pour résoudre le problème, assurez-vous que le projet qui héberge le pool de certificats 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 les pages 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'autorités de certification, 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 la section Régions.
- Autorisez les demandes de certificat basées sur la configuration.
- Autorisez les noms DNS dans les noms d'objet de remplacement (SAN). Lorsque vous configurez les contraintes d'identité du pool de certificats 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 peut ajouter au SAN.
- Si vous configurez les contraintes d'identité pour le pool d'autorités de certification, assurez-vous d'autoriser les adresses IP comme format dans le SAN.
Fournir au compte de service un 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 Demandeur de certificat de service d'autorité de certification 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 une autorité de certification 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 de 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 et n'importe quel algorithme de clé. Cloud SQL génère ses certificats de serveur à l'aide de clés de courbe elliptique EC P-256 (SHA 256), mais vos clés cryptographiques d'autorité de certification 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 de certification autorité de certification gérée par le client pendant la phase bêta.
Exécutez plutôt la commande gcloud beta sql instances create
.
gcloud
gcloud beta sql instances create "INSTANCE_NAME" \ --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.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 identique ou différent de celui dans lequel vous souhaitez créer votre instance Cloud SQL.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 de certification 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 identique ou différent de celui dans lequel vous souhaitez créer votre instance Cloud SQL.INSTANCE_ID
le nom de l'instance Cloud SQL que vous souhaitez créer.REGION
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 |
---|---|
Le message d'erreur suivant s'affiche: 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.
|
Le message d'erreur suivant s'affiche: 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 de certificats 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 les pages 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'autorités de certification et de votre autorité de certification. Assurez-vous de remplir toutes les conditions requises indiquées dans les sections Créer un pool d'autorités de certification et Créer une autorité de certification dans le pool d'autorités de certification. |
Le message d'erreur suivant s'affiche:
|
Il s'agit de problèmes de quota avec le service d'autorité de certification. Vérifiez le quota du service CA dans votre projet. Vérifiez si vous utilisez des requêtes dans votre pool d'autorités de certification en dehors de Cloud SQL. Pour en savoir plus, consultez la page Quotas et limites. |
Le message d'erreur suivant s'affiche: NOT FOUND: parent resource CA_POOL_ID not found.
|
Vérifiez l'ID du projet, l'emplacement et le nom du pool d'autorités 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. |
Le message d'erreur suivant s'affiche: 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 d'autorités de certification que vous avez spécifié lorsque vous avez créé votre instance Cloud SQL, et que l'autorité de certification est activée. |
Le message d'erreur suivant s'affiche: 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. |
Le message d'erreur suivant s'affiche: INVALID ARGUMENT: Invalid format for server CA pool.
|
Assurez-vous d'avoir spécifié le pool d'autorités de certification au bon format: projects/PROJECT_ID/locations/REGION/caPools/CA_POOL_ID
|
Le message d'erreur suivant s'affiche: 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. |