Rode as chaves de segurança do cluster

Rotação de chaves

A rotação de chaves é o ato de alterar o material criptográfico subjacente contido numa chave de encriptação de chaves (KEK). Pode ser acionada automaticamente como parte de uma rotação agendada ou manualmente, normalmente após um incidente de segurança em que as chaves possam ter sido comprometidas. A rotação de chaves substitui apenas o campo único na chave que contém os dados da chave de encriptação/desencriptação não processados.

Rotação automática de chaves

O AWS Key Management Service (KMS) suporta a rotação automática de chaves do KMS. Quando ativada, a AWS gera automaticamente novo material de chaves criptográficas para a sua chave uma vez por ano. Não são necessárias ações manuais.

Após uma rotação de chaves, o GKE no AWS encripta cada novo segredo com a nova chave. Qualquer Secret criado anteriormente continua a ser desencriptado com a respetiva chave original. Por este motivo, a AWS mantém o material de chaves mais antigo das CMKs indefinidamente, o que permite descifrar as DEKs antigas quando os segredos antigos são lidos.

Pode ver se uma chave do KMS tem a rotação automática ativada ou não com o seguinte comando:

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

Substitua KMS_KEY_ID pelo ID da chave do AWS KMS.

Pode ativar a rotação automática de chaves executando este comando:

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

Rotação manual de chaves

Esta secção explica como rodar manualmente as chaves de configuração do plano de controlo ou do conjunto de nós.

Chave de configuração do plano de controlo

Para rodar manualmente a chave de configuração do plano de controlo, siga estes passos:

  1. Crie uma nova chave do Cloud Key Management Service. Guarde o valor do ARN da chave do KMS. Vai usá-lo mais tarde.

  2. Certifique-se de que a função da IAM associada ao cluster tem autorizações para encriptar e desencriptar com a nova chave.

  3. Use o comando gcloud container aws clusters update para atualizar a chave de encriptação.

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

    Substitua o seguinte:

    • CLUSTER_NAME: o nome do cluster
    • GOOGLE_CLOUD_LOCATION: a região suportada Google Cloud que gere o seu cluster, por exemplo, us-west1
    • CONFIG_ENCRYPTION_KMS_KEY_ARN: o ARN da sua nova chave do KMS

Volume raiz do plano de controlo

Para rodar manualmente a chave do volume raiz do plano de controlo, siga estes passos:

  1. Crie uma nova chave do Cloud Key Management Service. Guarde o valor do ARN da chave do KMS. Vai usá-lo mais tarde.

  2. Certifique-se de que a função da IAM associada ao cluster tem autorizações para encriptar e desencriptar com a nova chave.

  3. Use o comando gcloud container aws clusters update para atualizar a chave de encriptação.

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

    Substitua o seguinte:

    • CLUSTER_NAME: o nome do cluster
    • GOOGLE_CLOUD_LOCATION: a região suportada Google Cloud que gere o seu cluster, por exemplo, us-west1
    • ROOT_VOLUME_KMS_KEY_ARN: Amazon Resource Name (ARN) da chave do AWS KMS para encriptar o volume raiz

Chave de configuração do node pool

Para rodar manualmente a chave de configuração do conjunto de nós, siga estes passos:

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

  2. Certifique-se de que a função da IAM associada ao cluster tem autorizações para encriptar e desencriptar com a nova chave.

  3. Atualize o alias do KMS em utilização:

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

    Substitua o seguinte:

    • KEY_ALIAS: o alias da sua chave existente
    • CONFIG_ENCRYPTION_KMS_KEY_ARN: o ARN da sua nova chave do KMS
  4. Force o cluster a voltar a encriptar todos os segredos do cluster com a nova chave de encriptação:

     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 chave do AWS KMS antiga. Para mais informações, consulte o artigo Ativar e desativar chaves.

Volumes raiz do node pool

Para rodar manualmente a chave do volume raiz do conjunto de nós, siga estes passos:

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

  2. Certifique-se de que a função da IAM associada ao cluster tem autorizações para encriptar e desencriptar com a nova chave.

  3. Atualize o alias do KMS em utilização:

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

    Substitua o seguinte:

    • KEY_ALIAS: o alias da sua chave existente
    • ROOT_ENCRYPTION_KMS_KEY_ARN: o ARN da sua nova chave do KMS
  4. Atualize o node pool:

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

    Substitua o seguinte:

    • NODE_POOL_NAME: nome do node pool
    • ROOT_VOLUME_KMS_KEY_ARN: Amazon Resource Name (ARN) da chave do AWS KMS para encriptar o volume raiz
  5. Desative a chave do AWS KMS antiga. Para mais informações, consulte o artigo Ativar e desativar chaves.