Uma conta de serviço do Kubernetes (KSA) fornece uma identidade para processos executados num pod.
As contas de serviço do Kubernetes são diferentes das Google Cloud contas de serviço que as aplicações usam para fazer chamadas autorizadas às Google Cloud APIs.
O Google Distributed Cloud usa uma chave criptográfica privada para assinar os tokens KSA que emite para os pods. Usa a chave pública correspondente para validar os tokens quando os pods enviam pedidos para o servidor da API Kubernetes. Quando um pod usa o Workload Identity para chamar APIs,usa a mesma chave pública para autenticar a identidade do pod. Google Cloud Google Cloud
Durante a criação do cluster de utilizadores, o Google Distributed Cloud gera as chaves privadas e públicas. Também durante a criação do cluster, o Google Distributed Cloud regista o cluster numa frota e fornece a chave pública ao Google Cloud.
Mais tarde, pode rodar o par de chaves privadas/públicas. A rotação emite automaticamente novos tokens assinados pela nova chave privada. No final da rotação, o cluster tem uma nova chave privada, uma nova chave pública e tokens atualizados. Além disso, Google Cloud tem a nova chave pública.
Tokens associados e tokens antigos
Um pod pode usar um token antigo ou um token associado para autenticação e autorização quando chama o servidor da API Kubernetes. Os tokens associados têm uma duração limitada e são distribuídos aos pods através de volumes projetados. Os tokens antigos nunca expiram e são mantidos em secrets do Kubernetes. Recomendamos tokens associados porque são mais seguros.
Os tokens associados e os tokens antigos são atualizados durante uma rotação de chaves.
Limitações
- Se criou o cluster com
enableAdvancedCluster
definido comotrue
(o que é necessário para configurar domínios de topologia), a rotação de chaves não é suportada.
Inicie uma rotação de chaves
Antes de iniciar uma rotação de chaves, considere estes pontos:
Durante uma alteração de chave, não pode iniciar outra alteração de chave, alteração da autoridade de certificação nem atualização do cluster.
Não é possível pausar nem reverter a rotação de chaves. Todas as chaves antigas são eliminadas.
Uma rotação de chaves elimina os nós do cluster existentes e cria novos nós.
Para iniciar uma rotação de chaves:
gkectl update credentials ksa-signing-key rotate \ --config USER_CLUSTER_CONFIG \ --kubeconfig ADMIN_CLUSTER_KUBECONIFG \ [--skip-prompt]
Substitua o seguinte:
USER_CLUSTER_CONFIG: o caminho do ficheiro de configuração do cluster de utilizadores
ADMIN_KUBECONFIG_FILE: o caminho do ficheiro kubeconfig do cluster de administrador
Inclua --skip-prompt
se não quiser receber um pedido.
Veja o estado de uma rotação de chaves
Para ver o estado de uma rotação de chaves:
gkectl update credentials ksa-signing-key status \ --config USER_CLUSTER_CONFIG \ --kubeconfig ADMIN_CLUSTER_KUBECONIFG
Se a rotação de chaves já tiver sido concluída, é apresentada uma mensagem semelhante a esta:
State of KSASigningKeyRotation with KSASigningKeyVersion 2 is - status: True, reason: KSASigningKeyRotationCompleted, message:{"tokenVersion":2,"privateKeyVersion":2,"publicKeyVersions":[2]}
Se a rotação da chave de assinatura da KSA ainda estiver em curso, é apresentada uma mensagem semelhante a esta:
State of KSASigningKeyRotation with KSASigningKeyVersion 2 is - status: False, reason: KSASigningKeyRotationProcessedReason, message:{"tokenVersion":2,"privateKeyVersion":2,"publicKeyVersions":[1,2]}