Proteggi i tuoi dati utilizzando un'autorità di certificazione (CA) gestita dal cliente

Puoi criptare in modo sicuro tutti i dati che si spostano tra le applicazioni client e Memorystore for Redis Cluster. Si tratta della crittografia dei dati in transito. Utilizzando la crittografia in transito, tutto il traffico Redis viene criptato tramite il protocollo Transport Layer Security (TLS). In questo modo, tutti i dati che si spostano tra le applicazioni e Memorystore for Redis Cluster rimangono riservati e integri.

Se la crittografia in transito è abilitata, i client Redis comunicano esclusivamente tramite una connessione sicura. I client Redis non configurati per TLS vengono bloccati. Se scegli di utilizzare la crittografia dei dati in transito, è tua responsabilità assicurarti che il client Redis possa utilizzare il protocollo TLS.

I cluster che utilizzano la crittografia in transito hanno autorità di certificazione (CA). Utilizzi le CA per autenticare i certificati delle macchine nei tuoi cluster.

Una modalità CA che puoi utilizzare è una CA gestita dal cliente. Puoi utilizzare CA gestite dal cliente per i tuoi cluster in Memorystore for Redis Cluster. Se devi gestire le tue CA per motivi di conformità, puoi utilizzare questa modalità CA. Per utilizzare questa modalità, devi configurare il tuo pool di CA ospitato su Certificate Authority Service.

Prima di poter configurare un cluster per l'utilizzo di CA gestite dal cliente, devi creare un pool di CA nella stessa regione del cluster e almeno una CA in quel pool utilizzando il servizio CA. La CA può essere una CA radice o una CA subordinata. Puoi anche creare una CA subordinata nel servizio CA e poi concatenarla a una CA principale esterna.

Quando crei il cluster, specifichi il pool di CA. Nell'ambito di questa configurazione, l'account di servizio Memorystore for Redis Cluster specifico del progetto dispone delle autorizzazioni per utilizzare il pool di CA. Il account di servizio richiede una CA dal pool e Memorystore for Redis Cluster utilizza questa CA per firmare il certificato server per il cluster.

Prima di iniziare

Prima di utilizzare la modalità CA gestita dal cliente, assicurati di soddisfare i seguenti requisiti.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per creare un pool di CA e una CA, chiedi all'amministratore di concederti il ruolo IAM CA Service Operation Manager (roles/privateca.caManager) sul servizio CA.

Potresti anche ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti. Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Flusso di lavoro per utilizzare una CA gestita dal cliente

Per utilizzare una CA gestita dal cliente, il flusso di lavoro è il seguente:

  1. Crea un pool di CA. Prima di poter configurare un cluster per utilizzare una CA gestita dal cliente, devi creare un pool di CA nel servizio CA. Questo pool deve trovarsi nella stessa regione del cluster.
  2. Crea una CA nel pool di CA. Dopo aver creato il pool di CA, devi utilizzare il servizio CA per creare almeno una CA nel pool.
  3. Delega l'autorizzazione al service account Memorystore for Redis Cluster per emettere certificati server con CA dal pool di CA che crei.
  4. Crea un cluster per utilizzare la CA gestita dal cliente.

Crea un pool di CA

Puoi creare un pool di CA in CA Service nello stesso progetto in cui prevedi di creare i cluster in Memorystore for Redis Cluster oppure puoi creare il pool di CA in un progetto diverso. Tuttavia, se crei il pool di CA in un progetto diverso, i Controlli di servizio VPC potrebbero impedirti di creare cluster, a seconda delle policy dell'organizzazione. Per risolvere il problema, assicurati che il progetto che ospita il pool di CA e la CA e il progetto che ospita Memorystore for Redis Cluster appartengano allo stesso perimetro di servizio. Per saperne di più, consulta Dettagli e configurazione del perimetro di servizio e Gestire i perimetri di servizio.

Per creare un pool di CA, segui le istruzioni riportate in Crea un pool di CA. Puoi accettare i valori predefiniti per il pool di CA con le seguenti impostazioni di configurazione richieste:

  • Crea il pool di CA nella stessa regione in cui prevedi di creare il cluster. Per un elenco delle regioni supportate da Memorystore for Redis Cluster, consulta Località di Memorystore for Redis Cluster.
  • Consenti richieste di certificati basate sulla configurazione.
  • Consenti nomi DNS nei nomi alternativi del soggetto (SAN). Quando configuri i vincoli di identità del pool di CA, non impostare restrizioni sul formato per i nomi DNS che potrebbero entrare in conflitto con ciò che Memorystore for Redis Cluster potrebbe aggiungere al SAN.

