Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Central de ajuda/ Cloud Container Engine/ Guia de usuário/ Permissões/ Melhoria da segurança do token da conta de serviço
Atualizado em 2024-11-28 GMT+08:00

Melhoria da segurança do token da conta de serviço

Em clusters anteriores à v1.21, um token é obtido montando o segredo da conta de serviço em um pod. Os tokens obtidos dessa maneira são permanentes. Essa abordagem não é mais recomendada a partir da versão 1.21. As contas de serviço interromperão a criação automática de segredos em clusters a partir da versão 1.25.

Em clusters da versão 1.21 ou posterior, você pode usar a API TokenRequest para obter o token e usar o volume projetado para montar o token no pod. Tais tokens são válidos por um período fixo (uma hora por padrão). Antes da expiração, o Kubelet atualiza o token para garantir que o pod sempre use um token válido. Quando o pod de montagem é excluído, o token se torna automaticamente inválido. Essa abordagem é implementada pelo recurso BoundServiceAccountTokenVolume para melhorar a segurança do token da conta de serviço. Clusters da v1.21 ou posterior habilitam essa abordagem por padrão.

Para uma transição suave, a comunidade estende o período de validade do token para um ano por padrão. Após um ano, o token se torna inválido e os clientes que não suportam o recarregamento de certificados não podem acessar o servidor da API. Recomenda-se que os clientes de versões anteriores sejam atualizados o mais rápido possível. Caso contrário, podem ocorrer falhas de serviço.

Se você usar um cliente do Kubernetes de uma versão a ser desatualizada, o recarregamento do certificado poderá falhar. As versões das bibliotecas de cliente de Kubernetes oficialmente suportadas capazes de recarregar tokens são as seguintes:

  • Go: >= v0.15.7
  • Python: >= v12.0.0
  • Java: >= v9.0.0
  • Javascript: >= v0.10.3
  • Ruby: master branch
  • Haskell: v0.3.0.0
  • C#: >= 7.0.5

Para mais detalhes, visite https://github.com/kubernetes/enhancements/tree/master/keps/sig-auth/1205-bound-service-account-tokens.

Se você precisar de um token que nunca expire, também poderá gerenciar manualmente segredos para contas de serviço. Embora um token de conta de serviço permanente possa ser criado manualmente, é aconselhável usar um token de curta duração chamando a API TokenRequest para maior segurança.

Diagnóstico

Execute as seguintes etapas para verificar os clusters de CCE v1.21 ou posterior:

  1. Verifique as versões de complemento.
    • Se você estiver usando o complemento prometheus v2.23.34 ou anterior, atualize-o para v2.23.34 ou posterior.
    • Se você estiver usando o complemento npd v1.15.0 ou anterior, atualize-o para a versão mais recente.
  2. Use o kubectl para conectar-se ao cluster e execute o comando kubectl get --raw "/metrics" | grep stale para obter as métricas. Verifique a métrica chamada serviceaccount_stale_tokens_total.

    Se o valor for maior que 0, algumas cargas de trabalho no cluster podem estar usando uma versão de client-go anterior. Nesse caso, verifique se esse problema ocorre nas aplicações implementados. Se sim, atualize o client-go para a versão especificada pela comunidade o mais rápido possível. A versão deve ser pelo menos duas versões principais do cluster do CCE. Por exemplo, se a versão do cluster for 1.23, a versão da biblioteca de dependência do Kubernetes deve ser pelo menos 1.19.