Configurar a criptografia de mensagens no Serviço gerenciado para Apache Kafka

Nesta página, descrevemos como configurar chaves de criptografia gerenciadas pelo cliente (CMEK) para um cluster do Serviço Gerenciado do Google Cloud para Apache Kafka.

Visão geral da criptografia de mensagens

Por padrão, o Serviço gerenciado para Apache Kafka criptografa mensagens em repouso com Google-owned and Google-managed encryption keys. Nenhuma outra configuração é necessária.

Se você precisar de mais controle sobre as chaves de criptografia usadas para proteger os dados em repouso do Serviço Gerenciado para Apache Kafka, defina uma CMEK ao criar seu cluster. As CMEKs são chaves de criptografia de sua propriedade. Elas são gerenciadas e armazenadas no Cloud Key Management Service (Cloud KMS). Quando você configura um cluster com uma CMEK, o serviço usa automaticamente essa chave para criptografar todos os dados do cluster em repouso. O uso de uma CMEK pode gerar custos adicionais, dependendo dos seus padrões de uso.

Uma CMEK associada a um cluster do Serviço gerenciado para Apache Kafka é uma chave de criptografia de chaves (KEK). A KEK é usada para criptografar uma chave de criptografia de dados (DEK). A DEK é usada para ler e gravar dados em repouso em discos permanentes conectados a brokers e dados em armazenamento em camadas no Cloud Storage.

Como os recursos do Serviço gerenciado para Apache Kafka são regionais, recomendamos que você crie CMEKs na mesma região do cluster do Kafka.

Papéis e permissões necessárias

A conta de serviço do Managed Kafka precisa ter permissão para criptografar e descriptografar dados usando uma CMEK.

Conceda à conta de serviço o papel de criptografador/descriptografador de chave criptográfica do Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) na chave do Cloud KMS:

gcloud kms keys add-iam-policy-binding KEY \
  --keyring=KEY_RING \
  --location=LOCATION \
  --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-managedkafka.iam.gserviceaccount.com \
  --role=roles/cloudkms.cryptoKeyEncrypterDecrypter

Substitua:

  • KEY: o nome da chave.

  • KEY_RING: o nome do keyring em que a chave está localizada.

  • LOCATION: o local do Cloud KMS para o keyring.

  • PROJECT_NUMBER: o número do projeto do Google Cloud que contém o cluster do Serviço Gerenciado para Apache Kafka.

Para mais informações sobre como conceder papéis em uma chave do Cloud KMS, consulte Conceder papéis em um recurso.

Alternar chaves

Não é possível mudar a chave associada a um cluster. Em vez disso, crie uma nova versão da chave e defina-a como principal.

Para os discos anexados aos brokers, a nova KEK só entra em vigor depois que um broker é reiniciado. É possível forçar uma reinicialização gradual dos brokers atualizando a configuração de capacidade de um cluster. Por exemplo, é possível mudar a quantidade de RAM do cluster.

Todos os novos arquivos de segmento de partição são gravados no armazenamento em camadas usando a nova versão da chave primária. Pode haver um atraso de vários minutos depois que uma nova versão da chave primária é escolhida.

Registros de auditoria

O Cloud KMS produz registros de auditoria quando as chaves são ativadas, desativadas ou usadas pelo Serviço gerenciado para Apache Kafka para criptografar e descriptografar mensagens. Isso é útil na depuração de problemas com a disponibilidade de publicação ou entrega.

Os IDs de chaves do Cloud KMS são anexados a registros de auditoria para recursos de cluster do Serviço Gerenciado para Apache Kafka. O Serviço gerenciado para Apache Kafka não inclui nenhuma outra informação relacionada ao Cloud KMS nos registros de auditoria.

Desativar e reativar a CMEK

Há duas maneiras de desativar a CMEK. Escolha um dos seguintes métodos:

  • Desative a chave do Cloud KMS que você associou ao cluster. Essa abordagem afeta todos os recursos do Cloud associados a essa chave.

  • Revogue o papel de criptografador/descriptografador de CryptoKey do agente de serviço do Serviço Gerenciado para Apache Kafka (service-${PROJECT_NUMBER}@gcp-sa-managedkafka.iam.gserviceaccount.com) usando o Identity and Access Management (IAM). Essa abordagem afeta todos os clusters do serviço gerenciado para Apache Kafka no projeto e as mensagens criptografadas usando a CMEK.

Embora nenhuma das operações cause a revogação instantânea do acesso, as mudanças do IAM geralmente são propagadas mais rapidamente.

Para mais informações, consulte Consistência de recursos do Cloud KMS e Propagação de mudanças no acesso.

Quando o Serviço Gerenciado para Apache Kafka não consegue acessar uma chave do Cloud KMS, a publicação e a entrega de mensagens falham com erros. Para retomar a entrega e a publicação, restaure o acesso à chave do Cloud KMS.

Depois que a chave do Cloud KMS estiver acessível ao Serviço Gerenciado para Apache Kafka, a publicação estará disponível em 12 horas, e a entrega da mensagem será retomada em até 2 horas.

Embora seja improvável que interrupções intermitentes do Cloud KMS de menos de um minuto interrompam significativamente a publicação e a entrega, a indisponibilidade prolongada do Cloud KMS tem o mesmo efeito que a revogação da chave.

Limitações

  • Não é possível mudar a chave associada a um cluster. Em vez disso, você pode fazer a rotação da chave criando novas versões.

  • Se você desativar uma versão de chave não primária, os discos locais vão continuar funcionando sem alterações. Cada broker baixa a nova KEK quando é reiniciado. No entanto, o Cloud Storage não pode acessar arquivos de segmentos de tópicos criptografados com a versão original, o que pode impossibilitar o consumo de mensagens desses arquivos. Talvez não seja possível consumir dados mais antigos.

  • Se você desativar a versão principal de uma chave, os corretores não poderão gravar novos arquivos de segmento no armazenamento em camadas, o que aumenta a utilização do disco local. Além disso, as reinicializações do broker vão falhar. Você pode iniciar uma reinicialização de forma proativa ou por uma atualização iniciada pelo serviço no cluster a qualquer momento.

  • Se você remover o acesso a uma chave do agente de serviço do Serviço gerenciado para Apache Kafka, o comportamento será semelhante ao que acontece se você desativar as versões da chave primária e não primária.

  • Se você excluir uma chave, o cluster será programado para desligamento e não poderá ser recuperado.

  • Não é possível solicitar a recriptografia dos dados armazenados em repouso. A CMEK é usada como uma KEK, mas a recriptografia exige uma mudança nas chaves de criptografia de dados.

A seguir

Apache Kafka® é uma marca registrada da The Apache Software Foundation ou afiliadas nos Estados Unidos e/ou em outros países.