AWS KMS - Key Rotation
Tags: aws, cloud, security, devops
Published: 2023-05-19 13:19:10

**Anotações sobre o AWS KMS - Key Rotation para ajudar na preparação das certificações AWS.**

Até o momento as anotações são para as certificações abaixo:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/se0sqtegn424nami6rz8.png)

---
- [Link oficial](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html)

---
##**Definição do fornecedor**
_O Key Rotation altera apenas o Key Material, que é o segredo criptográfico usado nas operações de criptografia. A KMS Keys é o mesmo recurso lógico, independentemente de quantas vezes o Key Material é alterado. As propriedades da KMS Key não mudam._


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f61etijty2gu678g6jtq.png)


---
##**Anotações gerais**

- **ARN e Alias das keys não são alterados mesmo após a rotação automática**
- **Não é necessário o usuário agendar, o KMS altera a CMK automaticamente**
- Não é necessário agendar para atualizar a key
- Para cada nova versão da key é cobrado $1/mês
- **Pode habilitar e desabilitar Key Rotation sempre na Primary Key**
- O Key Material gerado é rotacionado anualmente e o Key Material importado precisa ser feito manualmente.

---
##**Benefícios do Key Rotation**

- As propriedades da KMS key, incluindo Key ID, ARN Key, região, policies e permissões, não são alteradas quando a Key é rotacionada.
- Você não precisa alterar os aplicativos ou aliases que se referem ao Key ID ou ARN do KMS Key.
- A rotação do Key Material não afeta o uso da KMS Key em nenhum serviço da AWS.
- Depois de habilitar a Key Rotation, o AWS KMS alterna a KMS key automaticamente todos os anos. Você não precisa se lembrar ou agendar a atualização.

---
##**Automatic Key Rotation**
[Documentação oficial](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html#rotate-keys-how-it-works)

- **O AWS KMS oferece suporte à rotação de chave automática opcional apenas para customer managed keys.**
- **A Key Rotation automática é compatível apenas com KMS Keys de criptografia simétrica com Key Material gerado pelo AWS KMS (Origin = AWS_KMS)**
- A rotação automática de Keys não é suportada nos seguintes tipos de KMS Keys, mas você pode girar essas Keys manualmente.
- AWS não deleta nenhum Key Material após a rotação, só é deletado quando deleta a KMS Key.

- _1. KMS Keys assimétricas_
- _2. KMS Keys em armazenamentos de custom key_
- _3. KMS Keys com key material importado_
- _4. KMS Keys HMAC_


**Customer Master Key (_Chaves gerenciadas pelo cliente_)**
- Vem desabilitado por padrão
- Rotação de 1 ano (_365 dias_)
- Pode ser Habilitar ou Desabilitar

**Amazon Managed Key (_Chaves gerenciadas pela AWS_)** 
- Não pode Habilitar ou Desabilitar o Key Rotation
- Rotação de 1 ano (_365 dias_)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/172i9ix9ye97j9qvj6wf.png)



**Nota AWS para Amazon Managed Key**
[Documentação oficial](https://docs.aws.amazon.com/pt_br/kms/latest/developerguide/rotate-keys.html)


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yy13xis1z6f3zyuocosn.png)

**AWS owned keys (_Chaves de propriedade da AWS_)**
- Não pode habilitar ou desabilitar
- A estratégia de rotação de chaves é determinada pelo serviço da AWS que cria e gerencia a chave.



---
##**Manual Key Rotation**
[Documentação oficial](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html#rotate-keys-manually)

- Ao alternar as chaves KMS manualmente, também precisa atualizar as referências ao KMS key ID ou ao Key ARN em seus aplicativos.
- Cria CMK, atualiza o Alias para nova CMK

**Usando Alias**
- Associa um nome amigável a uma KMS Key, podem facilitar esse processo. 
- Use um alias para se referir a uma KMS Key em seus aplicativos. - Então, quando você quiser alterar a KMS Key que o aplicativo usa, em vez de editar o código do aplicativo, **altere a KMS Key ID de destino do alias.**
- Alias que apontam para a versão mais recente de uma KMS Key girada manualmente são uma boa solução para as operações `DescribeKey `, `Encrypt `, `GenerateDataKey `, `GenerateDataKeyPair `, `GenerateMac `e `Sign `. 
- **Alias não são permitido**s em operações que gerenciam KMS Keys, como `DisableKey `ou `ScheduleKeyDeletion `.
- Ao chamar a operação `Decrypt `em KMS Keys de criptografia simétrica giradas manualmente, omita o parâmetro `KeyId  `do comando. O AWS KMS usa automaticamente a KMS Key que criptografou o texto cifrado.
- O parâmetro `KeyId ` é necessário ao chamar `Decrypt` ou verificar com uma KMS Key assimétrica ou chamar `VerifyMac `com uma KMS Key HMAC. 
- Essas solicitações falham quando o valor do parâmetro `KeyId ` é um alias que não aponta mais para a KMS Key que executou a operação criptográfica, como quando uma chave é girada manualmente. 
- Para evitar esse erro, você deve rastrear e especificar a KMS Key correta para cada operação.

**Pode ser usado em Keys que não tem Key Rotation automático**
- _1. KMS Keys assimétricas_
- _2. KMS Keys em armazenamentos de custom key_
- _3. KMS Keys com key material importado_
- _4. KMS Keys HMAC_


---
##**Referências**
- [AWS KMS Key Rotation - Automatic and manual key rotation](https://www.youtube.com/watch?v=kS8NZnmGTmQ)
- [04 - KMS Key Rotation | Automatic & Manual KMS Key Rotation | Key Alias](https://www.youtube.com/watch?v=r8k2s7uhdgs)
- [AWS KMS Key Rotation Options | Demo | Customer Managed Keys | AWS Managed Keys | AWS Owned Keys](https://www.youtube.com/watch?v=bTPoSaF3grY)