Proteja seus dados usando uma autoridade de certificação (CA) gerenciada pelo cliente

É possível criptografar todos os dados que se movem entre os aplicativos cliente e a Memorystore para Valkey com segurança. Essa é a criptografia em trânsito. Ao usar a criptografia em trânsito, todo o tráfego do Valkey é criptografado com o protocolo Transport Layer Security (TLS). Isso garante que todos os dados que se movem entre seus aplicativos e o Memorystore para Valkey permaneçam confidenciais e sem adulteração.

Quando a criptografia em trânsito está ativada, os clientes do Valkey se comunicam exclusivamente por uma conexão segura. Os clientes do Valkey que não estiverem configurados para TLS serão bloqueados. Se você optar por usar a criptografia em trânsito, será responsável por garantir que o cliente do Valkey possa usar o protocolo TLS.

As instâncias que usam criptografia em trânsito têm autoridades de certificação (CAs). Você usa as ACs para autenticar os certificados das máquinas nas suas instâncias.

Um modo de AC que você pode usar é uma AC gerenciada pelo cliente. É possível usar CAs gerenciadas pelo cliente nas instâncias do Memorystore for Valkey. Se você precisar gerenciar suas próprias ACs por motivos de compliance, use esse modo. Como parte do uso desse modo, você precisa configurar seu próprio pool de AC hospedado no Certificate Authority Service.

Antes de configurar uma instância para usar CAs gerenciadas pelo cliente, crie um pool de CAs na mesma região da instância e pelo menos uma CA nesse pool usando o serviço de CA. A AC pode ser uma AC raiz ou uma AC subordinada. Você também pode criar uma AC subordinada no serviço de AC e encadeá-la a uma AC raiz externa.

Ao criar a instância, você especifica o pool de ACs. Como parte dessa configuração, a conta de serviço específica do projeto da Memorystore para Valkey tem permissões para usar o pool de ACs. A conta de serviço solicita uma AC do pool, e o Memorystore for Valkey usa essa AC para assinar o certificado do servidor da instância.

Antes de começar

Antes de usar o modo de AC gerenciada pelo cliente, verifique se você atende aos requisitos a seguir.

Funções exigidas

Para receber as permissões necessárias para criar um pool e uma AC, peça ao administrador para conceder a você o papel do IAM de gerente de operações do serviço de AC (roles/privateca.caManager) no serviço de AC.

Também é possível receber as permissões necessárias com papéis personalizados ou outros papéis predefinidos. Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Fluxo de trabalho para usar uma AC gerenciada pelo cliente

Para usar uma AC gerenciada pelo cliente, o fluxo de trabalho é o seguinte:

  1. Criar um pool de CA. Antes de configurar uma instância para usar uma AC gerenciada pelo cliente, crie um pool de ACs no serviço de AC. Esse pool precisa estar na mesma região que sua instância.
  2. Criar uma AC no pool de CAs. Depois de criar o pool de ACs, use o serviço de AC para criar pelo menos uma AC no pool.
  3. Delegue permissão à conta de serviço do Memorystore para Valkey para emitir certificados de servidor com ACs do pool de ACs que você criar.
  4. Crie uma instância para usar a AC gerenciada pelo cliente.

Criar um pool de CA

É possível criar um pool de ACs no serviço de AC no mesmo projeto em que você planeja criar as instâncias do Memorystore para Valkey ou em um projeto diferente. No entanto, se você criar o pool de ACs em um projeto diferente, o VPC Service Controls poderá impedir a criação de instâncias, dependendo das políticas da organização. Para corrigir o problema, verifique se o projeto que hospeda o pool e a AC e o projeto que hospeda o Memorystore for Valkey pertencem ao mesmo perímetro de serviço. Para mais informações, consulte Detalhes e configuração do perímetro de serviço e Gerenciar perímetros de serviço.

Para criar um pool de ACs, siga as instruções em Criar um pool de ACs. É possível aceitar os valores padrão para o pool de ACs com as seguintes configurações obrigatórias:

  • Crie o pool de ACs na mesma região em que você planeja criar a instância. Para conferir uma lista de regiões compatíveis com o Memorystore para Valkey, consulte Locais do Memorystore para Valkey.
  • Permita solicitações de certificados com base em configuração.
  • Permita nomes DNS em nomes alternativos do assunto (SANs). Ao configurar as restrições de identidade do pool de ACs, não defina restrições no formato dos nomes DNS que possam entrar em conflito com o que o Memorystore para Valkey pode adicionar ao SAN.

