Alternar as chaves de criptografia do disco de inicialização do etcd e do plano de controle

Nesta página, mostramos como alternar as chaves de criptografia do disco de inicialização do etcd e do plano de controle que você configurou para o GKE control plane authority. Este documento é destinado a administradores de cluster e engenheiros de segurança.

Antes de ler este documento, conheça os seguintes conceitos da GKE control plane authority:

Planejar rotações de chaves

Neste documento, mostramos como alternar os seguintes componentes de credencial no plano de controle:

  • A chave de criptografia para o etcd e os discos de inicialização do plano de controle.
  • A chave de criptografia para o backup interno do etcd que o Google Cloud usa para recuperação de desastres.

Também é possível alternar as autoridades certificadoras (CAs) gerenciadas pelo cliente e as chaves de assinatura da conta de serviço que você configura com a GKE control plane authority. Para mais informações, consulte Alternar as CAs e as chaves de assinatura do plano de controle gerenciadas pelo cliente.

As chaves no Cloud Key Management Service (Cloud KMS) não expiram. Se a organização tiver um requisito de segurança para rotação de chaves, faça a rotação manual. Para minimizar as interrupções nas cargas de trabalho em execução, não configure a rotação automática de chaves para essas chaves.

Quando você faz a rotação das chaves de criptografia dos discos de inicialização do plano de controle e do etcd, o GKE cria um novo disco criptografado usando a nova chave. Para clusters regionais, essa operação não tem tempo de inatividade devido ao plano de controle replicado. Para clusters zonais, o plano de controle fica indisponível até que o novo disco esteja disponível.

Antes de começar

Antes de começar, verifique se você realizou as tarefas a seguir:

  • Ative a API Google Kubernetes Engine.
  • Ativar a API Google Kubernetes Engine
  • Para usar a Google Cloud CLI nesta tarefa, instale e inicialize a CLI gcloud. Se você instalou a CLI gcloud anteriormente, instale a versão mais recente executando o comando gcloud components update. Talvez as versões anteriores da CLI gcloud não sejam compatíveis com a execução dos comandos neste documento.
  • Ter um cluster que use o disco de inicialização do plano de controle e a criptografia etcd e execute o GKE versão 1.35.2-gke.1842000 ou mais recente.

  • Identifique os IDs dos seguintes projetos do Google Cloud :

    • Projeto de chave: o projeto que contém os recursos do Cloud KMS.
    • Projeto de cluster: o projeto que contém o cluster do GKE.
  • Para realizar as tarefas de validação neste documento, verifique se o registro de auditoria de acesso a dados DATA_READ está ativado para a API Cloud Key Management Service (KMS). Para mais informações, consulte Ativar registros de auditoria de acesso a dados.

Papéis e permissões necessárias

Para receber as permissões necessárias para alternar as CAs e as chaves gerenciadas pelo cliente, peça ao administrador para conceder a você os seguintes papéis do IAM:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.

Limitações

É possível atualizar os clusters para novas versões de chaves atuais, mas não é possível atualizá-los para usar chaves totalmente novas nessas operações de criptografia.

Conceder papéis do IAM ao agente de serviço do GKE

Para alternar as chaves de criptografia de discos de inicialização e etcd, conceda o papel de Usuário de chave de criptografia do KMS do Kubernetes Engine (roles/container.cloudKmsKeyUser) nas chaves de criptografia do projeto de chave ao agente de serviço do GKE no projeto do cluster:

gcloud kms keys add-iam-policy-binding KCP_DISK_KEY_NAME \
    --keyring=KEYRING_NAME \
    --location=LOCATION \
    --member="serviceAccount:service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com" \
    --role=roles/container.cloudKmsKeyUser \
    --project=KEY_PROJECT_ID

Substitua:

  • KCP_DISK_KEY_NAME: o nome da chave de criptografia para os discos de inicialização do plano de controle e os discos etcd.
  • KEYRING_NAME: o nome do keyring que contém a chave.
  • LOCATION: o Google Cloud local do keyring. Precisa ser igual ao local do cluster. Para uma lista de regiões, filtre "Região" na tabela de locais do Cloud KMS.
  • CLUSTER_PROJECT_NUMBER: o número numérico do projeto do cluster.
  • KEY_PROJECT_ID: o ID do projeto do seu projeto de chave.

Alternar a chave para o etcd e os discos de inicialização do plano de controle

  1. Crie uma nova versão de chave primária para o disco de inicialização e a chave de criptografia do etcd:

    gcloud kms keys versions create \
        --key=KCP_DISK_KEY_NAME \
        --keyring=KEYRING_NAME \
        --location=LOCATION \
        --project=KEY_PROJECT_ID \
        --primary
    

    Pode levar até 10 minutos para que as mudanças sejam propagadas no projeto.

  2. Encontre a versão de patch atual do plano de controle do cluster:

    gcloud container clusters describe CLUSTER_NAME \
        --location=LOCATION \
        --format='value(currentMasterVersion)'
    

    Substitua:

    • CLUSTER_NAME: o nome do cluster do GKE.
    • LOCATION: o local do plano de controle do cluster do GKE, como us-central1.
  3. Faça upgrade do plano de controle do cluster para a mesma versão que ele já usa.

    gcloud container clusters upgrade CLUSTER_NAME \
        --master \
        --location=LOCATION \
        --cluster-version=CONTROL_PLANE_VERSION \
        --project=CLUSTER_PROJECT_ID
    

    Substitua:

    • CONTROL_PLANE_VERSION: a versão do plano de controle do cluster da saída da etapa anterior.
    • CLUSTER_PROJECT_ID: o ID do projeto do seu projeto de cluster.

Depois que a operação de upgrade do plano de controle for concluída, o cluster usará a nova versão da chave para criptografar os discos de inicialização do plano de controle e todos os discos etcd.

Alternar a chave de criptografia de backup interno do etcd

Nesta seção, mostramos como alternar a chave de criptografia do backup interno do etcd, que o Google Cloud usa para fins de recuperação de desastres. É possível configurar a rotação automática para essa chave, mas recomendamos que você faça a rotação manual. Depois que você fizer a rotação da chave, o cluster vai usar a nova versão dela para criptografar novos backups internos do etcd.

Os backups internos do etcd usam a versão da chave primária e ocorrem nos seguintes intervalos:

  • A cada 30 minutos para clusters zonais.
  • A cada 10 minutos para clusters do Autopilot e clusters regionais padrão.

Depois de alternar a chave, não desative nem destrua imediatamente a versão anterior da chave. Aguarde até que o GKE tenha tempo suficiente para criar novos backups internos do etcd que usem a nova versão da chave.

  • Crie uma nova versão de chave primária para a chave de criptografia de backup interno do etcd:

    gcloud kms keys versions create \
        --key=ETCD_BACKUP_KEY_NAME \
        --keyring=KEYRING_NAME \
        --location=LOCATION \
        --project=KEY_PROJECT_ID \
        --primary
    

    Substitua:

    • ETCD_BACKUP_KEY_NAME: o nome da chave de criptografia de backup interno do etcd.
    • KEYRING_NAME: o nome do keyring que contém a chave.
    • LOCATION: o Google Cloud local do keyring. Precisa ser igual ao local do cluster. Para uma lista de regiões, filtre "Região" na tabela de locais do Cloud KMS.
    • KEY_PROJECT_ID: o ID do projeto do seu projeto de chave.

A seguir