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

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

Quando a criptografia em trânsito está ativada, os clientes do Redis se comunicam exclusivamente por uma conexão segura. Os clientes do Redis 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 Redis possa usar o protocolo TLS.

Os clusters 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 nos clusters.

Um modo de AC que pode ser usado é uma AC gerenciada pelo cliente. É possível usar ACs gerenciadas pelo cliente para clusters no Memorystore para Redis Cluster. 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 um cluster para usar ACs gerenciadas pelo cliente, crie um pool de ACs na mesma região do cluster 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 o cluster, você especifica o pool de ACs. Como parte dessa configuração, a conta de serviço específica do projeto do Memorystore for Redis Cluster tem permissões para usar o pool de ACs. A conta de serviço solicita uma AC do pool, e o Memorystore for Redis Cluster usa essa AC para assinar o certificado do servidor do cluster.

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 um cluster 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 do cluster.
  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. Delegue permissão à conta de serviço do Memorystore for Redis Cluster para emitir certificados de servidor com ACs do pool de ACs que você criar.
  4. Crie um cluster 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 os clusters no Memorystore para Redis Cluster 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 clusters, 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 Redis Cluster 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 seu cluster. Para uma lista de regiões compatíveis com o Memorystore para Redis Cluster, consulte Locais do Memorystore para Redis Cluster.
  • 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 Redis Cluster 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 da AC, mas verifique se você criou 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 for Redis Cluster tenha permissões para solicitar e assinar certificados para seus clusters, conceda o papel roles/privateca.certificateRequester à conta de serviço do pool de ACs que você criou.

Essa conta de serviço tem o seguinte formato:
service-PROJECT_NUMBER@cloud-redis.iam.gserviceaccount.com. Substitua PROJECT_NUMBER pelo número do 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 os clusters.
  • 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 Redis Cluster. O número do projeto dessa conta de serviço é o mesmo que o número do projeto associado ao PROJECT_ID.

Criar um cluster que use uma AC gerenciada pelo cliente

Console

Siga as etapas em Criar instâncias.

gcloud

Para criar um cluster que use uma AC gerenciada pelo cliente, use o gcloud redis clusters create comando.

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"

Faça as seguintes substituições:

  • CLUSTER_ID: o ID do cluster que você está criando. O ID do cluster 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 o cluster esteja localizado. É necessário criar o cluster na mesma região do pool de ACs criado.

  • NETWORK: a rede que você usa para criar o cluster. Ela precisa usar este formato: projects/NETWORK_PROJECT_ID/global/networks/NETWORK_ID. O ID da rede usado precisa corresponder ao ID da rede usado pela política de conexão de serviço. Caso contrário, não será possível criar o cluster.

  • 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:

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

  • 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. O cluster 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 do cluster. 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 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"

Alternar os certificados do servidor do cluster

Além do Memorystore for Redis Cluster 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 um cluster, use o gcloud redis clusters update comando.

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

Faça as seguintes substituições:

  • CLUSTER_ID: o ID do cluster que contém máquinas para as quais você quer alternar os certificados do servidor
  • REGION_ID: a região em que o cluster está localizado

Exemplo:

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

Limitações

As limitações a seguir se aplicam ao usar ACs gerenciadas pelo cliente com o Memorystore for Redis Cluster:

  • Depois de configurar uma AC gerenciada pelo cliente para um cluster, não é possível modificar a configuração. Por exemplo, não é possível mudar o ID do pool de ACs do cluster.
  • 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 ao cluster.

Resolver problemas

Esta seção lista as mensagens de erro que podem ser recebidas 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 Redis Cluster 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 um cluster, mas o modo de AC do cluster é por instância ou compartilhado. Não é possível alternar os certificados do servidor, a menos que o modo usado para um cluster 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 o cluster 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 um cluster localizado em uma região diferente do pool de ACs. Verifique se o cluster 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 o cluster 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 Redis Cluster não tem o roles/privateca.certificateRequester papel para o pool de ACs. Como resultado, o Memorystore for Redis Cluster 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 for Redis Cluster não consegue encontrar o pool de ACs especificado ao tentar criar o cluster. Verifique o ID do projeto, o local 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 for Redis Cluster não pode gerar certificados de servidor para o cluster. 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 Redis Cluster 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 um cluster 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, 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 um cluster 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.