Este documento foi traduzido usando tecnologia de tradução automática de máquina. Sempre trabalhamos para apresentar traduções precisas, mas não oferecemos nenhuma garantia em relação à integridade, precisão ou confiabilidade do conteúdo traduzido. Em caso de qualquer discrepância, a versão original em inglês prevalecerá e constituirá o texto official.

k3s secrets-encrypt

K3s suporta a habilitação da criptografia de segredos em repouso. Para mais informações, veja Criptografia de Segredos.

Ferramenta de Criptografia de Segredos

Gatilho de Versão

Disponível a partir de v1.21.8+k3s1

K3s contém uma ferramenta CLI secrets-encrypt, que permite controle automático sobre o seguinte:

  • Desabilitar/Habilitar criptografia de segredos

  • Adicionar novas chaves de criptografia de segredos

  • Rotacionar e deletar chaves de criptografia de segredos

  • Recriptografar segredos

Não seguir o procedimento adequado para rotacionar chaves de criptografia de segredos pode deixar seu cluster permanentemente corrompido. Prossiga com cautela.

Rotação de Chaves de Criptografia de Segredos

Gatilho de Versão

Disponível a partir das versões de setembro de 2024: v1.30.5+k3s1, v1.31.1+k3s1.

  • Servidor Único

  • Alta Disponibilidade

Para rotacionar chaves de criptografia de segredos em um cluster de servidor único:

  1. Inicie o servidor K3s com a flag --secrets-encryption

    Iniciar o K3s sem criptografia e habilitá-la posteriormente não é atualmente suportado.

  2. Rotacionar chaves de criptografia de segredos

    k3s secrets-encrypt rotate-keys
  3. Aguarde a recriptografia terminar. Observe os logs do servidor ou aguarde por:

    $ k3s secrets-encrypt status
    Encryption Status: Enabled
    Current Rotation Stage: reencrypt_finished

Para rotacionar chaves de criptografia de segredos em configurações de alta disponibilidade:

  1. Inicie os três servidores K3s com a flag --secrets-encryption. Para brevidade, os servidores serão referidos como S1, S2, S3.

    Iniciar o K3s sem criptografia e habilitá-la posteriormente não é atualmente suportado.

  2. Rotacionar chaves de criptografia de segredos no S1

    k3s secrets-encrypt rotate-keys
  3. Aguarde a recriptografar terminar. Observe os logs do servidor ou aguarde por:

    $ k3s secrets-encrypt status
    Encryption Status: Enabled
    Current Rotation Stage: reencrypt_finished

    O K3s recriptografará ~5 segredos por segundo. Clusters com um grande número de segredos podem levar vários minutos para recriptografar. Você pode acompanhar o progresso nos logs do servidor.

  4. Reinicie o K3s no S1 com os mesmos argumentos. Se estiver executando o K3s como um serviço:

    # If using systemd
    systemctl restart k3s
    # If using openrc
    rc-service k3s restart
  5. Uma vez que o S1 esteja ativo, reinicie o K3s no S2 e S3

Rotação de Chaves de Criptografia Legadas

Novo Procedimento

Se estiver usando versões do K3s v1.30+, recomendamos usar a Rotação de Chaves de Criptografia de Segredos em vez disso.

  • Servidor Único

  • Alta Disponibilidade

Para rotacionar chaves de criptografia de segredos em um cluster de servidor único:

  1. Inicie o servidor K3s com a flag --secrets-encryption

    Iniciar o K3s sem criptografia e habilitá-la posteriormente não é atualmente suportado.

  2. Preparar

    k3s secrets-encrypt prepare
  3. Matar e reiniciar o servidor K3s com os mesmos argumentos. Se estiver executando o K3s como um serviço:

    # If using systemd
    systemctl restart k3s
    # If using openrc
    rc-service k3s restart
  4. Rotacionar

    k3s secrets-encrypt rotate
  5. Matar e reiniciar o servidor K3s com os mesmos argumentos

  6. Recriptografar

    O K3s recriptografará ~5 segredos por segundo.
    Clusters com um grande número de segredos podem levar vários minutos para recriptografar.

    k3s secrets-encrypt reencrypt

Os passos são os mesmos para clusters de DB embutido e DB externo.

Para rotacionar chaves de criptografia de segredos em configurações de alta disponibilidade:

  1. Inicie os três servidores K3s com a flag --secrets-encryption. Para brevidade, os servidores serão referidos como S1, S2, S3.

    • Iniciar o K3s sem criptografia e habilitá-la posteriormente atualmente não é suportado.

    • Embora não seja obrigatório, é recomendado que você escolha um nó de servidor do qual executar os comandos secrets-encrypt.

  2. Preparar no S1

    k3s secrets-encrypt prepare
  3. Matar e reiniciar o S1 com os mesmos argumentos. Se estiver executando o K3s como um serviço:

    # If using systemd
    systemctl restart k3s
    # If using openrc
    rc-service k3s restart
  4. Uma vez que o S1 esteja ativo, mate e reinicie o S2 e S3

  5. Rotacionar no S1

    k3s secrets-encrypt rotate
  6. Matar e reiniciar o S1 com os mesmos argumentos

  7. Uma vez que o S1 esteja ativo, mate e reinicie o S2 e S3

  8. Recriptografar no S1

    O K3s recriptografará ~5 segredos por segundo.
    Clusters com um grande número de segredos podem levar vários minutos para recriptografar.

    k3s secrets-encrypt reencrypt
  9. Matar e reiniciar o S1 com os mesmos argumentos

  10. Uma vez que o S1 esteja ativo, mate e reinicie o S2 e S3

