Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O AKS (Serviço de Kubernetes do Azure) usa certificados para autenticação com muitos de seus componentes. Os clusters com controle de acesso baseado em função (RBAC) do Azure que foram criados após março de 2022 têm a rotação automática de certificados habilitada. Talvez seja necessário girar periodicamente esses certificados por motivos de segurança ou política. Por exemplo, você pode ter uma política para alternar todos os seus certificados a cada 90 dias.
Observação
A rotação automática de certificado é habilitada por padrão apenas para clusters AKS habilitados para RBAC.
Este artigo mostra como o giro 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, veja Instalar a CLI do Azure.
Certificados AKS, Autoridades de Certificação e Contas de Serviço
O AKS gera e usa os seguintes certificados, AC (Autoridades de Certificação) e SA (Contas de Serviço):
- O servidor de API do AKS cria uma AC chamada AC do cluster.
- O servidor de API tem uma AC do cluster, que assina certificados para uma comunicação unidirecional do servidor de API para kubelets.
- Cada kubelet cria uma CSR (Solicitação de Autenticação de Certificado), que a AC do cluster assina, para comunicação do kubelet com o servidor de API.
- O agregador de API usa a AC do cluster 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 a AC do cluster.
- Cada nó usa um token SA, que é assinado pela AC do cluster.
- 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 da AC do cluster 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 as 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 não 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 o Giro Automático de Certificado.
- Não desabilite a inicialização para manter o giro automático habilitado.
- Se o cluster estiver em um estado parado durante o giro automático do certificado, somente os certificados do painel de controle serão girados. Nesse caso, você deve recriar o pool de nós após o giro do certificado para iniciar o giro 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 gira automaticamente os certificados não AC nos nós do agente e painel 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 de 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ó do Windows: C:\k\bootstrap-config
Para obter mais informações, confira Conecte os nós de cluster do AKS (Serviço de Kubernetes do Azure) para manutenção ou solução de problemas.
Observação
O caminho do arquivo pode ser alterado à medida que as versões do Kubernetes evoluem.
Depois que uma região estiver configurada, crie um novo cluster ou atualize um cluster existente para definir o giro automático do certificado de cluster. Você precisa atualizar o painel de controle e o pool de nós para habilitar esse recurso.
Gire manualmente os certificados do cluster
Aviso
Girar 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 girando. Se o cluster estiver em um estado de falha, executeaz aks rotate-certs
novamente para girar seus 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.
Rotação de certificado de serviço do kubelet
A rotação de certificado de serviço do kubelet permite que o AKS utilize a inicialização de TLS do servidor do kubelet para inicialização e rotação de certificado de serviço assinados pela AC do cluster.
Limitações
- Com suporte no Kubernetes versão 1.27 e superior.
- Não há suporte quando o pool de nós está usando um instantâneo do pool de nós com base em uma imagem de nó mais antiga que
202501.12.0
. - Esse recurso não pode ser habilitado manualmente. Os pools de nós existentes terão a rotação de certificado de serviço do kubelet habilitada por padrão quando executarem a primeira atualização para qualquer Kubernetes versão 1.27 ou superior. Novos pools de nós na versão 1.27 ou superior do Kubernetes terão a rotação de certificado de serviço do kubelet habilitada por padrão. Para saber se a rotação de certificado de serviço do kubelet foi habilitada na sua região, veja Versões do AKS.
Verificar se a rotação de certificado de serviço do kubelet foi habilitada
Cada nó com o recurso habilitado recebe automaticamente o rótulo kubernetes.azure.com/kubelet-serving-ca=cluster
. Verifique se os rótulos foram definidos usando o comando kubectl get nodes -L kubernetes.azure.com/kubelet-serving-ca
.
kubectl get nodes -L kubernetes.azure.com/kubelet-serving-ca
Verificar se o kubelet passa pelo processo de inicialização do TLS
Com esse recurso habilitado, cada kubelet que executa seus nós deve passar pelo processo de inicialização do TLS de serviço.
Verifique se o processo de inicialização está ocorrendo usando o kubectl get
comando para obter os objetos CSR atuais em seu cluster.
kubectl get csr --field-selector=spec.signerName=kubernetes.io/kubelet-serving
Todas as CSRs de serviço devem estar no estado Approved,Issued
, o que indica que a CSR foi aprovada e emitiu um certificado assinado. As CSRs de serviço têm o nome de signatário kubernetes.io/kubelet-serving
.
NAME AGE SIGNERNAME REQUESTOR REQUESTEDDURATION CONDITION
csr-8mx4w 113s kubernetes.io/kube-apiserver-client-kubelet system:bootstrap:uoxr9r none Approved,Issued
csr-bchlj 111s kubernetes.io/kubelet-serving system:node:akswinp7000000 none Approved,Issued
csr-sb4wz 46m kubernetes.io/kubelet-serving system:node:akswinp6000000 none Approved,Issued
csr-zc4wt 46m kubernetes.io/kube-apiserver-client-kubelet system:bootstrap:ho7zyu none Approved,Issued
Verificar se o kubelet está usando um certificado obtido da inicialização TLS do servidor
Para confirmar se o kubelet do nó está usando um certificado de serviço assinado pela AC do cluster, use [kubectl debug
][kubectl-debug] para analisar o conteúdo do diretório de PKI do kubelet.
kubectl debug node/<node> -ti --image=mcr.microsoft.com/azurelinux/base/core:3.0 -- ls -l /host/var/lib/kubelet/kubelet-server-current.pem
Se existir um symlink kubelet-server-current.pem
, o kubelet terá inicializado/girado o próprio certificado de serviço por meio do processo de inicialização do TLS e será assinado pela AC do cluster.
Desabilitar a rotação de certificado de serviço do kubelet
Você pode desabilitar a rotação de certificado de serviço do kubelet atualizando o pool de nós usando o comando az aks nodepool update para especificar a marca aks-disable-kubelet-serving-certificate-rotation=true
e, em seguida, recriar a imagem dos nós. Uma recriação da imagem do nó pode ser feita por meio de uma atualização da imagem do nó ou uma escala do pool para 0 instância e, em seguida, fazer backup com o valor desejado.
az aks nodepool update --cluster-name myCluster --resource-group myResourceGroup --name mynodepool --tags aks-disable-kubelet-serving-certificate-rotation=true
Próximas etapas
Este artigo mostrou como girar manualmente e automaticamente seus certificados de cluster, CAs e SAs. Para obter mais informações, veja Melhores práticas para segurança de cluster e atualizações no AKS (Serviço de Kubernetes do Azure).
Azure Kubernetes Service