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:
Crie uma nova chave do Cloud Key Management Service. Guarde o valor do ARN da chave do KMS. Vai usá-lo mais tarde.
Certifique-se de que a função da IAM associada ao cluster tem autorizações para encriptar e desencriptar com a nova chave.
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 clusterGOOGLE_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:
Crie uma nova chave do Cloud Key Management Service. Guarde o valor do ARN da chave do KMS. Vai usá-lo mais tarde.
Certifique-se de que a função da IAM associada ao cluster tem autorizações para encriptar e desencriptar com a nova chave.
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 clusterGOOGLE_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:
Certifique-se de que a função da IAM associada ao cluster tem autorizações para encriptar e desencriptar com a nova chave.
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 existenteCONFIG_ENCRYPTION_KMS_KEY_ARN
: o ARN da sua nova chave do KMS
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"`
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:
Certifique-se de que a função da IAM associada ao cluster tem autorizações para encriptar e desencriptar com a nova chave.
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 existenteROOT_ENCRYPTION_KMS_KEY_ARN
: o ARN da sua nova chave do KMS
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 poolROOT_VOLUME_KMS_KEY_ARN
: Amazon Resource Name (ARN) da chave do AWS KMS para encriptar o volume raiz
Desative a chave do AWS KMS antiga. Para mais informações, consulte o artigo Ativar e desativar chaves.