Visão geral do gerenciamento de certificados no AKS habilitado pelo Azure Arc
Aplica-se a: AKS no Azure Stack HCI 22H2, AKS no Windows Server
O AKS habilitado pelo Azure Arc usa uma combinação de autenticação baseada em certificado e token para proteger a comunicação entre serviços (ou agentes) responsáveis por diferentes operações dentro da plataforma. A autenticação baseada em certificado usa um certificado digital para identificar uma entidade (agente, computador, usuário ou dispositivo) antes de conceder acesso a um recurso.
Agente de nuvem
Quando você implanta o AKS habilitado pelo Arc, o AKS instala agentes que são usados para executar várias funções dentro do cluster. Esses agentes incluem:
- Agente de nuvem: um serviço responsável pela orquestração de plataforma subjacente.
- Agente de nó: um serviço que reside em cada nó que faz o trabalho real de criação, exclusão, etc. da máquina virtual.
- Pod kms (sistema de gerenciamento de chaves): um serviço responsável pelo gerenciamento de chaves.
- Outros serviços: operador de nuvem, gerenciador de certificados etc.
O serviço de agente de nuvem no AKS é responsável por orquestrar as operações CRUD (criação, leitura, atualização e exclusão) de componentes de infraestrutura, como VMs (Máquinas Virtuais), VNICs (Interfaces Rede Virtual) e VNETs (Redes Virtuais) no cluster.
Para se comunicar com o agente de nuvem, os clientes exigem que os certificados sejam provisionados para proteger essa comunicação. Cada cliente requer que uma identidade seja associada a ela, o que define as regras rbac (Controle de Acesso baseadas em função) associadas ao cliente. Cada identidade consiste em duas entidades:
- Um token, usado para autenticação inicial, que retorna um certificado e
- Um certificado, obtido do processo de entrada acima e usado para autenticação em qualquer comunicação.
Cada entidade é válida por um período específico (o padrão é 90 dias), no final do qual expira. Para acesso contínuo ao agente de nuvem, cada cliente requer que o certificado seja renovado e o token girado.
Tipos de certificado
Há dois tipos de certificados usados no AKS habilitados pelo Arc:
- Certificado de autoridade de certificação do agente de nuvem: o certificado usado para assinar/validar certificados de cliente. Esse certificado é válido por 365 dias (1 ano).
- Certificados de cliente: certificados emitidos pelo certificado de AC do agente de nuvem para que os clientes se autentiquem no agente de nuvem. Esses certificados geralmente são válidos por 90 dias.
A Microsoft recomenda que você atualize os clusters dentro de 60 dias após uma nova versão, não apenas para garantir que os certificados e tokens internos sejam mantidos atualizados, mas também para garantir que você tenha acesso a novos recursos, correções de bugs e fique atualizado com patches de segurança críticos. Durante essas atualizações mensais, o processo de atualização gira todos os tokens que não podem ser girados automaticamente durante as operações normais do cluster. A validade do certificado e do token é redefinida para o padrão 90 dias a partir da data em que o cluster é atualizado.
Proteger a comunicação com certificados no AKS habilitados pelo Arc
Os certificados são usados para criar uma comunicação segura entre componentes no cluster. O AKS fornece provisionamento de toque zero, pronto para uso e gerenciamento de certificados para componentes internos do Kubernetes. Neste artigo, você aprenderá a provisionar e gerenciar certificados no AKS habilitados pelo Arc.
Certificados e CAs
O AKS gera e usa as seguintes ACs (Autoridades de Certificação) e certificados.
AC do cluster
- O servidor de API tem uma AC de cluster, que assina certificados para comunicação unidirecional do servidor de API para
kubelet
. - Cada
kubelet
um também cria uma CSR (Solicitação de Assinatura de Certificado), que é assinada pela AC do cluster, para comunicação do para o servidor dekubelet
API. - O repositório de valores de chave etcd tem um certificado assinado pela AC do Cluster para comunicação do etcd com o servidor de API.
etcd CA
O repositório de valores de chave etcd tem uma AC etcd que assina certificados para autenticar e autorizar a replicação de dados entre réplicas etcd no cluster.
AC de proxy frontal
A AC de Proxy Frontal protege a comunicação entre o servidor de API e o servidor de API de extensão.
Provisionamento de certificado
O provisionamento de certificado para um kubelet
é feito usando inicialização TLS. Para todos os outros certificados, use a criação de certificado e chave baseada em YAML.
- Os certificados são armazenados em /etc/kubernetes/pki.
- As chaves são RSA 4096, EcdsaCurve: P384
Observação
Os certificados raiz são válidos por 10 anos. Todos os outros certificados não raiz são de curta duração e são válidos por quatro dias.
Renovação e gerenciamento de certificados
Certificados não raiz são renovados automaticamente. Todos os certificados do painel de controle para Kubernetes, exceto os seguintes certificados, são gerenciados:
- Certificado do servidor Kubelet
- Certificado do cliente Kubeconfig
Como prática recomendada de segurança, você deve usar o logon único do Active Directory para autenticação de usuário.
Revogação de certificado
A revogação do certificado deve ser rara e deve ser feita no momento da renovação do certificado.
Depois de ter o número de série do certificado que deseja revogar, use o Recurso Personalizado do Kubernetes para definir e persistir informações de revogação. Cada objeto de revogação pode consistir em uma ou mais entradas de revogação.
Para executar uma revogação, use uma das seguintes opções:
- Número de série
- Grupo
- Nome DNS
- Endereço IP
Um notBefore
tempo pode ser especificado para revogar apenas certificados emitidos antes de um determinado carimbo de data/hora. Se um notBefore
tempo não for especificado, todos os certificados existentes e futuros correspondentes à revogação serão revogados.
Observação
Atualmente, a revogação de certificados de kubelet
servidor não está disponível.
Se você usar um número de série ao executar uma revogação, poderá usar o comando do Repair-AksHciClusterCerts
PowerShell, descrito abaixo, para colocar o cluster em um estado de trabalho. Se você usar qualquer um dos outros campos listados anteriormente, especifique uma notBefore
hora.
apiVersion: certificates.microsoft.com/v1
kind: RenewRevocation
metadata:
name: my-renew-revocation
namespace: kube-system
spec:
description: My list of renew revocations
revocations:
- description: Revoked certificates by serial number
kind: serialnumber
notBefore: "2020-04-17T17:22:05Z"
serialNumber: 77fdf4b1033b387aaace6ce1c18710c2
- description: Revoked certificates by group
group: system:nodes
kind: Group
- description: Revoked certificates by DNS
dns: kubernetes.default.svc.
kind: DNS
- description: Revoked certificates by DNS Suffix
dns: .cluster.local
kind: DNS
- description: Revoked certificates by IP
ip: 170.63.128.124
kind: IP
Próximas etapas
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de