Criptografia de Segredos
Configuração de Criptografia de Segredos
O RKE2 suporta criptografar segredos em repouso, e fará o seguinte automaticamente:
-
Gerar uma chave AES-CBC.
-
Gerar um arquivo de configuração de criptografia com a chave gerada.
-
Passar a configuração para o APIServer do Kubernetes como encryption-provider-config.
Escolhendo o Provedor de Criptografia
|
Versão Gate
Disponível a partir das versões de abril de 2025: v1.30.12+rke2r1, v1.31.8+rke2r1, v1.32.4+rke2r1, v1.33.0+rke2r1. |
|
Conformidade com FIPS
A conformidade com FIPS 140-3 está disponível apenas com o provedor |
Usando a flag --secrets-encryption-provider, você pode escolher qual provedor de criptografia usar. O padrão é aescbc.
O RKE2 suporta os seguintes provedores de criptografia:
-
aescbc: AES-CBC com preenchimento PKCS#7 -
secretbox: XSalsa20 e Poly1305
Migrando Provedores
Você pode migrar do provedor aescbc para o provedor secretbox seguindo estas etapas:
-
Certifique-se de que o provedor
secretboxé suportado pela sua versão do RKE2. -
Atualize/Adicione a flag
secrets-encryption-providerno seu arquivo de configuração do RKE2 parasecretbox. -
Gire as chaves de criptografia, seguindo a seção [Encryption Key Rotation] abaixo.
Arquivo de Configuração de Criptografia Gerado
Abaixo está um exemplo do arquivo de configuração de criptografia que o RKE2 gera com o provedor padrão aescbc:
#/var/lib/rancher/rke2/server/cred/encryption-config.json
{
"kind": "EncryptionConfiguration",
"apiVersion": "apiserver.config.k8s.io/v1",
"resources": [
{
"resources": [
"secrets"
],
"providers": [
{
"aescbc": {
"keys": [
{
"name": "aescbckey",
"secret": "xxxxxxxxxxxxxxxxxxx"
}
]
}
},
{
"identity": {}
}
]
}
]
}
Ferramenta de Criptografia de Segredos
O RKE2 contém um subcomando secrets-encrypt, que permite que os administradores realizem as seguintes tarefas:
-
Adicionar novas chaves de criptografia de segredos
-
Rotacionar e deletar chaves de criptografia de segredos
-
Recriptografar segredos
|
Não seguir o procedimento adequado ao girar as chaves de criptografia de segredos pode causar perda permanente de dados. Criar um instantâneo antes de girar é recomendado. Prossiga com cautela. |
Rotação de Chaves de Criptografia de Segredos
|
Versão Gate
Disponível a partir das versões de setembro de 2024: v1.29.9+rke2r1, v1.30.5+rke2r1, v1.31.1+rke2r1. |
Para versões mais antigas, veja [Encryption Key Rotation Classic].
-
Servidor Único
-
Alta Disponibilidade
Para rotacionar chaves de criptografia de segredos em um cluster de servidor único:
-
Rotacionar chaves de criptografia de segredos.
rke2 secrets-encrypt rotate-keys -
Aguarde a recriptografar terminar. Observe os logs do servidor ou aguarde por:
$ rke2 secrets-encrypt status Encryption Status: Enabled Current Rotation Stage: reencrypt_finished
Para rotacionar chaves de criptografia de segredos em configurações de alta disponibilidade:
|
Neste exemplo, 3 servidores são usados para um cluster de alta disponibilidade, referidos como S1, S2, S3. É recomendado que você escolha um nó de servidor do qual executar os comandos |
-
Rotacionar chaves de criptografia de segredos no S1.
rke2 secrets-encrypt rotate-keys -
Aguarde a recriptografar terminar. Observe os logs do servidor ou aguarde por:
$ rke2 secrets-encrypt status Encryption Status: Enabled Current Rotation Stage: reencrypt_finished -
Reinicialize sequencialmente o RKE2 no S1, S2, S3.
systemctl restart rke2-server.serviceAguarde o comando systemctl retornar antes de reinicializar o próximo servidor.
Rotação de Chaves de Criptografia Clássica
|
Novo Procedimento
Se estiver usando versões do RKE2 mais novas que v1.30.1+rke2r1, recomendamos usar o [Encryption Key Rotation] em vez disso. |
-
Servidor Único
-
Alta Disponibilidade
Para rotacionar chaves de criptografia de segredos em um cluster de nó único:
-
Preparar:
rke2 secrets-encrypt prepare -
Reinicie o pod
kube-apiserver:# Get the kube-apiserver container ID export CONTAINER_RUNTIME_ENDPOINT="unix:///var/run/k3s/containerd/containerd.sock" crictl ps --name kube-apiserver # Stop the pod crictl stop <CONTAINER_ID> -
Rotacionar:
rke2 secrets-encrypt rotate -
Reinicie o pod
kube-apiservernovamente. -
Recriptografar:
rke2 secrets-encrypt reencrypt
Para rotacionar chaves de criptografia de segredos em configurações de alta disponibilidade:
|
Neste exemplo, 3 servidores são usados para um cluster de alta disponibilidade, referidos como S1, S2, S3. Embora não seja obrigatório, é recomendado que você escolha um nó de servidor do qual executar os comandos |
-
Preparar no S1.
rke2 secrets-encrypt prepare -
Reinicialize sequencialmente S1, S2, S3.
systemctl restart rke2-server.serviceAguarde o comando systemctl retornar antes de reinicializar o próximo servidor.
-
Rotacionar no S1.
rke2 secrets-encrypt rotate
-
Reinicialize sequencialmente S1, S2, S3.
-
Recriptografar no S1.
rke2 secrets-encrypt reencryptAguarde até que a recriptografia seja concluída, seja por meio dos logs do servidor
journalctl -u rke2-serverou por meio derke2 secrets-encrypt status. O status retornaráreencrypt_finishedquando concluído. -
Reinicialize sequencialmente S1, S2, S3.
Status da Criptografia de Segredos
O subcomando secrets-encrypt status exibe informações sobre o status atual da criptografia de segredos no nó.
Um exemplo do comando em um nó de servidor único:
$ rke2 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:
$ rke2 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 | Descrição |
|---|---|
Active |
O |
Tipo de Chave |
O RKE2 suporta apenas o tipo de chave |
Nome |
Nome da chave de criptografia. O padrão é |