Como encriptar o ETCD do Kubernetes com o OVHcloud KMS
Descubra como configurar o Kubernetes para encriptar o armazenamento ETCD com a interface KMIP do OVHcloud KMS
Objetivo
Este guia explica como configurar o fornecedor de encriptação do kube-apiserver que permite aos clusters Kubernetes encriptar e desencriptar os dados em repouso utilizando o OVHcloud KMS através do protocolo KMIP.
Requisitos
- Dispor de uma conta de cliente OVHcloud.
- Ter encomendado um domínio OKMS.
Instruções
Instalação do binário
O binário pode ser instalado diretamente a partir dos pacotes Go.
Em alternativa, pode compilá-lo a partir das fontes.
Configuração do OVHcloud KMS (OKMS)
Para utilizar o OVHcloud KMS como fornecedor de encriptação para o Kubernetes, irá precisar dos seguintes elementos:
- Um utilizador OVHcloud e permissões para gerir as chaves KMIP do OKMS.
- Um certificado de acesso para o seu domínio OKMS.
- Uma chave KMIP AES no seu OKMS.
Criação do utilizador e das permissões de acesso
Crie um utilizador local IAM com permissões de acesso ao seu domínio.
Se, em alternativa, utilizar políticas IAM, o utilizador deve ter, pelo menos, as seguintes permissões no domínio OKMS:
okms:kmip:encryptokms:kmip:decryptokms:kmip:locate
Caso contrário, o utilizador deve pertencer a um grupo com a função ADMIN.
Também é possível criar um utilizador utilizando a CLI OVHcloud:
Criação do certificado de acesso
Crie um certificado de acesso OKMS e associe o utilizador criado anteriormente.
Guarde o certificado cert.pem e a chave privada key.pem gerados, pois serão necessários para a configuração do fornecedor de encriptação.
Criação da chave KMIP AES
Para criar uma chave KMIP AES, pode utilizar a CLI OKMS:
Comece por descarregar o binário da versão mais recente ou compile-o a partir das fontes.
Em seguida, pode criar uma chave utilizando:
Guarde o ID da chave gerada. Para o resto do guia, iremos utilizar o ID 70001308-5674-43fe-93dd-6270ecac0710 como exemplo.
Para mais informações sobre a utilização do okms-cli, consulte o repositório GitHub.
Configuração do fornecedor de encriptação
O fornecedor de encriptação pode ser executado diretamente nos hosts kube-apiserver com o seguinte comando:
O fornecedor de encriptação suporta as seguintes opções:
Configuração do Kubernetes
Com base no guia oficial do Kubernetes para encriptar dados com um fornecedor KMS, adicione as seguintes opções ao seu kube-apiserver:
Certifique-se de que monta no kube-apiserver o diretório que contém o socket Unix no qual o servidor KMS está a escutar.
Um exemplo de encryption-config.yaml:
Validação da configuração
Crie um secret com kubectl create secret generic okms-test-secret -n default --from-literal=mykey=mydata e, em seguida, verifique o conteúdo do secret no armazenamento ETCD executando o seguinte comando:
O resultado deverá ser ilegível:
Implementação da rotação de chaves
Para rodar a sua chave, terá de executar dois fornecedores de encriptação, cada um a escutar num socket Unix diferente.
Segue-se um exemplo de ficheiro de configuração de encriptação para todos os servidores API antes de utilizar a nova chave:
Assim que todos os servidores API tiverem sido reiniciados e forem capazes de desencriptar com a nova chave, coloque o fornecedor com a nova chave no topo.
Assim que todos os secrets tiverem sido novamente encriptados com a nova chave, pode eliminar o antigo fornecedor de encriptação.
Quer saber mais?
Fale com a nossa comunidade de utilizadores.
Descubra como utilizar o Kubernetes External Secrets Operator com o Secret Manager.