> ## 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.

# Cifrado bajo su propia clave

> Enlace de un secreto a una clave KMS suya, qué cambia y por qué las versiones no pueden moverse entre claves.

<a id="encrypting-under-your-own-key" />

## Cifrado bajo su propia clave

De forma predeterminada, las versiones de un secreto se cifran con una clave administrada por la plataforma. Enlace el secreto a una de sus propias claves [KMS](/es/kms) al crearla para usarla en su lugar:

<Tabs>
  <Tab title="Console">
    En **Create Secret**, abra la tarjeta **Encryption** y elija una clave en **Encryption key** en lugar de **Platform-managed key (default)**.

    El selector ofrece sus claves simétricas habilitadas (`aes-256`) con el uso de `encrypt_decrypt` en la región seleccionada.
  </Tab>

  <Tab title="API">
    ```bash theme={null}
    POST /v1/secrets
    {
      "name": "prod/api/stripe-key",
      "value": "c3VwZXItc2VjcmV0LXZhbHVl",
      "kms_key": "crn:kms:sa-saopaulo-1:acme:key/secrets-key"
    }
    ```
  </Tab>

  <Tab title="CLI">
    <Note>The CLI does not yet support creating a secret with `kms_key`.
    Use the Console or API for this operation.</Note>
  </Tab>

  <Tab title="Go">
    <Note>The Go SDK does not yet support creating a secret with `kms_key`.
    Use the Console or API for this operation.</Note>
  </Tab>
</Tabs>

La clave debe ser una de las tuyas, en la misma región, `enabled`, y fijada a `encrypt_decrypt`. Pase su UUID, CRN completo o nombre de ámbito de cuenta en `kms_key`. La vinculación mantiene la identidad de clave original incluso si su nombre se reutiliza después de la eliminación. Una clave de reemplazo no puede descifrar el secreto original.

<Warning>
  También debe ser **simétrico — `aes-256`**. Una clave RSA con el uso de `encrypt_decrypt` es rechazada con `400 KMS_INVALID_KEY_SPEC`, porque cada versión está sellada con la identidad del secreto vinculada como contexto de cifrado y RSA-OAEP no tiene dónde llevar una. Aceptar la clave eliminaría ese enlace silenciosamente, por lo que se rechaza en la creación.
</Warning>

<a id="what-it-changes" />

### Lo que cambia

Enlazar un secreto a tu clave no cambia la superficie de la API — las lecturas y escrituras de `value` se ven idénticas. Lo que cambia es que **la tecla se convierte en un control que se sostiene**:

* Deshabilitar la clave y las lecturas comienzan a fallar con `409 KMS_KEY_DISABLED`. Ese error viaja a usted como él mismo, no como un `500` — el estado de la clave es suyo, y la reactivación de la clave restaura las lecturas.
* Programar la clave para su eliminación y las lecturas fallan con `409 KMS_KEY_PENDING_DELETION` para toda la ventana.
* Deje que esa ventana transcurra y **cada versión de cada secreto bajo esa clave es permanentemente ilegible.** El texto cifrado todavía está en la base de datos; nada puede abrirlo.

<Note>
  La encuadernación está fija para la vida del secreto. `kms_key` solo se acepta en el momento de crear, y `PATCH` edita solo `description` y `tags` — mover un secreto a una clave diferente significa volver a envuelver cada versión, así que cree un nuevo secreto y retire el antiguo en su lugar.
</Note>

<a id="versions-are-bound-to-their-secret" />

### Las versiones están ligadas a su secreto

Cualquiera que sea la clave utilizada, el texto cifrado de cada versión se sella con la cuenta del secreto y el id secreto como contexto de cifrado. Por lo tanto, un blob almacenado solo se descifra como la versión del secreto para el que se escribió, no se puede sacar de la base de datos y reproducir como el valor de un secreto diferente, incluso uno cifrado con la misma clave.

Si una clave vinculada se elimina permanentemente, las lecturas de metadatos aún devuelven el recurso con `kms_key_unavailable: true` y sin `kms_key_crn`. Esto no quita el enlace de cifrado ni selecciona una clave de reemplazo. Fallan las operaciones que requieren la clave eliminada.


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