Rotação de certificados no AKS (Serviço de Kubernetes do Azure)
O Serviço de Kubernetes do Azure (AKS) usa certificados para autenticação com muitos de seus componentes. Os clusters com o RBAC (controle de acesso baseado em função) do Azure que foram criados após março de 2022 são habilitados com rotação automática de certificado. Talvez seja necessário girar esses certificados periodicamente por motivos de segurança ou política. Por exemplo, você pode ter uma política para girar todos os certificados a cada 90 dias.
Observação
A rotação automática de certificado é habilitada por padrão apenas para clusters do AKS habilitados para RBAC.
Este artigo mostra como a rotação de certificados funciona no cluster do AKS.
Antes de começar
Este artigo exige a CLI do Azure versão 2.0.77 ou posterior. Execute az --version
para encontrar a versão. Se você precisa instalar ou atualizar, consulte Instalar a CLI do Azure.
Certificados AKS, Autoridades de Certificação e Contas de Serviço
O AKS gera e usa os seguintes certificados, Autoridades de Certificação (AC) e Contas de Serviço (SA):
- O servidor de API do AKS cria uma AC chamada Cluster AC.
- O servidor de API tem um Cluster AC, que assina certificados para uma comunicação unidirecional do servidor de API para kubelets.
- Cada kubelet cria uma solicitação de assinatura de certificado (CSR), que é assinada pelo Cluster AC, para a comunicação do kubelet com o servidor de API.
- O agregador de API usa o Cluster AC para emitir certificados para comunicação com outras APIs. O agregador de API também pode ter sua própria AC para emitir esses certificados, mas atualmente usa o Cluster AC.
- Cada nó usa um token SA, que é assinado pelo Cluster AC.
- O
kubectl
cliente tem um certificado para comunicação com o cluster do AKS.
A Microsoft mantém todos os certificados mencionados nesta seção, exceto o certificado do cluster.
Observação
- Os clusters do AKS criados antes de maio de 2019 têm certificados que expiram após dois anos.
- Os clusters do AKS criados depois de maio de 2019 têm certificados de Cluster AC que expiram após 30 anos.
Você pode verificar quando o cluster foi criado usando o comando kubectl get nodes
, que mostra a Idade dos pools de nós.
Verificar datas de validade do certificado
Verifique a data de validade do certificado do cluster
Verifique a data de validade do certificado de cluster usando o comando
kubectl config view
.kubectl config view --raw -o jsonpath="{.clusters[?(@.name == '')].cluster.certificate-authority-data}" | base64 -d | openssl x509 -text | grep -A2 Validity
Verificar a data de validade do certificado do servidor de API
Verifique a data de validade do certificado do servidor de API usando o comando
curl
a seguir.curl https://{apiserver-fqdn} -k -v 2>&1 | grep expire
Verificar a data de validade do certificado de nó do agente VMAS
Verifique a data de validade do certificado de nó do agente VMAS usando o comando
az vm run-command invoke
.az vm run-command invoke --resource-group MC_rg_myAKSCluster_region --name vm-name --command-id RunShellScript --query 'value[0].message' -otsv --scripts "openssl x509 -in /etc/kubernetes/certs/apiserver.crt -noout -enddate"
Verificar a validade do certificado para o nó do agente do conjunto de dimensionamento de máquinas virtuais
Verifique a data de validade do certificado de nó do agente do conjunto de dimensionamento de máquinas virtuais usando o comando
az vmss run-command invoke
.az vmss run-command invoke --resource-group "MC_rg_myAKSCluster_region" --name "vmss-name" --command-id RunShellScript --instance-id 1 --scripts "openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -enddate" --query "value[0].message"
Rotação automática de certificado
Para o AKS girar automaticamente os certificados que não são de AC, o cluster precisa ter a inicialização de TLS, que é habilitada por padrão em todas as regiões do Azure.
Observação
- Se você tiver um cluster existente, precisará atualizar esse cluster para habilitar a rotação automática de Certificado.
- Não desabilite o Bootstrap para manter a rotação automática habilitada.
- Se o cluster estiver em um estado parado durante a rotação automática do certificado, somente os certificados do painel de controle serão girados. Nesse caso, você deve recriar o pool de nós após a rotação do certificado para iniciar a rotação do certificado do pool de nós.
Para todos os clusters do AKS criados ou atualizados após março de 2022, o Serviço de Kubernetes do Azure rotaciona automaticamente certificados não AC nos nós do agente e plano de controle dentro de 80% do tempo válido do certificado do cliente, antes de expirarem e sem tempo de inatividade para o cluster.
Como verificar se o pool de nós do agente atual está habilitado para inicialização de TLS?
Verifique se o cluster tem Inicialização TLS habilitada navegando até um dos seguintes caminhos:
- Em um nó do Linux: /var/lib/kubelet/bootstrap-kubeconfig ou /host/var/lib/kubelet/bootstrap-kubeconfig
- Em um nó Windows: C:\k\bootstrap-config
Para obter mais informações, confira Conecte os nós de cluster do Azure Kubernetes Service (AKS) para manutenção ou solução de problemas.
Observação
O caminho do arquivo pode ser alterado conforme as versões do Kubernetes evoluem.
Depois que uma região estiver configurada, crie um novo cluster ou atualize um cluster existente para definir a rotação automática do certificado de cluster. Você precisa atualizar o painel de controle e o pool de nós para habilitar esse recurso.
Rotacionar manualmente os certificados do cluster
Aviso
Rotacionar seus certificados usando az aks rotate-certs
recria todos os seus nós, conjuntos de dimensionamento de máquinas virtuais e discos e pode causar até 30 minutos de tempo de inatividade para o cluster do AKS.
Conecte-se ao seu cluster usando o comando
az aks get-credentials
.az aks get-credentials --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME
Gire todos os certificados, CAs e SAs em seu cluster usando o comando
az aks rotate-certs
.az aks rotate-certs --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME
Importante
Isso pode levar até 30 minutos para
az aks rotate-certs
ser concluído. Se o comando falhar antes de concluir, useaz aks show
para verificar se o status do cluster é Certificado em rotação. Se o cluster estiver em um estado de falha, executeaz aks rotate-certs
novamente para girar os certificados outra vez.Verifique se os certificados antigos não são mais válidos usando qualquer comando
kubectl
, comokubectl get nodes
.kubectl get nodes
Se você não atualizou os certificados usados pelo
kubectl
, verá um erro semelhante ao seguinte exemplo de saída:Unable to connect to the server: x509: certificate signed by unknown authority (possibly because of "crypto/rsa: verification error" while trying to verify candidate authority certificate "ca")
Atualize o certificado usado por
kubectl
usando o comandoaz aks get-credentials
com o sinalizador--overwrite-existing
.az aks get-credentials --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME --overwrite-existing
Verifique se os certificados foram atualizados usando o comando
kubectl get
.kubectl get nodes
Observação
Se você tiver serviços que sejam executados com base no AKS, poderá ser necessário atualizar os certificados relacionados a eles.
Próximas etapas
Este artigo mostrou como rotacionar manualmente e automaticamente seus certificados de cluster, CAs e SAs. Para obter mais informações, confira Melhores práticas para segurança de cluster e atualizações no Serviço de Kubernetes do Azure (AKS).
Azure Kubernetes Service