Em clusters ACK Pro, as chaves criadas no Alibaba Cloud Key Management Service (KMS) criptografam os dados dos Kubernetes Secrets em repouso.
Pré-requisitos
Item | Descrição |
Chave do KMS | Crie uma chave do KMS no Key Management Service console e verifique se a chave está na mesma região do cluster ACK Pro de destino. Os clusters ACK Pro suportam chaves padrão, chaves protegidas por software e chaves protegidas por hardware. Selecione um tipo de chave conforme os requisitos do seu negócio. Para obter mais informações sobre o gerenciamento de chaves do KMS e operações relacionadas, consulte Key management quickstart. Para detalhes sobre o faturamento do KMS, consulte Billing. Importante Após ativar a criptografia em repouso, não use o console do KMS ou a OpenAPI para desativar ou excluir a chave selecionada para criptografia e descriptografia de Secrets do cluster. Caso contrário, o servidor de API do cluster ficará indisponível e objetos como Secrets e ServiceAccounts não poderão ser recuperados, o que afetará suas cargas de trabalho. |
Regras de ACL de rede do cluster | Ao ativar a criptografia em repouso, o plugin do KMS no plano de controle precisa acessar a OpenAPI do Alibaba Cloud KMS para criptografar e descriptografar instâncias de Secret. Certifique-se de que as regras de **saída** do grupo de segurança do cluster permitam o bloco CIDR dos serviços da Alibaba Cloud ( |
Autorização | Conforme o tipo de conta utilizada, confirme se as seguintes operações de autorização foram concluídas:
|
Como funciona a criptografia de Secrets
Em um cluster Kubernetes, o modelo Secret geralmente armazena e gerencia as informações confidenciais necessárias para suas cargas de trabalho, como senhas de aplicativos, certificados TLS e credenciais de pull de imagens docker. O Kubernetes armazena os dados de todos os objetos Secret no etcd do cluster. Para obter mais informações sobre Secrets, consulte Secrets.
A criptografia do KMS baseia-se no mecanismo KMS Encryption Provider do Kubernetes e utiliza criptografia de envelope para criptografar e descriptografar automaticamente os Kubernetes Secrets armazenados no etcd. A criptografia e descriptografia dos Kubernetes Secrets ocorrem da seguinte forma:
Quando os dados do aplicativo precisam ser armazenados por meio da API de Secret do Kubernetes, o servidor de API primeiro os criptografa com uma chave de criptografia de dados gerada aleatoriamente. Em seguida, a chave de dados é criptografada com a chave do KMS especificada e armazenada no etcd como uma chave de texto cifrado.
Para descriptografar um Kubernetes Secret, o sistema chama primeiro a operação da OpenAPI de descriptografia do KMS para decifrar a chave de texto cifrado. Depois, o sistema usa a chave de texto simples descriptografada para decifrar os dados do Secret e retorna os dados para você.
Para obter mais informações, consulte o mecanismo KMS Encryption Provider e Use envelope encryption.
KMS v2
A partir do Kubernetes 1,31, os clusters ACK Pro priorizam a interface KMS v2 da comunidade para criptografia em repouso. O KMS v2 suporta mais instâncias de Secret em um cluster e oferece melhor desempenho de criptografia e descriptografia. Para obter mais informações sobre o processo de criptografia e descriptografia do KMS v2, consulte KMS v2.
Para atualizar a interface KMS v1 usada pelo seu cluster para a interface KMS v2, consulte How do I upgrade to KMS v2 for Secret encryption at rest?
A comunidade Kubernetes marcou o KMS v1 como obsoleto na versão 1,27 e desativou a interface v1 por padrão a partir da versão 1,29. Para garantir compatibilidade, os clusters ACK Pro e os ainda ativam a interface v1 definindo o feature gate do KMS v1.
Ativar a criptografia de Secret em repouso para um cluster ACK Pro
Ativar a criptografia de Secret em repouso para um novo cluster ACK Pro
Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique em Create Kubernetes Cluster.
-
Na parte inferior da aba ACK Managed Cluster, expanda Advanced Options (Optional), localize Secret Encryption, marque a caixa de seleção Select Key e selecione um ID de chave do KMS na lista suspensa. Configure os outros parâmetros conforme necessário e clique em Create Kubernetes Cluster.
Para configurar outros parâmetros ao criar um cluster ACK Pro, consulte ACK managed cluster: Parameters.
Acesse o ActionTrail console e clique em Cluster Events Query no painel de navegação à esquerda. Se logs de eventos de criptografia e descriptografia da função de sistema AliyunCSManagedSecurityRole aparecerem na página Cluster Events Query, a criptografia de Secret em repouso estará ativada para o cluster.
Se você não precisar mais da criptografia de Secret em repouso, clique no nome do cluster na lista de clusters. Na página Cluster Information, clique na aba Basic Information. Na seção Security and Auditing, desative a chave Secret Encryption.
Ativar a criptografia de Secret em repouso para um cluster ACK Pro existente
Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.
-
Na página Clusters, clique no nome do cluster de destino. Na página de detalhes do cluster, clique na aba Basic Information. Na seção Security and Auditing, ative a chave Secret Encryption.
Ao ativar a criptografia de Secret em repouso pela primeira vez, siga o prompt e clique em Go to RAM console para acessar a página Cloud Resource Access Authorization e clique em Confirm para concluir a autorização.
NotaPara ativar a criptografia em repouso, certifique-se de que o usuário ou a função do RAM atualmente conectado tenha permissões RBAC de administrador ou engenheiro de O&M no cluster. Para obter mais informações, consulte Authorize operations on in-cluster resources with RBAC.
Para autorizar a AliyunCSManagedSecurityRole, verifique se você está conectado com uma conta Alibaba Cloud ou com um usuário/função do RAM que possua permissões de gerenciamento do RAM.
-
Na caixa de diálogo Secret Encryption exibida, selecione uma chave do KMS existente e clique em OK.
Se você ainda não criou uma chave do KMS, clique em Create Key e acesse o Key Management Service console para criar uma chave. Para obter mais informações, consulte Create a key.
Quando o status do cluster mudar de Updating para Running, a criptografia de Secret em repouso estará ativada para o cluster.
Caso não precise mais da criptografia de Secret em repouso, na seção Security and Auditing, desative a chave Secret Encryption.
Ativar a criptografia de Secret em repouso usando uma chave com rotação automática
Utilize o recurso de rotação automática de chaves do KMS para criptografar Secrets em repouso. Quando uma chave passa por rotação automática, os Secrets existentes continuam criptografados com a versão da chave usada antes da rotação. Os novos Secrets são criptografados com a nova versão da chave gerada após a rotação. Para obter mais informações sobre como realizar a rotação automática de uma chave, consulte Key rotation.
Após a rotação automática da chave, force a recriptografia de todos os Secrets existentes com a nova versão 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
Como faço para atualizar para o KMS v2 na criptografia de Secret em repouso?
Para usar o KMS v2 na criptografia de Secret em repouso, certifique-se de que seu cluster ACK Pro esteja na versão 1,31 ou posterior.
Se a criptografia de Secret em repouso não estiver ativada para o seu cluster, consulte Enable Secret encryption at rest for an ACK Pro cluster para ativar a criptografia. Após a ativação, as instâncias de Secret no cluster serão automaticamente criptografadas e descriptografadas por meio da interface KMS v2 durante a gravação e leitura em disco.
-
Se a criptografia de Secret em repouso já estiver ativada para o seu cluster, realize a rotação do método de criptografia das chaves em disco durante horários de baixa demanda, utilizando uma das seguintes formas:
Método 1: Execute o comando
kubectl get secrets --all-namespaces -o json | kubectl replace -f -. Este comando recriptografa todas as instâncias de Secret já gravadas em disco usando a interface KMS v2.Método 2: Faça login no ACK console. Na página Cluster Information, acesse a aba Basic Information, localize Secret Encryption e desative-a. Desativar essa chave aciona a rotação de todas as instâncias de Secret gravadas em disco no cluster. Após o status do cluster mudar de Updating para Running, aguarde pelo menos 5 minutos e consulte Enable Secret encryption at rest for an ACK Pro cluster para ativar a criptografia novamente no cluster. Após a ativação, todas as instâncias de Secret no cluster serão criptografadas em repouso por meio da interface KMS v2.
Após ativar a criptografia de Secret em repouso, os Secrets recuperados pelo comando kubectl são textos cifrados criptografados?
Não. A criptografia de Secret em repouso criptografa os dados brutos armazenados no etcd. Após ativar essa criptografia, os dados do Secret armazenados no etcd estarão em formato de texto cifrado. No entanto, os dados do Secret que um cliente recupera por meio da API de Secret fornecida pelo servidor de API continuam sendo os dados originais em texto simples.
Como impedir que um usuário ou função do RAM ative ou desative a criptografia de Secret em repouso em um cluster ACK Pro existente?
Anexe a seguinte política de acesso do RAM, que nega a operação, a um usuário ou função do RAM. Isso impede que o usuário ou a função do RAM ative ou desative a criptografia de Secret em repouso em um cluster ACK Pro existente. Para obter mais informações, consulte Grant cluster and cloud resource access with RAM.
{
"Action": [
"cs:UpdateKMSEncryption"
],
"Effect": "Deny",
"Resource": [
"*"
]
}