Autoriser via des certificats SSL/TLS

Cette page explique comment utiliser Secure Socket Layer (SSL), désormais Transport Layer Security (TLS), à partir de votre application pour chiffrer les connexions aux instances Cloud SQL.

Présentation

Cloud SQL est compatible avec la connexion à une instance à l'aide du protocole SSL/TLS. Les connexions SSL/TLS fournissent une couche de sécurité en chiffrant les données en transit entre votre client et la base de données de votre instance Cloud SQL. Si vous le souhaitez, votre connexion SSL/TLS peut effectuer une validation de l'identité du serveur en validant le certificat du serveur installé sur l'instance Cloud SQL et une validation de l'identité du client en validant le certificat client installé sur le client.

Certificats du serveur

Lorsque vous créez une instance, Cloud SQL crée et installe automatiquement un certificat de serveur signé par une autorité de certification (CA). Vous pouvez télécharger le certificat de l'autorité de certification sur la machine hôte du client et l'utiliser pour valider l'identité de l'autorité de certification et du serveur Cloud SQL. Vous pouvez éventuellement choisir le type d'autorité de certification que Cloud SQL utilise pour signer le certificat du serveur.

Hiérarchies des autorités de certification (CA)

Cette section décrit les deux types d'autorité de certification de serveur (CA) que vous pouvez choisir pour vos instances Cloud SQL. Deux possibilités s'offrent à vous :

  • Autorité de certification par instance: avec cette option, une autorité de certification interne dédiée à chaque instance Cloud SQL signe le certificat de serveur de cette instance. Cloud SQL crée et gère ces autorités de certification. Pour choisir une autorité de certification par instance, spécifiez GOOGLE_MANAGED_INTERNAL_CA pour le paramètre serverCaMode (API Cloud SQL Admin) ou l'indicateur --server-ca-mode (gcloud CLI) lorsque vous créez l'instance. Si vous ne spécifiez pas le paramètre ou l'indicateur, cette option est la valeur par défaut de l'instance.
  • Autorité de certification partagée: avec cette option, une hiérarchie d'autorités de certification composée d'une autorité de certification racine et d'autorités de certification de serveur subordonnées est utilisée. Les autorités de certification de serveurs subordonnées d'une région signent les certificats de serveur et sont partagées entre les instances de la région. Cloud SQL héberge et gère l'autorité de certification racine et les autorités de certification de serveurs subordonnées sur Certificate Authority Service (CA Service) Google Cloud. Cloud SQL gère également la rotation des autorités de certification racine et des autorités de certification de serveurs subordonnés, et fournit des liens accessibles au public vers les bundles de certificats CA à télécharger. Pour choisir une autorité de certification partagée, spécifiez GOOGLE_MANAGED_CAS_CA pour le paramètre serverCaMode (API Cloud SQL Admin) ou l'indicateur --server-ca-mode (gcloud CLI) lorsque vous créez l'instance.

Une fois que vous avez créé une instance, vous pouvez afficher la hiérarchie de l'autorité de certification configurée pour une instance Cloud SQL à l'aide de la commande gcloud sql instances describe. Pour en savoir plus, consultez la section Afficher les informations sur l'instance.

Le tableau suivant compare les deux options de hiérarchie de l'autorité de certification.

