Alternar as chaves de segurança do cluster

Revezamento de chaves

A rotação de chaves é o ato de alterar o material criptográfico subjacente contido em uma chave de criptografia de chaves (KEK, na sigla em inglês). Ela pode ser acionada de forma automática como parte de uma rotação programada ou manual, geralmente após um incidente de segurança em que as chaves podem ter sido comprometidas. A rotação de chaves substitui apenas o campo na chave que contém os dados brutos de criptografia/criptografia.

Rotação automática de chaves

O serviço de gerenciamento de chaves (KMS, na sigla em inglês) da AWS é compatível com a rotação automática de chaves do KMS. Quando ativada, a AWS gera automaticamente novo material de chave criptográfica para sua chave uma vez por ano. Não é preciso realizar ações manuais.

Após uma rotação de chaves, o GKE na AWS criptografa cada novo Secret com a nova chave. Qualquer secret criado anteriormente ainda é descriptografado com a chave original. Por isso, a AWS mantém o material de chave mais antigo do CMK em perpetuidade, permitindo que DEKs antigas sejam descriptografadas quando os Secrets antigos forem lidos.

Use o comando a seguir para ver se uma chave do KMS tem a rotação automática ativada ou não:

aws kms get-key-rotation --key-id KMS_KEY_ID

Substitua KMS_KEY_ID pelo ID da chave do AWS KMS.

Para ativar a rotação automática de chaves, execute este comando:

aws kms enable-key-rotation --key-id KMS_KEY_ID

Rotação manual de chaves

Nesta seção, explicamos como alternar manualmente as chaves de configuração do plano de controle ou do pool de nós.

Chave de configuração do plano de controle

Para alternar manualmente a chave de configuração do plano de controle, execute as seguintes etapas:

  1. Crie uma nova chave do Cloud Key Management Service chamada. Salve o valor do ARN da chave KMS. Você precisará dele mais tarde.

  2. Verifique se o papel do IAM associado ao cluster tem permissões para criptografar e descriptografar usando a nova chave.

  3. Use o comando gcloud container aws clusters update para atualizar a chave de criptografia.

     gcloud container aws clusters update CLUSTER_NAME \
        --location=GOOGLE_CLOUD_LOCATION \
        --config-encryption-kms-key-arn=CONFIG_ENCRYPTION_KMS_KEY_ARN
    

    Substitua:

    • CLUSTER_NAME: o nome do cluster.
    • GOOGLE_CLOUD_LOCATION: a região compatível com o Google Cloud que gerencia seu cluster, por exemplo, us-west1
    • CONFIG_ENCRYPTION_KMS_KEY_ARN: sua nova chave KMS de ARN

Volume raiz do plano de controle

Para fazer a rotação manual da chave de volume raiz do plano de controle, execute as seguintes etapas:

  1. Crie uma nova chave do Cloud Key Management Service chamada. Salve o valor do ARN da chave KMS. Você precisará dele mais tarde.

  2. Verifique se o papel do IAM associado ao cluster tem permissões para criptografar e descriptografar usando a nova chave.

  3. Use o comando gcloud container aws clusters update para atualizar a chave de criptografia.

     gcloud container aws clusters update CLUSTER_NAME \
        --location=GOOGLE_CLOUD_LOCATION \
        --root-volume-kms-key-arn=ROOT_VOLUME_KMS_KEY_ARN
    

    Substitua:

    • CLUSTER_NAME: o nome do cluster.
    • GOOGLE_CLOUD_LOCATION: a região compatível com o Google Cloud que gerencia seu cluster, por exemplo, us-west1
    • ROOT_VOLUME_KMS_KEY_ARN: Nome de Recurso da Amazon (ARN, na sigla em inglês) da chave de KMS da AWS para criptografar o volume raiz

Chave de configuração do pool de nós

Para alternar manualmente a chave de configuração do pool de nós, execute as seguintes etapas:

  1. Crie uma nova chave do Cloud Key Management Service chamada.

  2. Verifique se o papel do IAM associado ao cluster tem permissões para criptografar e descriptografar usando a nova chave.

  3. Atualize o alias do KMS em uso:

     aws kms update-alias --alias-name KEY_ALIAS \
         --target-key-id CONFIG_ENCRYPTION_KMS_KEY_ARN
    

    Substitua:

    • KEY_ALIAS: alias da sua chave
    • CONFIG_ENCRYPTION_KMS_KEY_ARN: sua nova chave KMS de ARN
  4. Force o cluster a criptografar novamente todos os secrets do cluster usando a nova chave de criptografia:

     kubectl get secrets --all-namespaces -o json | \
     kubectl annotate --overwrite -f - encryption-key-rotation-time=`date +"%Y%m%d-%H%M%S"`
    
  5. Desative a antiga chave KMS da AWS. Para mais informações, consulte Como ativar e desativar chaves.

Volumes raiz do pool de nós

Para fazer a rotação manual da chave de volume raiz do pool de nós, execute as seguintes etapas:

  1. Crie uma nova chave do Cloud Key Management Service chamada.

  2. Verifique se o papel do IAM associado ao cluster tem permissões para criptografar e descriptografar usando a nova chave.

  3. Atualize o alias do KMS em uso:

     aws kms update-alias --alias-name KEY_ALIAS \
         --target-key-id ROOT_VOLUME_KMS_KEY_ARN
    

    Substitua:

    • KEY_ALIAS: alias da sua chave
    • ROOT_ENCRYPTION_KMS_KEY_ARN: sua nova chave KMS de ARN
  4. Atualize o pool de nós:

     gcloud container aws node-pools update NODE_POOL_NAME \
         --root-volume-kms-key-arn=ROOT_VOLUME_KMS_KEY_ARN
    

    Substitua:

    • NODE_POOL_NAME: nome do pool de nós
    • ROOT_VOLUME_KMS_KEY_ARN: Nome de Recurso da Amazon (ARN, na sigla em inglês) da chave de KMS da AWS para criptografar o volume raiz
  5. Desative a antiga chave KMS da AWS. Para mais informações, consulte Como ativar e desativar chaves.