> ## Documentation Index
> Fetch the complete documentation index at: https://docs.basaltic.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# Rotação de chaves

> Rotacione o material mantendo a identidade da chave e o acesso a dados e assinaturas anteriores.

A rotação cria uma nova versão do material na mesma chave, preservando ID e CRN. Políticas IAM, tags e aplicações que referenciam a chave continuam funcionando. Chaves de clientes AES-256, RSA-2048, RSA-4096 e ECDSA-P256 permitem rotação automática e sob demanda. Chaves de sistema gerenciadas pela plataforma têm um ciclo de vida próprio.

O material anterior continua disponível para descriptografia e verificação de assinaturas. A rotação não reescreve dados armazenados, não substitui chaves de dados e não revoga assinaturas anteriores. A exclusão definitiva da chave destrói todas as versões.

<Note>
  Os exemplos da CLI exigem `basaltic` v0.26.0 ou posterior. Os exemplos em Go exigem `sdk-go` v0.30.0 ou posterior.
</Note>

## Configure a rotação automática

A rotação automática começa desativada. Escolha um período de 90 a 2560 dias inteiros; omitir `rotation_period_days` seleciona 365 dias. A primeira rotação vence um período após a ativação. Alterar o período redefine essa data; salvar a mesma política preserva o agendamento.

<Tabs>
  <Tab title="Console">
    Abra **KMS**, selecione a chave e abra **Key rotation**. Em **Automatic rotation**, escolha **Enabled**, defina **Rotation period (days)** e escolha **Save**. O cartão mostra a versão atual do material e a próxima rotação agendada.
  </Tab>

  <Tab title="API">
    ```http theme={null}
    PUT https://kms.sa-saopaulo-1.basaltic.sh/v1/keys/{key_id}/rotation
    { "enabled": true, "rotation_period_days": 90 }
    ```
  </Tab>

  <Tab title="CLI">
    ```bash theme={null}
    basaltic kms key set-rotation <key-id> --enabled=true --rotation-period-days 90
    ```
  </Tab>

  <Tab title="Go">
    ```go theme={null}
    policy, err := kms.New(cfg).SetKeyRotation(ctx, keyID, &kms.SetKeyRotationRequest{
        Enabled: true,
        RotationPeriodDays: basaltic.Int(90),
    })
    ```
  </Tab>
</Tabs>

Defina `enabled` como `false` para parar a rotação automática. Envie também o período existente para preservá-lo. Isso cancela solicitações automáticas que ainda não começaram; uma rotação já enviada pode terminar.

Somente chaves de clientes habilitadas podem alterar a política ou rotacionar. Uma chave desabilitada mantém o agendamento, mas é ignorada. Ao habilitá-la novamente, um agendamento vencido produz uma rotação e retoma a cadência original. Cancelar a exclusão deixa a chave desabilitada; habilite-a para retomar a rotação.

## Rotacione agora

A rotação sob demanda não altera o agendamento automático. Gere um token por operação lógica e reutilize-o em todas as tentativas, inclusive após um timeout. O token permanece associado à rotação durante toda a vida da chave. Sem ele, cada solicitação representa uma nova intenção de rotação.

<Tabs>
  <Tab title="Console">
    Em **KMS**, abra a chave e **Key rotation**, depois escolha **Rotate now**. Confirme **Rotate key material**. Abra a aba **Version history** para consultar o resultado na tabela de largura total.
  </Tab>

  <Tab title="API">
    ```http theme={null}
    POST https://kms.sa-saopaulo-1.basaltic.sh/v1/keys/{key_id}/rotate
    Idempotency-Key: <unique-request-token>
    ```
  </Tab>

  <Tab title="CLI">
    ```bash theme={null}
    basaltic kms key rotate <key-id> --idempotency-key <unique-request-token>
    ```
  </Tab>

  <Tab title="Go">
    ```go theme={null}
    rotation, err := kms.New(cfg).RotateKeyOnDemand(ctx, keyID,
        basaltic.WithIdempotencyKey(requestToken))
    ```
  </Tab>
</Tabs>

## Consulte o progresso e o histórico

`200` retorna uma solicitação concluída ou cancelada. `202` indica uma solicitação registrada de forma durável, ainda pendente, em andamento ou aguardando reconciliação. Consulte pelo ID da rotação. O histórico mostra as mais recentes primeiro; use `meta.marker` como o próximo `marker` enquanto `meta.has_more` for verdadeiro.

```http theme={null}
GET /v1/keys/{key_id}/rotation
GET /v1/keys/{key_id}/rotations/{rotation_id}
GET /v1/keys/{key_id}/rotations?limit=20
```

| Status | Significado |
| - | - |
| `pending` | Solicitação durável aguardando início. |
| `in_progress` | A rotação do material foi enviada. |
| `succeeded` | Uma nova versão do material está disponível. |
| `failed` | A solicitação foi cancelada antes do envio, por exemplo porque a chave foi desabilitada. |
| `reconciliation_required` | O resultado ainda é desconhecido. As consultas continuam; outra rotação fica bloqueada para evitar duplicação. |

Se `reconciliation_required` persistir, contate o suporte com o ID da chave e o ID da rotação. Trocar o token não resolve essa situação. Outra solicitação enquanto há trabalho ativo retorna `409 KMS_ROTATION_IN_PROGRESS`.

## Reencapsule dados criptografados

Os dados existentes continuam descriptografáveis sem migração. Para atualizar um texto cifrado ou uma chave de dados encapsulada para a versão atual, chame `rewrap` com a mesma chave e armazene o resultado. Nenhum texto em claro é retornado. Em envelopes com AAD, o AAD original e o conteúdo criptografado permanecem iguais; o mesmo AAD continua necessário para descriptografar. Rewrap não valida o conteúdo do envelope nem seu AAD.

<Tabs>
  <Tab title="Console">
    O console gerencia políticas e histórico de rotação. Reencapsule dados pela API, CLI ou SDK.
  </Tab>

  <Tab title="API">
    ```http theme={null}
    POST /v1/keys/{key_id}/rewrap
    { "ciphertext": "<stored-base64-ciphertext>" }
    ```
  </Tab>

  <Tab title="CLI">
    ```bash theme={null}
    basaltic kms key rewrap <key-id> --ciphertext <stored-base64-ciphertext>
    ```
  </Tab>

  <Tab title="Go">
    ```go theme={null}
    updated, err := kms.New(cfg).Rewrap(ctx, keyID, &kms.RewrapRequest{
        Ciphertext: storedCiphertext,
    })
    ```
  </Tab>
</Tabs>

## Assinaturas e chaves públicas

Guarde `key_version` retornado por Sign junto da assinatura e do algoritmo. Passe-o a Verify ou a `GET /v1/keys/{key_id}/public-key?key_version=1` para verificação offline. Omitir a versão em Verify testa as versões públicas preservadas para compatibilidade com assinaturas antigas. Omiti-la na consulta da chave pública retorna a versão atual, que pode ser diferente daquela que assinou uma mensagem anterior.

Consulte [assinatura e verificação](/pt/kms/signing) e [permissões do KMS](/pt/kms/permissions). Gerenciamento de rotação, assinatura, consulta de chave pública e reencapsulamento usam ações IAM distintas.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.