Crea una CA nel pool di CA

Crea almeno una CA nel pool di CA che hai creato.

Puoi creare un'autorità di certificazione principale o un'autorità di certificazione subordinata.

Per creare una CA radice, segui le istruzioni riportate in Creare una CA radice. Puoi accettare i valori predefiniti per la CA, ma assicurati di creare la CA nello stato Attivato.

Quando configuri le dimensioni e l'algoritmo della chiave CA, puoi selezionare qualsiasi dimensione e algoritmo della chiave.

Se crei una CA secondaria, devi prima creare e configurare la CA radice.

Fornisci al account di servizio l'accesso al pool di CA

Per assicurarti che il account di servizio Memorystore for Redis Cluster disponga delle autorizzazioni per richiedere e firmare i certificati per i tuoi cluster, concedi il ruolo roles/privateca.certificateRequester al account di servizio per il pool di CA che hai creato.

Questo account di servizio ha il seguente formato:
service-PROJECT_NUMBER@cloud-redis.iam.gserviceaccount.com. Sostituisci PROJECT_NUMBER con il numero di progetto del tuo progettoGoogle Cloud .

gcloud

Per concedere al account di servizio l'accesso al pool di CA, utilizza il comando 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

Effettua le seguenti sostituzioni:

  • CA_POOL_ID: l'ID del pool di CA che hai creato.
  • PROJECT_ID: l'ID del progetto Google Cloud in cui vuoi creare i cluster.
  • REGION_ID: la regione in cui si trova il pool di CA.
  • SERVICE_ACCOUNT_NAME: il nome del account di servizio Memorystore for Redis Cluster. Il numero di progetto per questo account di servizio è lo stesso del numero di progetto associato a PROJECT_ID.

Crea un cluster che utilizza un'autorità di certificazione gestita dal cliente

Console

Segui i passaggi descritti in Crea istanze.

gcloud

Per creare un cluster che utilizza una CA gestita dal cliente, utilizza il comando 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"

Effettua le seguenti sostituzioni:

  • CLUSTER_ID: l'ID del cluster che stai creando. L'ID cluster deve contenere da 1 a 63 caratteri e utilizzare solo lettere minuscole, numeri o trattini. Deve iniziare con una lettera minuscola e terminare con una lettera minuscola o un numero.

  • REGION_ID: la regione in cui vuoi che si trovi il cluster. Devi creare il cluster nella stessa regione del pool di CA che hai creato.

  • NETWORK: la rete che utilizzi per creare il cluster. Deve utilizzare questo formato: projects/NETWORK_PROJECT_ID/global/networks/NETWORK_ID. L'ID rete che utilizzi deve corrispondere all'ID rete utilizzato dalle norme di connessione del servizio. In caso contrario, non potrai creare il cluster.

  • REPLICA_COUNT: il numero di repliche (per shard). I valori accettati sono 0-5.

  • NODE_TYPE: il tipo di nodo. I valori accettati sono:

    • redis-shared-core-nano
    • redis-standard-small
    • redis-highmem-medium
    • redis-highmem-xlarge
  • SHARD_COUNT: il numero di shard nel cluster. Il conteggio degli shard determina la capacità di memoria totale per l'archiviazione dei dati del cluster. Per ulteriori informazioni sulle specifiche dei cluster, consulta Specifiche di cluster e nodi.

  • CA_POOL_PROJECT_ID: l'ID del pool di CA che hai creato.

  • REGION_ID: la regione in cui si trova il pool di CA. Il cluster che stai creando e il pool di CA devono trovarsi nella stessa regione.

  • CA_POOL_ID: l'ID del pool di CA che hai creato.

Il parametro server-ca-mode rappresenta la modalità CA per il cluster. Per una CA gestita dal cliente, customer-managed-cas-ca è il valore del parametro. Se non utilizzi questo parametro, la modalità CA predefinita è per istanza.

Ad esempio:

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"

Ruota i certificati server del cluster

Oltre alla rotazione settimanale dei certificati lato server di Memorystore for Redis Cluster, puoi ruotare i certificati on demand.

gcloud

Per ruotare i certificati server per tutte le macchine di un cluster, utilizza il comando gcloud redis clusters update.

gcloud redis clusters update CLUSTER_ID \
--region=REGION_ID \
--rotate-server-certificate