Criar uma AC no pool de CAs

Crie pelo menos uma AC no pool que você criou.

É possível criar uma AC raiz ou subordinada.

Para criar uma AC raiz, siga as instruções em Criar uma AC raiz. É possível aceitar os valores padrão para a AC, mas crie a AC no estado Ativado.

Ao configurar o tamanho e o algoritmo da chave da CA, você pode selecionar qualquer tamanho e algoritmo de chave.

Se você criar uma CA subordinada, primeiro crie e configure a CA raiz.

Conceder à conta de serviço acesso ao pool de ACs

Para garantir que sua conta de serviço do Memorystore para Valkey tenha permissões para solicitar e assinar certificados para suas instâncias, conceda o papel roles/privateca.certificateRequester à conta de serviço para o pool de ACs que você criou.

Essa conta de serviço tem o seguinte formato:
service-PROJECT_NUMBER@cloud-memorystore.iam.gserviceaccount.com. Substitua PROJECT_NUMBER pelo número do projeto do seu projeto do Google Cloud .

gcloud

Para conceder à conta de serviço acesso ao pool de ACs, use o 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

Faça as seguintes substituições:

  • CA_POOL_ID: o ID do pool de ACs que você criou.
  • PROJECT_ID: o ID do projeto Google Cloud em que você quer criar as instâncias.
  • REGION_ID: a região em que o pool de ACs está localizado.
  • SERVICE_ACCOUNT_NAME: o nome da conta de serviço do Memorystore for Valkey. O número do projeto dessa conta de serviço é o mesmo associado ao PROJECT_ID.

Criar uma instância que usa uma AC gerenciada pelo cliente

Console

Siga as etapas em Criar instâncias.

gcloud

Para criar uma instância que usa uma CA gerenciada pelo cliente, use o comando gcloud memorystore instances create.

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"

Faça as seguintes substituições:

  • INSTANCE_ID: o ID da instância que você está criando. O ID da instância precisa ter de 1 a 63 caracteres e usar apenas letras minúsculas, números ou hifens. Ele precisa começar com uma letra minúscula e terminar com uma letra minúscula ou um número.

  • REGION_ID: a região em que você quer que a instância esteja localizada. É preciso criar a instância na mesma região do pool de ACs criado.

  • PROJECT_ID: o ID do projeto em que você quer criar a instância.

  • NETWORK_ID: o ID da rede que você quer usar para criar a instância.

  • REPLICA_COUNT: o número de réplicas (por fragmento). Os valores aceitos são 0-5.

  • NODE_TYPE: o tipo de nó. Os valores aceitos são:

    • shared-core-nano
    • standard-small
    • highmem-medium
    • highmem-xlarge
  • SHARD_COUNT: o número de fragmentos na instância. A contagem de fragmentos determina a capacidade total de memória para armazenar dados de instâncias. Para mais informações sobre as especificações da instância, consulte Especificação da instância e do nó.

  • ENGINE_VERSION: a versão da instância. Os valores aceitos para esse parâmetro são VALKEY_7_2, VALKEY_8_0 e VALKEY_9_0. Se você não especificar um valor, VALKEY_9_0 será o padrão.

  • MODE: determina se a instância está com o modo de cluster ativado ou desativado. Se esse campo for omitido, a instância vai usar o modo de cluster ativado por padrão. Para mais informações, consulte Ativar e desativar o modo de cluster.

  • CA_POOL_PROJECT_ID: o ID do pool de ACs que você criou.

  • REGION_ID: a região em que o pool de ACs está localizado. A instância que você está criando e o pool de ACs precisam estar na mesma região.

  • CA_POOL_ID: o ID do pool de ACs que você criou.

O parâmetro server-ca-mode representa o modo de CA da instância. Para uma CA gerenciada pelo cliente, customer-managed-cas-ca é o valor do parâmetro. Se você não usar esse parâmetro, o modo de AC padrão será por instância.

Exemplo:

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"

Alternar os certificados do servidor da instância

Além de o Memorystore for Valkey realizar uma rotação semanal de certificados do lado do servidor, é possível fazer a rotação dos certificados sob demanda.

