Criptografe discos, proteja Kubernetes Secrets e rotacione chaves para proteger dados confidenciais em clusters ACK. Monitore e atualize continuamente os algoritmos de criptografia e as estratégias de gerenciamento de chaves para se adaptar às ameaças em evolução.
Criptografia de dados
Recomendações de criptografia de disco
Proteja os dados em repouso:
Ative a criptografia de disco: Encrypt disk volumes como base de segurança.
Rotacione CMKs periodicamente: Configure automatic key rotation e o versionamento de chaves para limitar o impacto de uma chave comprometida.
Criptografe volumes de disco com o KMS
A criptografia de armazenamento do Key Management Service (KMS) protege dados em instâncias do Elastic Compute Service (ECS) sem exigir um sistema separado de gerenciamento de chaves. Consulte Encrypt disk volumes.
Para criptografar um volume de disco com uma chave do KMS durante a criação:
-
Crie uma StorageClass.
-
Crie um arquivo chamado
sc-kms.yaml:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: csi-disk provisioner: diskplugin.csi.alibabacloud.com parameters: fsType: ext4 type: cloud_ssd encrypted: "true" kmsKeyId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx reclaimPolicy: Delete -
Crie a StorageClass:
kubectl create -f sc-kms.yaml
-
-
Crie uma persistent volume claim (PVC).
-
Crie um arquivo chamado
sc-pvc.yaml:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: disk-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi storageClassName: csi-diskReadWriteOnce
-
Crie a PVC:
kubectl create -f sc-pvc.yaml
-
Gerenciamento de chaves
Os Kubernetes Secrets armazenam dados confidenciais — como senhas, certificados e tokens — como objetos consumidos por pods:
Os Secrets têm escopo de namespace. Use o controle de acesso baseado em função (RBAC) do Kubernetes para isolar leituras e gravações de Secrets por namespace.
Monte Secrets como arquivos ou variáveis de ambiente nos contêineres dos pods.
Os dados dos Secrets residem no sistema de arquivos temporário (tmpfs) nos nós.
O servidor de API armazena Secrets como texto simples codificado em Base64 no etcd.
Um Secret tem limite de 1 MB.
Por padrão, os Secrets não garantem segurança. Use soluções de gerenciamento de chaves em nuvem e as melhores práticas a seguir para proteger dados confidenciais.
Soluções de segurança
No modelo de responsabilidade compartilhada, os provedores de nuvem protegem o plano de controle e fornecem soluções de gerenciamento de chaves.
Use o KMS
O KMS gerencia o ciclo de vida das chaves e fornece criptografia de dados, incluindo rotação automática de chaves, para reduzir riscos de violação e atender a requisitos de conformidade.
Para evitar a codificação fixa de credenciais, use o KMS para gerenciar chaves em pipelines de desenvolvimento, teste e build. Consulte What is KMS?
Use o driver CSI do Secret Store
A maioria das aplicações recupera chaves de um caminho do sistema de arquivos ou de uma variável de ambiente. O secrets-store-csi-driver, projeto da comunidade Kubernetes, monta chaves de um service externo de gerenciamento de chaves nos pods como volumes. Assim, as aplicações acessam as chaves sem criar Kubernetes Secrets ou armazenar texto simples no etcd.
Capacidades:
Monta chaves de um service externo de gerenciamento de chaves nos pods como volumes
Evita Secrets em texto simples no etcd e reduz a sobrecarga de gerenciamento de Secrets em grandes clusters
Sincroniza alterações de chaves do KMS para os contêineres em tempo real
Elimina chamadas de API do service de gerenciamento de chaves do código da aplicação
Implante o secrets-store-csi-driver-provider-alibabacloud da Alibaba Cloud para sincronizar chaves do KMS como arquivos ou Kubernetes Secrets nos contêineres.
Para resolver o problema da Última Chave (o driver CSI precisa de permissões de acesso ao KMS), use RAM Roles for Service Accounts (RRSA). O RRSA concede à conta de service do driver CSI acesso às chaves do KMS, em vez de conceder permissões diretamente aos pods.
Ative a criptografia do etcd
Por padrão, o etcd armazena Kubernetes Secrets como texto simples codificado em Base64, o que representa riscos de segurança. Em clusters gerenciados, os provedores de cloud mantêm o etcd. Com base nos princípios de confiança zero em cloud e nos requisitos de conformidade de muitos cenários, ative etcd encryption para criptografar chaves ao sincronizar do KMS para Secrets e descriptografá-las na recuperação. Combine isso com a rotação automática de chaves para obter uma segurança de dados mais robusta.
Use contêineres confidenciais
Para cenários que exigem segurança de dados aprimorada — como pagamentos financeiros, autenticação de privacidade e computação de dados de propriedade intelectual — use ACK clusters for trusted execution environment (TEE)-based confidential computing. A computação confidencial baseada em TEE fornece um ambiente de execução confiável e criptografado, fundamentado em criptografia de hardware, protegendo a integridade e a confidencialidade dos dados confidenciais durante todo o seu ciclo de vida. As chaves da aplicação podem ser armazenadas em enclaves — ambientes isolados semelhantes a um módulo de segurança de hardware (HSM) no KMS — para reduzir a transmissão de chaves.
Melhores práticas de segurança
Além das soluções do provedor de cloud, desenvolvedores e engenheiros de operações e manutenção (O&M) devem proteger as chaves na camada da aplicação.
Aplique RBAC
Siga o princípio do menor privilégio ao atribuir acesso ao cluster. Evite emitir credenciais com permissões de leitura e gravação em Secrets globais. Revogue credenciais de cluster que possam estar comprometidas.
Reforce a segurança dos pods
O escape de contêiner é um ataque comum contra clusters Kubernetes. Após escapar para o host, um invasor pode ler Secrets armazenados no nó e escalar para acesso em todo o cluster. Configure security contexts para minimizar as capacidades dos pods. Evite configurações privilegiadas, redes de host compartilhadas ou sistemas de arquivos compartilhados. Use security policies para rejeitar implantações que violem privilégios. Use network policies para controlar o tráfego leste-oeste entre pods e reduzir o risco de ataques de movimento lateral.
Reforce a segurança dos nós
Use redes privadas e adicione regras de lista de controle de acesso (ACL) aos grupos de segurança para controlar o tráfego de entrada e saída. Defina padrões de conformidade baseados no Multi-Level Protection Scheme (MLPS) ou no Alibaba Cloud Linux Security Hardening para verificação de identidade, controle de acesso, auditoria e prevenção de intrusões. Consulte ACK security hardening based on MLPS.
Execute inspeções de linha de base regularmente para identificar configurações de alto risco e corrija vulnerabilidades prontamente.
Reforce a segurança da cadeia de suprimentos
Proíba a codificação fixa de informações confidenciais em modelos, repositórios e arquivos de configuração. Use services de gerenciamento de chaves para gerenciar chaves centralmente em toda a cadeia de suprimentos. Implemente inspeções automáticas de segurança para evitar violações de dados em cada etapa da cadeia de suprimentos.
Audite e monitore operações de chave
Audite e registre todas as operações de chave — leitura, gravação, uso e gerenciamento de ciclo de vida — para garantir rastreabilidade. Configure monitoramento de tempo de execução com alertas para operações suspeitas em dados confidenciais e pares de AccessKey comprometidos. Alertas e logs ajudam os engenheiros de O&M a responder a violações, avaliar impactos e minimizar perdas.
Use tokens temporários e rotacione chaves
Evite chaves estáticas, como pares de AccessKey. Em vez disso, use tokens temporários. Tokens temporários comprometidos são válidos apenas por um tempo limitado, minimizando a superfície de ataque e dando tempo para corrigir a vulnerabilidade.
Para chaves do KMS, ative a rotação automática de chaves ou rotacione-as periodicamente para aumentar a segurança.
Use criptografia de envelope para proteger a última chave
A criptografia de envelope usa uma Content Encryption Key (CEK) para criptografar dados localmente e, em seguida, criptografa a CEK com uma Key Encryption Key (KEK) no KMS. Isso mantém a criptografia e a descriptografia offline, evita o upload de chaves para a cloud, reduz custos de transmissão de dados para grandes volumes e resolve preocupações sobre confiar dados em texto simples a provedores de cloud. Consulte Use envelope encryption to encrypt and decrypt local data.
A Última Chave é um problema comum em cenários de criptografia baseada em KMS. Para proteger a KEK com o menor privilégio, use o Resource Access Management (ram) da Alibaba Cloud para controlar o acesso às credenciais usadas para recuperar a KEK. Use tokens temporários com rotação automática para proteger essas credenciais. Use um mecanismo de isolamento, como RRSA, para limitar quais aplicações podem acessar as credenciais do ram.