# Almacenamiento de secretos de la aplicación para un sitio

Source: https://support.kapsulehost.com/es-es/site-secrets

La pestaña Secrets es un almacén cifrado para los valores de configuración sensibles que necesita una aplicación Node.js, como claves API, secretos de firma y tokens de terceros, que se mantienen por entorno para que sus credenciales de producción y sus credenciales de vista previa nunca se mezclen.

## Dónde Viven los Secrets

Abra **Sitios web**, haga clic en el sitio, abra el grupo **Environment** en el menú izquierdo del sitio y elija **Secretos**. La pestaña se titula **Secretos**.

La pestaña solo aparece en sitios Node.js. Los sitios WordPress, PHP y estáticos no la muestran, porque su configuración vive en archivos en disco en su lugar: `wp-config.php` para WordPress, y lo que sea que lea su framework para una aplicación PHP sencilla.

![Pestaña Secrets para un sitio Node.js en KPanel](https://support.kapsulehost.com/help/screenshots/site-secrets.812e0706.webp)

## Cómo se Protegen los Valores

Cada valor se cifra antes de que llegue a la base de datos. Nada se almacena como texto legible, y la vista de lista nunca muestra un valor completo: muestra una máscara con solo los últimos cuatro caracteres, de modo que pueda distinguir dos claves parecidas sin exponer ninguna de las dos.

Cada fila lleva una etiqueta **Encrypted** como recordatorio de ello. Leer un valor es una acción separada y deliberada, no algo que ocurre simplemente al abrir la página.

> **Note:** Establecer, revelar y eliminar un secreto requieren todos el permiso **sites:write**. Un miembro del equipo con acceso de solo lectura puede ver qué claves existen y sus máscaras, pero no sus valores.

## Los Dos Entornos

Un control segmentado en la parte superior de la página cambia entre **production** y **preview**. Son conjuntos de claves completamente separados. Establecer `STRIPE_SECRET_KEY` en production no lo crea en preview, y eliminarlo de preview no afecta a production.

Esa separación es el objetivo de la función. Los builds de preview son entornos desechables que cualquiera con acceso al repositorio puede activar, por lo que deben llevar credenciales de prueba, no credenciales reales. Consulte [Despliegues de Vista Previa Para Pull Requests](https://support.kapsulehost.com/es-es/site-preview) para saber cómo se crean los entornos de vista previa.

## Agregar o Actualizar un Secret

1. Elija el entorno con el control segmentado.
2. Escriba el nombre en el campo **KEY_NAME**. El campo fuerza mayúsculas mientras escribe.
3. Ponga el valor en el segundo campo. Se enmascara mientras escribe.
4. Haga clic en **Set**.

Establecer una clave que ya existe la sobrescribe. No hay una acción de edición separada ni un paso de confirmación para una sobrescritura, así que compruebe la pestaña de entorno antes de hacer clic en **Set**.

### Reglas para el Nombre de la Clave

Una clave debe comenzar con una letra mayúscula y después puede contener letras mayúsculas, dígitos y guiones bajos, hasta 128 caracteres. `DATABASE_URL`, `API_KEY_V2` y `SENTRY_DSN` son todas válidas. Cualquier otra cosa se rechaza con el mensaje **Key debe ser UPPER_SNAKE_CASE letras/números/guion bajo**.

Vale la pena conocer otros dos límites:

- Un valor no puede estar vacío. Enviar un valor en blanco devuelve **value requerido**.
- Un valor no puede superar los 16 KB. Eso es generoso para un token, pero no es suficiente para, por ejemplo, una cadena de certificado completa, que pertenece a un archivo en lugar de a un secreto.

## Leer un Valor de Vuelta

Haga clic en **Copy** en la fila. KPanel descifra el valor del lado del servidor y lo coloca directamente en su portapapeles, con una confirmación **Valor copiado al portapapeles**. El valor no se imprime en pantalla, de modo que una pantalla compartida o alguien mirando por encima del hombro no lo capte.

Cada revelación queda registrada en el registro de auditoría del sitio, junto con quién la hizo y qué clave, y aparece en el [Registro de Actividad del Sitio](https://support.kapsulehost.com/es-es/site-activity-log).

> **Tip:** Si necesita comprobar que un valor es correcto sin exponerlo, compare la máscara en su lugar. Los últimos cuatro caracteres son suficientes para confirmar que tiene el token correcto, y ya están en pantalla.

## Usar un Secret en su Aplicación

Copie el valor en el lugar donde su aplicación lee su configuración en el servidor. Para una aplicación Node.js, eso normalmente es una variable de entorno establecida por su gestor de procesos, o un archivo `.env` en la raíz de la aplicación que su código carga al iniciar.

> **Warning:** No suba ese archivo a su repositorio. Agregue `.env` a `.gitignore` antes de crearlo. Un secreto que se ha enviado a un remoto de git debe tratarse como filtrado y rotarse en el proveedor, porque permanece en el historial incluso después de eliminar el archivo.

La pestaña Secrets es su registro de cuál es el valor, mantenido cifrado y auditado, en lugar de una nota en un gestor de contraseñas o en un hilo de mensajes. Manténgala como la fuente de verdad: cuando rote una clave en el proveedor, actualícela aquí al mismo tiempo, para que la próxima persona que despliegue tenga el valor actual.

## Eliminar un Secret

Haga clic en **Delete** en la fila. KPanel le pide que confirme con **Delete API_TOKEN?** y advierte que la aplicación perderá el acceso a este valor en su siguiente reinicio. No hay deshacer ni copia guardada, así que si pudiera necesitar el valor de nuevo, cópielo primero.

Elimine un secreto cuando la credencial subyacente se haya revocado en el proveedor, o cuando el código que la usaba se haya eliminado. Dejar claves obsoletas dando vueltas hace más difícil saber, más adelante, cuáles son las que realmente importan.

## Rotar una Credencial de Forma Segura

El orden seguro es siempre: crear la nueva credencial en el proveedor, actualizarla aquí, desplegar, confirmar que la aplicación funciona y luego revocar la credencial antigua en el proveedor.

Hacerlo en el orden inverso, revocando primero, le deja una ventana en la que la aplicación en ejecución mantiene una credencial muerta y toda solicitud que la necesite falla. Si el cambio es arriesgado, haga primero una copia de seguridad para poder volver a un estado conocido como bueno: consulte [Hacer una Copia de Seguridad](https://support.kapsulehost.com/es-es/taking-a-backup).

## Solución de Problemas

**La pestaña Secrets no está en el menú.** El sitio no es un sitio Node.js. Compruebe la etiqueta de stack junto al nombre del sitio en la parte superior de la página.

**El botón Set no hace nada.** Ambos campos son obligatorios. El botón informa **Clave + valor requerido** si alguno está vacío.

**La clave fue rechazada.** No se permiten letras minúsculas, guiones, puntos ni espacios. `api-key` y `Api_Key` fallan ambas; `API_KEY` pasa.

**Copy no puso nada en el portapapeles.** Algunos navegadores bloquean las escrituras al portapapeles en una pestaña inactiva. Haga clic primero en la página y luego vuelva a hacer clic en **Copy**.

## A Dónde Ir Después

- [Despliegues de Vista Previa Para Pull Requests](https://support.kapsulehost.com/es-es/site-preview), la otra mitad de la división entre producción y vista previa.
- [Despliegue con Git Para un Sitio](https://support.kapsulehost.com/es-es/site-git-deploy) para subir el código que lee estos valores.
- [Registro de Actividad del Sitio](https://support.kapsulehost.com/es-es/site-activity-log) para ver quién estableció, reveló o eliminó un secreto.