Desativar/Reativar a Criptografia de Segredos

  • Servidor Único

  • Alta Disponibilidade

Após iniciar um servidor com a flag --secrets-encryption, a criptografia de segredos pode ser desativada.

Para desativar a criptografia de segredos em um cluster de nó único:

  1. Desabilitar

    k3s secrets-encrypt disable
  2. Finalizar e reiniciar o servidor K3s com os mesmos argumentos. Se estiver executando o K3s como um serviço:

    # If using systemd
    systemctl restart k3s
    # If using openrc
    rc-service k3s restart
  3. Recriptografar com flags

    k3s secrets-encrypt reencrypt --force --skip

Para reativar a criptografia de segredos em um cluster de nó único:

  1. Ativar

    k3s secrets-encrypt enable
  2. Matar e reiniciar o servidor K3s com os mesmos argumentos

  3. Recriptografar com flags

    k3s secrets-encrypt reencrypt --force --skip

Após iniciar um cluster de alta disponibilidade com as flags --secrets-encryption, a criptografia de segredos pode ser desativada.

Embora não seja obrigatório, é recomendado que você escolha um nó de servidor do qual executar os comandos secrets-encrypt.

Para brevidade, os três servidores usados neste guia serão referidos como S1, S2, S3.

Para desativar a criptografia de segredos em um cluster de alta disponibilidade:

  1. Desativar no S1

    k3s secrets-encrypt disable
  2. Matar e reiniciar o S1 com os mesmos argumentos. Se estiver executando o K3s como um serviço:

    # If using systemd
    systemctl restart k3s
    # If using openrc
    rc-service k3s restart
  3. Uma vez que o S1 esteja ativo, mate e reinicie o S2 e S3

  4. Recriptografar com flags no S1

    k3s secrets-encrypt reencrypt --force --skip

Para reativar a criptografia de segredos em um cluster de alta disponibilidade:

  1. Habilitar no S1

    k3s secrets-encrypt enable
  2. Matar e reiniciar o S1 com os mesmos argumentos

  3. Uma vez que o S1 esteja ativo, mate e reinicie o S2 e S3

  4. Recriptografar com flags no S1

    k3s secrets-encrypt reencrypt --force --skip

Status da Criptografia de Segredos

A ferramenta secrets-encrypt inclui um comando status que exibe informações sobre o status atual da criptografia de segredos no nó.

Um exemplo do comando em um nó de servidor único:

$ k3s secrets-encrypt status
Encryption Status: Enabled
Current Rotation Stage: start
Server Encryption Hashes: All hashes match

Active  Key Type  Name
------  --------  ----
 *      AES-CBC   aescbckey

Outro exemplo em cluster HA, após a rotação das chaves, mas antes de reiniciar os servidores:

$ k3s secrets-encrypt status
Encryption Status: Enabled
Current Rotation Stage: rotate
Server Encryption Hashes: hash does not match between node-1 and node-2

Active  Key Type  Name
------  --------  ----
 *      AES-CBC   aescbckey-2021-12-10T22:54:38Z
        AES-CBC   aescbckey

Os detalhes de cada seção são os seguintes:

  • Estado de Criptografia: Exibido se a criptografia de segredos está desativada ou ativada no nó.

  • Estágio Atual de Rotação: Indica o estágio atual de rotação no nó.
    Os estágios são: start, prepare, rotate, reencrypt_request, reencrypt_active, reencrypt_finished

  • Hashes de Criptografia do Servidor: Útil para clusters HA, isso indica se todos os servidores estão no mesmo estágio com seus arquivos locais. Isso pode ser usado para identificar se é necessário reiniciar os servidores antes de prosseguir para o próximo estágio. No exemplo HA acima, o nó-1 e o nó-2 têm hashes diferentes, indicando que atualmente não possuem a mesma configuração de criptografia. Reiniciar os servidores sincronizará sua configuração.

  • Tabela de Chaves: Resume informações sobre as chaves de criptografia de segredos encontradas no nó.

    • Ativo: O "*" indica quais, se houver, as chaves estão atualmente sendo usadas para a criptografia de segredos. Uma chave ativa é usada pelo Kubernetes para criptografar quaisquer novos segredos.

    • Tipo de Chave: Todas as chaves que usam esta ferramenta são do tipo AES-CBC. Veja mais informações aqui.

    • Nome: Nome da chave de criptografia.