Effettua le seguenti sostituzioni:

  • CLUSTER_ID: l'ID del cluster che contiene le macchine per le quali vuoi ruotare i certificati del server
  • REGION_ID: la regione in cui si trova il cluster

Ad esempio:

gcloud redis clusters update my-cluster \
--region=us-central1 \
--rotate-server-certificate

Limitazioni

Quando utilizzi CA gestite dal cliente con Memorystore for Redis Cluster, si applicano le seguenti limitazioni:

  • Dopo aver configurato una CA gestita dal cliente per un cluster, non puoi modificare la configurazione. Ad esempio, non puoi modificare l'ID del pool di CA per il cluster.
  • Non eliminare il pool di CA gestito dal cliente né revocare le autorizzazioni dell'account di servizio associate alla CA. In caso contrario, i certificati del server non possono essere ruotare e scadranno. Di conseguenza, le tue applicazioni client non potranno connettersi al cluster.

Risoluzione dei problemi

Questa sezione elenca i messaggi di errore che potresti ricevere quando utilizzi CA gestite dal cliente e include suggerimenti per la risoluzione dei problemi relativi a questi messaggi.

Messaggio di errore Causa Risoluzione dei problemi
FAILED_PRECONDITION: GetClusterCertificateAuthority not supported for customer-managed CAs Se utilizzi una CA gestita dal cliente, non puoi utilizzare Memorystore for Redis Cluster per recuperare i certificati CA. Per ottenere i certificati CA per una CA gestita dal cliente, devi utilizzare il servizio CA.
Server certificate rotation can only be triggered for customer-managed CAs. Stai tentando di eseguire la rotazione dei certificati server per un cluster, ma la modalità CA del cluster è per istanza o condivisa. Non puoi ruotare i certificati del server a meno che la modalità che utilizzi per un cluster non sia gestita dal cliente.
Invalid format for server CA pool: {CA pool resource}. Expected projects/{project}/locations/{location}/caPools/{caPool}. Il pool di CA che stai utilizzando per creare il cluster ha un formato non valido. Per il pool di CA, utilizza questo formato:
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}. Stai tentando di creare un cluster che si trova in una regione diversa dal pool di CA. Assicurati che il cluster che stai creando e il pool di CA si trovino nella stessa regione.
Request is prohibited by organization's policy for CA Pool {CA pool ID}. Il progetto Google Cloud che ospita il pool di CA e il progetto che ospita il cluster non si trovano nello stesso perimetro di servizio. Configura i Controlli di servizio VPC in modo che i progetti appartengano allo stesso perimetro di servizio.
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}. Il account di servizio Memorystore for Redis Cluster non dispone del ruolo roles/privateca.certificateRequester per il pool di CA. Di conseguenza, Memorystore for Redis Cluster non può generare certificati server. Concedi il ruolo roles/privateca.certificateRequester all'account di servizio. Per saperne di più, consulta Fornire al account di servizio l'accesso al pool di CA.
Resource {CA pool ID} not found. Memorystore for Redis Cluster non riesce a trovare il pool CA specificato quando hai tentato di creare il cluster. Controlla l'ID progetto, la località e il nome del pool di CA.
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. Non sono presenti CA abilitate nel pool di CA. Memorystore for Redis Cluster non può generare certificati server per il cluster. Assicurati di creare almeno una CA nel pool di CA e che la CA sia nello stato Attivata.
Quota exhausted for CA Service. Check quotas for the project hosting the CA Pool: {CA pool ID}. Hai superato la quota per il servizio CA nel progetto Google Cloud che ospita il pool di CA. Memorystore for Redis Cluster non può eseguire operazioni che richiedono questo servizio. Controlla la quota per il servizio CA nel tuo progetto. Per maggiori informazioni, consulta Quote e limiti.
server_ca_pool must be provided when server_ca_mode is SERVER_CA_MODE_CUSTOMER_MANAGED_CAS_CA. Stai tentando di creare un cluster che utilizza la modalità CA gestita dal cliente. Tuttavia, non hai fornito informazioni sul pool di CA. Specifica l'ID progetto, la località e il nome del pool di CA.
server_ca_pool must not be provided when server_ca_mode is not SERVER_CA_MODE_CUSTOMER_MANAGED_CAS_CA. Stai tentando di creare un cluster che utilizza la modalità CA per istanza o condivisa. Queste modalità CA non utilizzano il parametro server_ca_pool. Non puoi utilizzare questo parametro a meno che la modalità CA non sia gestita dal cliente.