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 Valkey. Si tratta della crittografia dei dati in transito. Utilizzando la crittografia dei dati in transito, tutto il traffico Valkey viene criptato tramite il protocollo TLS (Transport Layer Security). In questo modo, tutti i dati che si spostano tra le applicazioni e Memorystore for Valkey rimangono riservati e non vengono manomessi.

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

Le istanze che utilizzano la crittografia dei dati in transito hanno autorità di certificazione (CA). Utilizza le CA per autenticare i certificati delle macchine nelle istanze.

Una modalità CA che puoi utilizzare è una CA gestita dal cliente. Puoi utilizzare le CA gestite dal cliente per le istanze Memorystore for Valkey. Se devi gestire le tue CA per motivi di conformità, puoi utilizzare questa modalità CA. Nell'ambito dell'utilizzo di questa modalità, devi configurare il tuo pool di CA ospitato su Certificate Authority Service.

Prima di poter configurare un'istanza per l'utilizzo di CA gestite dal cliente, devi creare un pool di CA nella stessa regione dell'istanza 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 radice esterna.

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

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 l'utilizzo di una CA gestita dal cliente

Per utilizzare una CA gestita dal cliente, segui questo flusso di lavoro:

  1. Crea un pool di CA. Prima di poter configurare un'istanza per l'utilizzo di una CA gestita dal cliente, devi creare un pool di CA nel servizio CA. Questo pool deve trovarsi nella stessa regione dell'istanza.
  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 Valkey per emettere certificati server con le CA del pool di CA che crei.
  4. Crea un'istanza per utilizzare la CA gestita dal cliente.

Crea un pool di CA

Puoi creare un pool di CA nel servizio CA nello stesso progetto in cui prevedi di creare le istanze Memorystore for Valkey 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 istanze, 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 Valkey appartengano allo stesso perimetro di servizio. Per saperne di più, consulta Dettagli e configurazione del perimetro di servizio e Gestisci 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 obbligatorie:

  • Crea il pool di CA nella stessa regione in cui prevedi di creare la tua istanza. Per un elenco delle regioni supportate da Memorystore for Valkey, consulta Località di Memorystore for Valkey.
  • Consenti richieste di certificati basate sulla configurazione.
  • Consenti nomi DNS nei nomi alternativi dell'oggetto (SAN). Quando configuri i vincoli di identità del pool di CA, non impostare restrizioni sul formato dei nomi DNS che potrebbero entrare in conflitto con quelli che Memorystore for Valkey potrebbe aggiungere al SAN.

Crea una CA nel pool di CA

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

Puoi creare una CA radice o una CA subordinata.

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

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

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

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

Per assicurarti che il account di servizio Memorystore for Valkey disponga delle autorizzazioni per richiedere e firmare i certificati per le istanze, 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-memorystore.iam.gserviceaccount.com. Sostituisci PROJECT_NUMBER con il numero di progetto del tuo Google Cloud progetto.

gcloud

Per concedere al account di servizio l'accesso al pool di CA, utilizza il gcloud privateca pools add-iam-policy-binding comando.

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

Esegui le seguenti sostituzioni:

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

Crea un'istanza che utilizza una CA gestita dal cliente

Console

Segui i passaggi descritti in Crea istanze.

gcloud

Per creare un'istanza che utilizza una CA gestita dal cliente, utilizza il gcloud memorystore instances create comando.

gcloud memorystore instances create INSTANCE_ID \
--location=REGION_ID \
--endpoints='[{"connections": [{"pscAutoConnection": {"network": "projects/PROJECT_ID/global/networks/NETWORK_ID", "projectId": "PROJECT_ID"}}]}]' \
--replica-count=REPLICA_COUNT \
--node-type=NODE_TYPE \
--shard-count=SHARD_COUNT \
--engine-version=ENGINE_VERSION \
--mode=MODE \
--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"

Esegui le seguenti sostituzioni:

  • INSTANCE_ID: l'ID dell'istanza che stai creando. L'ID istanza 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 l'istanza. Devi creare l'istanza nella stessa regione del pool di CA che hai creato.

  • PROJECT_ID: l'ID del progetto in cui vuoi creare l' istanza.

  • NETWORK_ID: l'ID della rete che vuoi utilizzare per creare l'istanza.

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

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

    • shared-core-nano
    • standard-small
    • highmem-medium
    • highmem-xlarge
  • SHARD_COUNT: il numero di shard nell'istanza. Il numero di shard determina la capacità di memoria totale per l'archiviazione dei dati dell'istanza. Per saperne di più sulle specifiche dell'istanza, consulta Specifiche di istanza e nodo.

  • ENGINE_VERSION: la versione dell'istanza. I valori accettati per questo parametro sono VALKEY_7_2, VALKEY_8_0 e VALKEY_9_0. Se non specifichi un valore, il valore predefinito è VALKEY_9_0.

  • MODE: determina se l'istanza è in modalità cluster abilitata o modalità cluster disabilitata. Se questo campo viene omesso, l'istanza utilizza per impostazione predefinita la modalità cluster abilitata. Per saperne di più, consulta Abilitare e disabilitare la modalità cluster.

  • 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. L'istanza 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 l'istanza. 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 memorystore instances create my-instance \
--location=us-central1 \
--endpoints='[{"connections": [{"pscAutoConnection": {"network": "projects/my-project/global/networks/my-network", "projectId": "my-project"}}]}] \
--replica-count=1 \
--node-type=highmem-medium \
--shard-count=3 \
--engine-version=VALKEY_9_0 \
--mode=CLUSTER \
--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 del server dell'istanza

Oltre alla rotazione settimanale dei certificati lato server eseguita da Memorystore for Valkey, puoi ruotare i certificati on demand.

gcloud

Per ruotare i certificati del server per tutte le macchine in un'istanza, utilizza il gcloud memorystore instances update comando.

gcloud memorystore instances update INSTANCE_ID \
--location=REGION_ID \
--rotate-server-certificate

Esegui le seguenti sostituzioni:

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

Ad esempio:

gcloud memorystore instances update my-instance \
--location=us-central1 \
--rotate-server-certificate

Limitazioni

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

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

Risoluzione dei problemi

Questa sezione elenca i messaggi di errore che potresti ricevere quando utilizzi le 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 Valkey 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 ruotare i certificati del server per un'istanza, ma la modalità CA dell'istanza è per istanza o condivisa. Non puoi ruotare i certificati del server a meno che la modalità utilizzata per un'istanza 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 l'istanza 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'istanza che si trova in una regione diversa dal pool di CA. Assicurati che l'istanza 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 Google Cloud progetto che ospita il pool di CA e il progetto che ospita l'istanza 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 Valkey non ha il roles/privateca.certificateRequester ruolo per il pool di CA. Di conseguenza, Memorystore for Valkey non può generare certificati server. Concedi il ruolo roles/privateca.certificateRequester a the account di servizio. Per saperne di più, consulta Concedi al account di servizio l'accesso al pool di CA.
Resource {CA pool ID} not found. Memorystore for Valkey non riesce a trovare il pool di CA che hai specificato quando hai tentato di creare l'istanza. 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 Valkey non può generare certificati server per l'istanza. 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 Google Cloud progetto che ospita il pool di CA. Memorystore for Valkey non può eseguire operazioni che richiedono questo servizio. Controlla la quota per il servizio CA nel tuo progetto. Per saperne di più, 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'istanza 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'istanza che utilizza la modalità CA per istanza o condivisa. Queste modalità CA non utilizzano il server_ca_pool parametro. Non puoi utilizzare questo parametro a meno che la modalità CA non sia gestita dal cliente.