Vous pouvez chiffrer de manière sécurisée toutes les données qui transitent entre vos applications clientes et Memorystore pour Redis Cluster. Il s'agit du chiffrement en transit. En utilisant le chiffrement en transit, tout le trafic Redis est chiffré à l'aide du protocole TLS (Transport Layer Security). Cela permet de garantir que toutes les données qui transitent entre vos applications et Memorystore pour Redis Cluster restent confidentielles et intactes.
Lorsque le chiffrement en transit est activé, les clients Redis communiquent exclusivement via une connexion sécurisée. Les clients Redis qui ne sont pas configurés pour TLS sont bloqués. Si vous choisissez d'utiliser le chiffrement en transit, il vous incombe de vous assurer que votre client Redis peut utiliser le protocole TLS.
Les clusters qui utilisent le chiffrement en transit disposent d'autorités de certification. Vous utilisez les autorités de certification pour authentifier les certificats des machines de vos clusters.
Vous pouvez utiliser un mode CA géré par le client. Vous pouvez utiliser des CA gérées par le client pour vos clusters dans Memorystore for Redis Cluster. Si vous devez gérer vos propres autorités de certification pour des raisons de conformité, vous pouvez utiliser ce mode d'autorité de certification. Pour utiliser ce mode, vous devez configurer votre propre pool d'autorités de certification (CA) hébergé sur Certificate Authority Service.
Avant de pouvoir configurer un cluster pour qu'il utilise des autorités de certification gérées par le client, vous devez créer un pool d'autorités de certification dans la même région que votre cluster 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 relier à une autorité de certification racine externe.
Lorsque vous créez votre cluster, vous spécifiez le pool d'autorités de certification. Dans le cadre de cette configuration, le compte de service Memorystore pour Redis Cluster spécifique au projet est autorisé à utiliser le pool d'autorités de certification. Le compte de service demande une autorité de certification au pool, et Memorystore pour Redis Cluster utilise cette autorité de certification pour signer le certificat de serveur du cluster.
Avant de commencer
Avant d'utiliser le mode CA géré par le client, assurez-vous de remplir les conditions suivantes.
Rôles requis
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.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis. Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Workflow pour utiliser une autorité de certification gérée par le client
Pour utiliser une autorité de certification gérée par le client, le workflow est le suivant :
- Créez un pool d'autorités de certification. Avant de pouvoir configurer un cluster pour qu'il utilise une CA gérée par le client, vous devez créer un pool de CA dans le service CA. Ce pool doit se trouver dans la même région que votre cluster.
- Créez une autorité de certification dans le pool d'autorités de certification. Après avoir créé le pool d'autorités de certification, vous devez utiliser le service CA pour créer au moins une autorité de certification dans le pool.
- Déléguez l'autorisation au compte de service Memorystore for Redis Cluster pour émettre des certificats de serveur avec des autorités de certification à partir du pool d'autorités de certification que vous créez.
- Créez un cluster pour utiliser l'autorité de certification gérée par le client.
Créer un pool d'autorités de certification
Vous pouvez créer un pool d'autorités de certification dans le service d'autorité de certification, dans le même projet que celui dans lequel vous prévoyez de créer vos clusters dans Memorystore pour Redis Cluster, ou vous pouvez créer le pool d'autorités de certification dans un autre projet. Toutefois, si vous créez le pool d'AC dans un autre projet, VPC Service Controls peut vous empêcher de créer des clusters, en fonction des règles de votre organisation. Pour résoudre le problème, assurez-vous que le projet qui héberge le pool d'autorités de certification et l'autorité de certification, ainsi que le projet qui héberge Memorystore pour Redis Cluster appartiennent au même périmètre de service. Pour en savoir plus, consultez Périmètres de service : détails et configuration 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 où vous prévoyez de créer votre cluster. Pour obtenir la liste des régions compatibles avec Memorystore pour Redis Cluster, consultez Emplacements Memorystore pour Redis Cluster.
- 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 Memorystore pour Redis Cluster pourrait ajouter au SAN.
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.
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 externe.
Accorder au compte de service l'accès au pool d'autorités de certification
Pour vous assurer que votre compte de service Memorystore pour Redis Cluster dispose des autorisations nécessaires pour demander et signer des certificats pour vos clusters, accordez le rôle roles/privateca.certificateRequester au compte de service pour le pool d'autorités de certification que vous avez créé.
Ce compte de service est au format suivant :
service-PROJECT_NUMBER@cloud-redis.iam.gserviceaccount.com. Remplacez PROJECT_NUMBER par le numéro de votre projetGoogle Cloud .
gcloud
Pour accorder au compte de service l'accès au pool d'AC, utilisez la commande gcloud privateca pools add-iam-policy-binding.
gcloud privateca pools add-iam-policy-binding CA_POOL_ID \ --project=PROJECT_ID \ --location=REGION_ID \ --member serviceAccount:SERVICE_ACCOUNT_NAME \ --role=roles/privateca.certificateRequester
Effectuez les remplacements suivants :
- CA_POOL_ID : ID du pool d'autorités de certification que vous avez créé.
- PROJECT_ID : ID du Google Cloud projet dans lequel vous souhaitez créer vos clusters.
- REGION_ID : région où se trouve le pool d'autorités de certification.
- SERVICE_ACCOUNT_NAME : nom du compte de service Memorystore for Redis Cluster. Le numéro de projet de ce compte de service est le même que celui associé à PROJECT_ID.
Créer un cluster utilisant une CA gérée par le client
Console
Suivez la procédure Créer des instances.
gcloud
Pour créer un cluster qui utilise une autorité de certification gérée par le client, utilisez la commande gcloud redis clusters create.
gcloud redis clusters create CLUSTER_ID \ --region=REGION_ID \ --network=NETWORK \ --replica-count=REPLICA_COUNT \ --node-type=NODE_TYPE \ --shard-count=SHARD_COUNT \ --transit-encryption-mode=server-authentication \ --server-ca-mode=customer-managed-cas-ca \ --server-ca-pool="projects/CA_POOL_PROJECT_ID/locations/REGION_ID/caPools/CA_POOL_ID"
Effectuez les remplacements suivants :
CLUSTER_ID : ID du cluster que vous créez. L'ID de cluster doit comporter entre 1 et 63 caractères, et n'utiliser que des lettres minuscules, des chiffres ou des traits d'union. Il doit commencer par une lettre minuscule et se terminer par une lettre minuscule ou un chiffre.
REGION_ID : région dans laquelle vous souhaitez placer le cluster. Vous devez créer votre cluster dans la même région que le pool d'autorités de certification que vous avez créé.
NETWORK : réseau que vous utilisez pour créer le cluster. Il doit respecter le format suivant :
projects/NETWORK_PROJECT_ID/global/networks/NETWORK_ID. L'ID de réseau que vous utilisez doit correspondre à celui utilisé par la règle de connexion de service. Sinon, vous ne pourrez pas créer le cluster.REPLICA_COUNT : nombre de réplicas (par segment). Les valeurs acceptées sont
0-5.NODE_TYPE : type de nœud. Les valeurs acceptées sont les suivantes :
redis-shared-core-nanoredis-standard-smallredis-highmem-mediumredis-highmem-xlarge
SHARD_COUNT : nombre de partitions dans le cluster. Le nombre de segments détermine la capacité de mémoire totale pour stocker les données du cluster. Pour en savoir plus sur les spécifications des clusters, consultez Spécifications des clusters et des nœuds.
CA_POOL_PROJECT_ID : ID du pool d'autorités de certification que vous avez créé.
REGION_ID : région où se trouve le pool d'autorités de certification. Le cluster que vous créez et le pool d'autorités de certification doivent se trouver dans la même région.
CA_POOL_ID : ID du pool d'autorités de certification que vous avez créé.
Le paramètre server-ca-mode représente le mode de l'autorité de certification pour le cluster. Pour une CA gérée par le client, customer-managed-cas-ca est la valeur du paramètre.
Si vous n'utilisez pas ce paramètre, le mode AC par défaut est "par instance".
Exemple :
gcloud redis clusters create my-cluster \ --region=us-central1 \ --network=projects/my-network-project/global/networks/default \ --replica-count=1 \ --node-type=redis-highmem-medium \ --shard-count=3 \ --transit-encryption-mode=server-authentication \ --server-ca-mode=customer-managed-cas-ca \ --server-ca-pool="projects/my-CA-pool-project/locations/us-central1/caPools/my-CA-pool"
Effectuer la rotation des certificats de serveur du cluster
En plus de la rotation hebdomadaire des certificats côté serveur effectuée par Memorystore for Redis Cluster, vous pouvez alterner les certificats à la demande.
gcloud
Pour faire tourner les certificats de serveur pour toutes les machines d'un cluster, utilisez la commande gcloud redis clusters update.
gcloud redis clusters update CLUSTER_ID \ --region=REGION_ID \ --rotate-server-certificate
Effectuez les remplacements suivants :
- CLUSTER_ID : ID du cluster contenant les machines pour lesquelles vous souhaitez alterner les certificats de serveur
- REGION_ID : région où se trouve le cluster.
Exemple :
gcloud redis clusters update my-cluster \ --region=us-central1 \ --rotate-server-certificate
Limites
Les limites suivantes s'appliquent lorsque vous utilisez des CA gérées par le client avec Memorystore pour Redis Cluster :
- Une fois que vous avez configuré une CA gérée par le client pour un cluster, vous ne pouvez plus modifier la configuration. Par exemple, vous ne pouvez pas modifier l'ID du pool d'AC pour le cluster.
- Ne supprimez pas le pool d'AC géré par le client ni ne révoquez les autorisations du compte de service associées à l'AC. Si vous le faites, les certificats de serveur ne pourront pas être renouvelés et expireront. Par conséquent, vos applications clientes ne pourront pas se connecter au cluster.
Résoudre les problèmes
Cette section liste les messages d'erreur que vous pouvez recevoir lorsque vous utilisez des CA gérées par le client et inclut des conseils pour résoudre ces messages.
| Message d'erreur | Cause | Résoudre les problèmes |
|---|---|---|
FAILED_PRECONDITION: GetClusterCertificateAuthority not
supported for customer-managed CAs |
Si vous utilisez une autorité de certification gérée par le client, vous ne pouvez pas utiliser Memorystore pour Redis Cluster pour récupérer les certificats de l'autorité de certification. | Pour obtenir les certificats CA d'une CA gérée par le client, vous devez utiliser le service CA. |
Server certificate rotation can only be triggered for
customer-managed CAs. |
Vous tentez de faire tourner les certificats de serveur pour un cluster, mais le mode CA du cluster est "par instance" ou "partagé". | Vous ne pouvez pas faire pivoter les certificats de serveur, sauf si le mode que vous utilisez pour un cluster est géré par le client. |
Invalid format for server CA pool: {CA pool resource}. Expected
projects/{project}/locations/{location}/caPools/{caPool}. |
Le pool d'autorités de certification que vous utilisez pour créer le cluster présente un format non valide. | Pour le pool d'autorités de certification, utilisez le format suivant : projects/CA_POOL_PROJECT_ID/locations/REGION_ID/ caPools/CA_POOL_ID |
The instance/cluster's server CA pool must be in the same region
as the instance/cluster. CA Pool region: {CA pool region}, Instance/cluster
region: {cluster region}. |
Vous essayez de créer un cluster situé dans une région différente de celle du pool d'autorités de certification. | Assurez-vous que le cluster que vous créez et votre pool d'autorités de certification se trouvent dans la même région. |
Request is prohibited by organization's policy for CA Pool
{CA pool ID}. |
Le projet Google Cloud qui héberge le pool d'autorité de certification et le projet qui héberge le cluster ne se trouvent pas dans le même périmètre de service. | Configurez VPC Service Controls pour que les projets appartiennent au même périmètre de service. |
Permission privateca.certificates.create denied on {CA pool ID}.
Make sure that you granted the roles/privateca.certificateRequester role
to the service account {P4SA email}. |
Le compte de service Memorystore pour Redis Cluster ne dispose pas du rôle roles/privateca.certificateRequester pour le pool d'autorités de certification. Par conséquent, Memorystore pour Redis Cluster ne peut pas générer de certificats de serveur. |
Attribuez le rôle roles/privateca.certificateRequester au compte de service. Pour en savoir plus, consultez Accorder au compte de service l'accès au pool d'autorités de certification. |
Resource {CA pool ID} not found. |
Memorystore for Redis Cluster ne trouve pas le pool d'autorité de certification que vous avez spécifié lorsque vous avez tenté de créer le cluster. | Vérifiez l'ID, l'emplacement et le nom du pool d'autorités de certification. |
There are no enabled CAs in the CaPool {CA pool ID}. Please
ensure that there is at least one enabled Certificate Authority to issue a
certificate. |
Aucune autorité de certification n'est activée dans le pool d'autorités de certification. Memorystore pour Redis Cluster ne peut pas générer de certificats de serveur pour le cluster. | Assurez-vous de créer au moins une autorité de certification dans le pool d'autorités de certification et que l'autorité de certification est à l'état Activé. |
Quota exhausted for CA Service. Check quotas
for the project hosting the CA Pool: {CA pool ID}. |
Vous avez dépassé le quota du service d'autorité de certification dans le projet Google Cloud qui héberge le pool d'autorités de certification. Memorystore for Redis Cluster ne peut pas effectuer les opérations qui nécessitent ce service. | Vérifiez le quota du service CA dans votre projet. Pour en savoir plus, consultez Quotas et limites. |
server_ca_pool must be provided when server_ca_mode is
SERVER_CA_MODE_CUSTOMER_MANAGED_CAS_CA. |
Vous essayez de créer un cluster qui utilise le mode CA géré par le client. Toutefois, vous n'avez pas fourni d'informations sur le pool de CA. | Spécifiez l'ID du projet, l'emplacement et le nom du pool d'autorités de certification. |
server_ca_pool must not be provided when server_ca_mode is not SERVER_CA_MODE_CUSTOMER_MANAGED_CAS_CA. |
Vous essayez de créer un cluster qui utilise le mode CA par instance ou partagé. Ces modes d'AC n'utilisent pas le paramètre server_ca_pool. |
Vous ne pouvez pas utiliser ce paramètre, sauf si le mode AC est géré par le client. |