Fonctionnalité Autorité de certification par instance Autorité de certification partagée
Structure de l'autorité de certification Autorité de certification distincte pour chaque instance CA racine et autorités de certification subordonnées partagées entre les instances d'une même région
Attributs cryptographiques Clé RSA 2 048 bits avec algorithme SHA256 Algorithme de signature numérique à courbe elliptique (ECDSA) avec clé 256 bits avec algorithme SHA384
Période de validité de l'autorité de certification 10 ans 25 ans pour les autorités de certification racine et 10 ans pour les autorités de certification subordonnées
Période de validité du certificat du serveur 10 ans 1 an
Rotation de la CA déclenchée par l'utilisateur ? Oui Non. La rotation des autorités de certification est gérée par Cloud SQL.
Rotation du certificat de serveur déclenchée par l'utilisateur ? Oui Oui
Ancre de confiance de l'autorité de certification pour les connexions TLS L'autorité de certification unique par instance est l'ancre de confiance de l'instance correspondante. L'autorité de certification racine et les autorités de certification subordonnées sont les points d'ancrage de confiance pour toutes les instances d'une région donnée.
Validation de l'identité du serveur La validation de l'autorité de certification permet de vérifier l'identité du serveur, car chaque instance dispose d'une autorité de certification unique. La validation du nom d'hôte et de l'autorité de certification est requise pour valider l'identité du serveur, car les autorités de certification du serveur sont partagées entre les instances.
Champ "Autre nom de l'objet (SAN)" dans les certificats de serveur Le champ SAN ne contient le nom d'hôte (nom DNS de l'instance) que pour les instances activées avec Private Service Connect. Le nom d'hôte peut être utilisé pour valider l'identité du serveur. Si vous vous connectez à une instance Cloud SQL en utilisant le nom DNS comme nom d'hôte, vous devez configurer la résolution DNS. Le champ SAN contient le nom d'hôte (nom DNS de l'instance) pour tous les types d'instances. Le nom d'hôte peut être utilisé pour valider l'identité du serveur. Si vous vous connectez à une instance Cloud SQL en utilisant le nom DNS comme nom d'hôte, vous devez configurer la résolution DNS.

autorité de certification par instance hébergée par Cloud SQL

Cette hiérarchie d'autorités de certification correspond à la configuration par défaut du mode autorité de certification de serveur.

Cloud SQL crée une autorité de certification de serveur autosigné pour chaque instance lorsque vous la créez. Pour utiliser ce paramètre, configurez serverCaMode sur GOOGLE_MANAGED_INTERNAL_CA ou laissez le paramètre de configuration non spécifié lorsque vous créez l'instance.

Le schéma suivant montre la hiérarchie des autorités de certification par instance.

Schéma de la hiérarchie des autorités de certification internes par instance.

Autorités de certification partagées hébergées par le service CA

Ce mode d'autorité de certification de serveur se compose d'une autorité de certification racine et d'autorités de certification de serveur subordonnées dans chaque région. Les autorités de certification de serveur subordonnées émettent des certificats de serveur et sont partagées entre les instances de la région. Cloud SQL gère la rotation des autorités de certification de serveur régionales partagées et fournit des liens accessibles au public pour télécharger les bundles de certificats CA.

Vous pouvez configurer une instance pour qu'elle utilise une hiérarchie d'autorité de certification de serveur où les autorités de certification d'émission sont partagées entre les instances de la même région. Pour utiliser ce paramètre, configurez serverCaMode sur GOOGLE_MANAGED_CAS_CA lorsque vous créez l'instance.

Le schéma suivant illustre la hiérarchie des autorités de certification partagées.

Schéma d'une hiérarchie d'autorité de certification partagée

Fonctionnement de la rotation des certificats de serveur

Cloud SQL fournit des moyens de faire pivoter votre certificat de serveur, afin que le nouveau certificat puisse être mis en place de manière transparente avant l'expiration de l'ancien.

La commande de rotation à utiliser dépend de l'utilisation d'un certificat de serveur émis par une autorité de certification par instance ou d'un certificat de serveur émis par l'autorité de certification partagée.

Environ trois mois avant l'expiration du certificat de serveur d'une instance Cloud SQL, les propriétaires de projet reçoivent un e-mail de Cloud SQL leur indiquant que le processus de rotation des certificats a été démarré pour l'instance concernée. L'e-mail indique le nom de l'instance et informe les propriétaires de projet qu'un nouveau certificat de serveur y a été ajouté par Cloud SQL. Le certificat de serveur existant continue à fonctionner normalement. De fait, l'instance dispose lors de cette période de deux certificats de serveur.

Avant l'expiration du certificat actuel, téléchargez le nouveau fichier server-ca.pem contenant les détails du certificat actuel ainsi que ceux du certificat nouvellement créé. Mettez à jour vos clients SQL Server pour qu'ils utilisent le nouveau fichier. Pour cela, copiez le fichier téléchargé vers vos machines hôtes clientes SQL Server afin de remplacer le fichier existant.

Une fois tous vos clients SQL Server mis à jour, envoyez à l'instance Cloud SQL une commande de rotation (pour une autorité de certification par instance) ou une commande de rotation (pour une autorité de certification partagée) pour effectuer la rotation vers le nouveau certificat de serveur. Une fois cette opération effectuée, l'ancien certificat du serveur n'est plus reconnu et seul le nouveau certificat du serveur peut être utilisé.

Expiration du certificat SSL

Par défaut, les instances Cloud SQL utilisent la valeur par défaut GOOGLE_MANAGED_INTERNAL_CA comme serverCaMode. Les certificats SSL ont une période d'expiration de 10 ans. Avant que ces certificats n'expirent, effectuez une rotation de l'autorité de certification.

Pour les instances qui utilisent des autorités de certification partagées (serverCaMode est défini sur GOOGLE_MANAGED_CAS_CA), la période d'expiration des certificats de serveur est d'un an. Avant l'expiration, effectuez la rotation des certificats SSL. La période d'expiration du certificat de l'autorité de certification racine est de 25 ans, et celle du certificat de l'autorité de certification partagée subordonnée est de 10 ans. Cloud SQL gère leur rotation.

Si un client est configuré pour vérifier l'autorité de certification ou le nom d'hôte dans le certificat du serveur, ses connexions aux instances Cloud SQL dont les certificats de serveur sont expirés échoueront. Pour éviter toute interruption des connexions client, effectuez une rotation du certificat de serveur avant son expiration.

Que vous utilisiez l'autorité de certification par instance ou le mode de serveur d'autorité de certification partagée, vous pouvez réinitialiser la configuration SSL de votre instance Cloud SQL à tout moment.

Étape suivante