Rotação de certificados no Azure Kubernetes Service (AKS)

Azure Kubernetes Service (AKS) utiliza certificados para autenticação com muitos dos seus componentes. Os clusters preparados para RBAC criados após março de 2022 estão ativados com a rotação automática de certificados. Poderá ter de rodar periodicamente esses certificados por motivos de segurança ou política. Por exemplo, pode ter uma política para rodar todos os certificados a cada 90 dias.

Nota

A rotação automática de certificados só está ativada por predefinição para clusters do AKS compatíveis com RBAC.

Este artigo mostra-lhe como funciona a rotação de certificados no cluster do AKS.

Antes de começar

Este artigo requer a versão 2.0.77 ou posterior da CLI do Azure. Executar az --version para localizar a versão. Se precisar de instalar ou atualizar, veja Install Azure CLI (Instalar o Azure CLI).

Certificados do AKS, Autoridades de Certificação e Contas de Serviço

O AKS gera e utiliza os seguintes certificados, Autoridades de Certificação (AC) e Contas de Serviço (SA):

  • O servidor da API do AKS cria uma AC denominada AC de Cluster.
  • O servidor de API tem uma AC de Cluster, que assina certificados para comunicação unidirecional do servidor de API para kubelets.
  • Cada kubelet cria um Pedido de Assinatura de Certificados (CSR), que a AC de Cluster assina, para comunicação do kubelet para o servidor de API.
  • O agregador de API utiliza a AC de Cluster para emitir certificados para comunicação com outras APIs. O agregador de API também pode ter a sua própria AC para emitir esses certificados, mas atualmente utiliza a AC do Cluster.
  • Cada nó utiliza um token SA, que a AC de Cluster assina.
  • O kubectl cliente tem um certificado para comunicar com o cluster do AKS.

A Microsoft mantém todos os certificados mencionados nesta secção, exceto o certificado de cluster.

Nota

  • Os clusters do AKS criados antes de maio de 2019 têm certificados que expiram após dois anos.
  • Os clusters do AKS criados após maio de 2019 têm certificados de AC de Cluster que expiram após 30 anos.

Pode verificar quando o cluster foi criado com o kubectl get nodes comando, que lhe mostra a Idade dos conjuntos de nós.

Verificar as datas de expiração do certificado

Verificar a data de expiração do certificado de cluster

  • Verifique a data de expiração do certificado de cluster com o kubectl config view comando .

    kubectl config view --raw -o jsonpath="{.clusters[?(@.name == '')].cluster.certificate-authority-data}" | base64 -d | openssl x509 -text | grep -A2 Validity
    

Verificar a data de expiração do certificado do servidor de API

  • Verifique a data de expiração do certificado do servidor de API com o seguinte curl comando.

    curl https://{apiserver-fqdn} -k -v 2>&1 | grep expire
    

Verificar a data de expiração do certificado de nó do agente VMAS

  • Verifique a data de expiração do certificado de nó do agente VMAS com o az vm run-command invoke comando .

    az vm run-command invoke -g MC_rg_myAKSCluster_region -n vm-name --command-id RunShellScript --query 'value[0].message' -otsv --scripts "openssl x509 -in /etc/kubernetes/certs/apiserver.crt -noout -enddate"
    

Verificar a data de expiração do certificado de nó do agente do Conjunto de Dimensionamento de Máquinas Virtuais

  • Verifique a data de expiração do certificado de nó do agente do Conjunto de Dimensionamento de Máquinas Virtuais com o az vm run-command invoke comando .

    az vmss run-command invoke --resource-group "MC_rg_myAKSCluster_region" --name "vmss-name" --command-id RunShellScript --instance-id 1 --scripts "openssl x509 -in /etc/kubernetes/certs/apiserver.crt -noout -enddate" --query "value[0].message"
    

Rotação Automática do Certificado

Para o AKS rodar automaticamente certificados não CA, o cluster tem de ter o Bootstrapping TLS, que está ativado por predefinição em todas as regiões do Azure.

Nota

  • Se tiver um cluster existente, terá de atualizar esse cluster para ativar a Rotação Automática de Certificados.
  • Não desative o Bootstrap para manter a rotação automática ativada.
  • Se o cluster estiver num estado parado durante a rotação do certificado automático, apenas os certificados do plano de controlo são rodados. Neste caso, deve recriar o conjunto de nós após a rotação do certificado para iniciar a rotação do certificado do conjunto de nós.

Para todos os clusters do AKS criados ou atualizados após março de 2022, Azure Kubernetes Service roda automaticamente certificados não CA no plano de controlo e nos nós de agente dentro de 80% do tempo válido do certificado de cliente antes de expirarem sem tempo de inatividade para o cluster.

Como verificar se o conjunto de nós do agente atual está ativado para o Bootstrapping do TLS?

  1. Verifique se o cluster tem o Bootstrapping TLS ativado ao navegar para um para os seguintes caminhos:

    • Num nó do Linux: /var/lib/kubelet/bootstrap-kubeconfig ou /host/var/lib/kubelet/bootstrap-kubeconfig
    • Num nó do Windows: C:\k\bootstrap-config

    Para obter mais informações, veja Ligar a Azure Kubernetes Service nós de cluster para manutenção ou resolução de problemas.

    Nota

    O caminho do ficheiro pode mudar à medida que as versões do Kubernetes evoluem.

  2. Assim que uma região estiver configurada, crie um novo cluster ou atualize um cluster existente para definir a rotação automática para o certificado de cluster. Tem de atualizar o plano de controlo e o conjunto de nós para ativar esta funcionalidade.

Rodar manualmente os certificados do cluster

Aviso

Rodar os certificados com az aks rotate-certs recria todos os 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.

  1. Ligue-se ao cluster com o az aks get-credentials comando .

    az aks get-credentials -g $RESOURCE_GROUP_NAME -n $CLUSTER_NAME
    
  2. Rode todos os certificados, ACs e SAs no cluster com o az aks rotate-certs comando .

    az aks rotate-certs -g $RESOURCE_GROUP_NAME -n $CLUSTER_NAME
    

    Importante

    A conclusão poderá demorar até 30 minutos az aks rotate-certs . Se o comando falhar antes de concluir, utilize az aks show para verificar se o estado do cluster é Rotação de Certificados. Se o cluster estiver num estado de falha, volte a executar az aks rotate-certs para rodar os certificados novamente.

  3. Verifique se os certificados antigos já não são válidos com qualquer kubectl comando, como kubectl get nodes.

    kubectl get nodes
    

    Se não tiver atualizado os certificados utilizados pelo kubectl, verá um erro semelhante ao seguinte resultado de exemplo:

    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")
    
  4. Atualize o certificado utilizado com kubectl o az aks get-credentials comando com o --overwrite-existing sinalizador.

    az aks get-credentials -g $RESOURCE_GROUP_NAME -n $CLUSTER_NAME --overwrite-existing
    
  5. Verifique se os certificados foram atualizados com o kubectl get comando .

    kubectl get nodes
    

    Nota

    Se tiver serviços que sejam executados sobre o AKS, poderá ter de atualizar os certificados.

Passos seguintes

Este artigo mostrou-lhe como rodar automaticamente os seus certificados de cluster, ACs e SAs. Para obter mais informações, veja Melhores práticas para a segurança do cluster e atualizações no Azure Kubernetes Service (AKS).