gcloud

Para alternar os certificados do servidor de todas as máquinas em uma instância, use o comando gcloud memorystore instances update.

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

Faça as seguintes substituições:

  • INSTANCE_ID: o ID da instância que contém máquinas para as quais você quer fazer a rotação dos certificados do servidor.
  • REGION_ID: a região em que a instância está localizada.

Exemplo:

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

Limitações

As seguintes limitações se aplicam ao usar CAs gerenciadas pelo cliente com o Memorystore para Valkey:

  • Depois de configurar uma CA gerenciada pelo cliente para uma instância, não é possível modificar a configuração. Por exemplo, não é possível mudar o ID do pool de CA da instância.
  • Não exclua o pool de ACs gerenciado pelo cliente nem revogue as permissões da conta de serviço associadas à AC. Se você fizer isso, os certificados do servidor não poderão ser substituídos e vão expirar. Como resultado, seus aplicativos clientes não poderão se conectar à instância.

Resolver problemas

Esta seção lista as mensagens de erro que você pode receber ao usar CAs gerenciadas pelo cliente e inclui dicas para resolver esses problemas.

Mensagem de erro Causa Resolver problemas
FAILED_PRECONDITION: GetClusterCertificateAuthority not supported for customer-managed CAs Se você usa uma CA gerenciada pelo cliente, não é possível usar o Memorystore for Valkey para recuperar os certificados da CA. Para receber os certificados da AC de uma AC gerenciada pelo cliente, use o serviço de AC.
Server certificate rotation can only be triggered for customer-managed CAs. Você está tentando alternar os certificados do servidor de uma instância, mas o modo de CA da instância é por instância ou compartilhado. Não é possível alternar certificados do servidor, a menos que o modo usado para uma instância seja gerenciado pelo cliente.
Invalid format for server CA pool: {CA pool resource}. Expected projects/{project}/locations/{location}/caPools/{caPool}. O pool de CAs que você está usando para criar a instância tem um formato inválido. Para o pool de ACs, use este 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}. Você está tentando criar uma instância localizada em uma região diferente do pool de ACs. Verifique se a instância que você está criando e o pool de ACs estão na mesma região.
Request is prohibited by organization's policy for CA Pool {CA pool ID}. O projeto Google Cloud que hospeda o pool de ACs e o projeto que hospeda a instância não estão no mesmo perímetro de serviço. Configure o VPC Service Controls para que os projetos pertençam ao mesmo perímetro de serviço.
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}. A conta de serviço do Memorystore for Valkey não tem o papel roles/privateca.certificateRequester para o pool de ACs. Como resultado, o Memorystore for Valkey não pode gerar certificados de servidor. Conceda o papel roles/privateca.certificateRequester à conta de serviço. Para mais informações, consulte Conceder à conta de serviço acesso ao pool de ACs.
Resource {CA pool ID} not found. O Memorystore para Valkey não consegue encontrar o pool de ACs especificado ao tentar criar a instância. Verifique o ID do projeto, a localização e o nome do pool de CAs.
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. Não há CAs ativadas no pool de CAs. O Memorystore for Valkey não pode gerar certificados de servidor para a instância. Crie pelo menos uma AC no pool e verifique se ela está no estado Ativada.
Quota exhausted for CA Service. Check quotas for the project hosting the CA Pool: {CA pool ID}. Você excedeu a cota do serviço de AC no projeto Google Cloud que hospeda o pool de ACs. O Memorystore para Valkey não pode realizar operações que exigem esse serviço. Verifique a cota do serviço de AC no seu projeto. Para mais informações, consulte Cotas e limites.
server_ca_pool must be provided when server_ca_mode is SERVER_CA_MODE_CUSTOMER_MANAGED_CAS_CA. Você está tentando criar uma instância que usa o modo de AC gerenciada pelo cliente. No entanto, você não forneceu informações sobre o pool de CA. Especifique o ID do projeto, o local e o nome do pool de ACs.
server_ca_pool must not be provided when server_ca_mode is not SERVER_CA_MODE_CUSTOMER_MANAGED_CAS_CA. Você está tentando criar uma instância que usa o modo de AC por instância ou compartilhada. Esses modos de CA não usam o parâmetro server_ca_pool. Não é possível usar esse parâmetro, a menos que o modo da AC seja gerenciado pelo cliente.