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 o 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 pelo protocolo Transport Layer Security (TLS). Isso garante que todos os dados que se movem entre os 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 estão configurados para TLS sã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 a criptografia em trânsito têm autoridades de certificação (ACs). Você usa as ACs para autenticar os certificados das máquinas nas instâncias.

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

Antes de configurar uma instância para usar ACs gerenciadas pelo cliente, crie um pool de ACs na mesma região da instância e pelo menos uma AC nesse pool usando o serviço de AC. A AC pode ser uma AC raiz ou uma AC subordinada. Também é possível 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 do Memorystore for Valkey específica do projeto 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 conseguir 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 ACs. 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 da instância.
  2. Criar uma AC no pool de ACs. Depois de criar o pool de ACs, use o serviço de AC para criar pelo menos uma AC no pool.
  3. Delegar permissão à conta de serviço do Memorystore para Valkey para emitir certificados de servidor com ACs do pool de ACs criado.
  4. Criar uma instância para usar a AC gerenciada pelo cliente.

Criar um pool de ACs

É 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 sua instância. Para conferir uma lista de regiões com suporte do 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 for Valkey pode adicionar ao SAN.

Criar uma AC no pool de ACs

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 AC, você pode selecionar qualquer tamanho e algoritmo de chave.

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

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

Para garantir que a 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 seu Google Cloud projeto.

gcloud

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

Faça as seguintes substituições:

  • CA_POOL_ID: o ID do pool de ACs que você criou.
  • PROJECT_ID: o ID do Google Cloud projeto 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 para Valkey. O número do projeto dessa conta de serviço é o mesmo que o número do projeto 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 AC gerenciada pelo cliente, use o 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"

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 da instância. 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 valor padrão.

    VALKEY_9_0
  • MODE: determine if the instance is Cluster Mode Enabled or Cluster Mode Disabled. Se esse campo for omitido, a instância será definida como o modo de cluster ativado. 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 AC da instância. Para uma AC 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 para Valkey realizar uma rotação semanal de certificados do lado do servidor, é possível alternar os certificados sob demanda.

gcloud

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

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 alternar os 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 limitações a seguir se aplicam ao usar ACs gerenciadas pelo cliente com o Memorystore para Valkey:

  • Depois de configurar uma AC 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 ACs 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 alternados e vão expirar. Como resultado, os aplicativos cliente não poderão se conectar à instância.

Resolver problemas

Esta seção lista as mensagens de erro que podem ser exibidas ao usar ACs gerenciadas pelo cliente e inclui dicas para solucionar esses problemas.

Mensagem de erro Causa Resolver problemas
FAILED_PRECONDITION: GetClusterCertificateAuthority not supported for customer-managed CAs Se você usar uma AC gerenciada pelo cliente, não será possível usar Memorystore para Valkey para recuperar os certificados de AC. Para receber os certificados de 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 AC da instância é por instância ou compartilhado. Não é possível alternar os 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 ACs 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 Google Cloud projeto 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 para Valkey não tem o roles/privateca.certificateRequester papel para o pool de ACs. Como resultado, o Memorystore para Valkey não pode gerar certificados de servidor. Conceda o papel roles/privateca.certificateRequester a a 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 ACs.
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á ACs ativadas no pool de ACs. O Memorystore para Valkey não pode gerar certificados de servidor para a instância. Verifique se você criou pelo menos uma AC no pool de ACs e se a AC está no estado Ativado.
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 Google Cloud projeto 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 ACs. Especifique o ID do projeto, a localização 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 compartilhado. Esses modos de AC não usam o server_ca_pool parâmetro. Não é possível usar esse parâmetro, a menos que o modo de AC seja gerenciado pelo cliente.