No Container Compute Service (ACS), você pode usar uma chave criada no Key Management Service (KMS) do Alibaba Cloud para criptografar Secrets do Kubernetes em repouso. Use uma chave gerenciada pelo KMS para proteger os dados de Secret armazenados no etcd do cluster.
Pré-requisitos
-
Crie uma chave do KMS no console do KMS. A chave deve estar na mesma região do cluster ACS de destino.
ImportanteA criptografia de Secrets em repouso exige a versão 1,28 ou posterior do cluster ACS.
-
Verifique se sua conta tem as permissões necessárias para o tipo de conta utilizado.
Conta Alibaba Cloud: A conta do Container Service deve ter autorização para assumir a função AliyunCCManagedSecurityRole. Se ainda não tiver autorização, o console do ACS solicitará isso ao ativar a criptografia de Secrets em repouso. Você também pode autorizar na página de Autorização de Acesso a Recursos da Cloud.
-
Usuário RAM ou função RAM:
Tenha permissões de administrador ou O&M no cluster com base em RBAC. Configure RBAC permissions for a RAM user or RAM role.
Tenha a permissão de sistema AliyunKMSCryptoAdminAccess. Grant RAM permissions to a RAM user or RAM role.
Como funciona a criptografia de Secrets
Os Secrets do Kubernetes armazenam dados sensíveis, como senhas, certificados TLS e credenciais de pull de imagens. Todos os dados de Secret são persistidos no etcd do cluster.
Os clusters ACS usam a API KMS v2 da comunidade para criptografia em repouso, o que oferece maior capacidade de Secrets e melhor desempenho. O ACS é compatível com chaves padrão, protegidas por software e protegidas por hardware. Get started with key management. Billing.
Após ativar a criptografia em repouso, não desative nem exclua a chave usada para criptografia e descriptografia de Secrets no console do KMS ou por chamada de API. Caso contrário, o servidor de API do cluster ficará indisponível e não será mais possível recuperar objetos como Secrets e ServiceAccounts, interrompendo as aplicações em execução.
Uso de um provedor KMS para criptografia de dados. Use KMS keys for envelope encryption.
Ativar criptografia em repouso para clusters ACS
Durante a criação do cluster
Faça login no console do ACS. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique em Create Kubernetes Cluster no canto superior esquerdo.
Na parte inferior da página, expanda Show Advanced Options, localize Secret Encryption, marque a caixa de seleção Select Key e selecione um ID de chave do KMS na lista suspensa. Configure os demais parâmetros conforme necessário e clique em Confirm. Create an ACS cluster.
Acesse o console do ActionTrail e clique em Event Query no painel de navegação à esquerda. Se a página Event Query exibir logs de eventos de criptografia e descriptografia gerados pela função de sistema aliyuncsmanagedsecurityrole, a criptografia de Secrets em repouso estará ativada.
Para desativar a criptografia de Secrets em repouso, acesse a aba Cluster Information > Basic Information no console do Container Service for Kubernetes (ACK) e desative a opção Secret Encryption na seção Security and Auditing.
Para um cluster existente
Faça login no console do ACS. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do cluster desejado. No painel de navegação à esquerda, escolha Cluster Information.
Na página de detalhes do cluster, clique na aba Basic Information. Na seção Security and Auditing, clique em Enable ao lado de Secret Encryption.
-
Na caixa de diálogo Secret Encryption, selecione uma chave KMS existente e clique em OK.
Se você ainda não criou uma chave KMS, clique em Create Key para acessar o console do KMS e criar uma. Create a key.
Quando o status do cluster mudar de Updating para Running, a criptografia de Secrets em repouso estará ativada.
Para desativar a criptografia em repouso dos Secrets, desative a opção Secret Encryption na seção Security and Auditing.
Rotação automática de chaves
O KMS oferece suporte à rotação automática de chaves para criptografia de Secrets em repouso. Após a rotação, os Secrets existentes permanecem criptografados com a versão anterior da chave, enquanto os novos Secrets são criptografados com a nova versão. Key rotation.
Para garantir que os Secrets existentes também sejam criptografados com a nova versão da chave, execute o comando abaixo para forçar a recriptografia de todos os Secrets existentes com a nova versão após a rotação automática da chave.
kubectl get secrets --all-namespaces -o json | kubectl annotate --overwrite -f - encryption-key-rotation-time="$(date -u +'%Y-%m-%dT%H:%M:%S%z')"
Perguntas frequentes
O comando kubectl get secrets retorna texto cifrado?
Não. O recurso de criptografia em repouso criptografa os dados brutos armazenados no etcd. Isso significa que, após ativar a criptografia em repouso para Secrets, os dados de Secret armazenados no etcd estarão em texto cifrado. No entanto, os dados de Secret obtidos por um cliente pela API de Secrets continuam sendo texto simples.
Como restringir quem pode gerenciar a criptografia de Secrets?
Para impedir que um usuário RAM ou uma função RAM ative ou desative a criptografia de Secrets em repouso em um cluster existente, anexe a seguinte política de negação (Deny). Grant RAM permissions to a RAM user or RAM role.
{
"Action": [
"cs:UpdateKMSEncryption"
],
"Effect": "Deny",
"Resource": [
"*"
]
}