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 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 em repouso do cluster. 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 criptografada 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 onde 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, você pode girar uma chave criando uma nova versão e definindo-a como primária.

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 para depurar problemas com a disponibilidade de publicação ou entrega.

Os IDs de chave do Cloud KMS são anexados aos registros de auditoria dos recursos de cluster do Serviço Gerenciado para Apache Kafka. O Serviço gerenciado para Apache Kafka não inclui outras informações relacionadas 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 associada 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 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 vai estar disponível em até 12 horas, e a entrega de mensagens será retomada em até 2 horas.

Embora interrupções intermitentes do Cloud KMS de menos de um minuto não interrompam significativamente a publicação e a entrega, a indisponibilidade prolongada do Cloud KMS tem o mesmo efeito que a revogação de chaves.

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 segmento de tópico criptografados com a versão original, o que pode impossibilitar o consumo de mensagens desses arquivos. Talvez não seja possível usar dados mais antigos.

  • Se você desativar a versão principal de uma chave, os brokers 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. Um reinício pode ser acionado por você 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 a chave primária e as versões de chave não primárias.

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