Sitios web

Almacenamiento de secretos de aplicación para un sitio

The Secrets tab is an encrypted store for the sensitive configuration values a Node.js app needs, such as API keys, signing secrets and third-party tokens, kept per environment so your production…

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

Dónde se encuentran los Secrets

Abre Websites, haz clic en el sitio, abre el menú Advanced en la barra de pestañas del sitio y elige Secrets. La pestaña se titula Secrets.

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

Pestaña Secrets para un sitio Node.js en KPanel

Cómo se protegen los valores

Cada valor se cifra antes de tocar 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, para que puedas distinguir dos claves similares sin exponer ninguna.

Cada fila lleva una pastilla Encrypted como recordatorio de eso. Leer un valor de vuelta es una acción separada y deliberada en lugar de algo que sucede simplemente al abrir la página.

Establecer, revelar y eliminar un secreto requieren el permiso sites:write. Un miembro del equipo 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 producción no lo crea en preview, y eliminarlo de preview no afecta la producción.

Esa separación es el punto 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 activas. Consulta Preview Deploys For Pull Requests para ver cómo se crean los entornos de preview.

Agregar o actualizar un Secret

  1. Elige el entorno con el control segmentado.
  2. Escribe el nombre en el campo KEY_NAME. El campo fuerza mayúsculas mientras escribes.
  3. Coloca el valor en el segundo campo. Se enmascara mientras escribes.
  4. Haz 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 verifica la pestaña del entorno antes de hacer clic en Set.

Reglas de nombres de claves

Una clave debe comenzar con una letra mayúscula y 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 must be UPPER_SNAKE_CASE letters/numbers/underscore.

Hay otros dos límites que vale la pena conocer:

  • Un valor no puede estar vacío. Enviar un valor en blanco devuelve value required.
  • Un valor no puede exceder 16 KB. Eso es generoso para un token pero no es suficiente para, digamos, una cadena de certificados completa, que debe estar en un archivo en lugar de un secreto.

Leer un valor de vuelta

Haz clic en Copy en la fila. KPanel descifra el valor del lado del servidor y lo coloca directamente en tu portapapeles, con una confirmación de Value copied to clipboard. El valor no se imprime en la pantalla, por lo que un compartir pantalla o un mirón de hombro no lo recoge.

Cada revelación se escribe en el registro de auditoría del sitio, junto con quién lo hizo y qué clave, y aparece en el Site Activity Log.

Si necesitas verificar que un valor es correcto sin exponerlo, compara la máscara en su lugar. Los últimos cuatro caracteres son suficientes para confirmar que tienes el token correcto, y ya están en la pantalla.

Usar un Secret en tu aplicación

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

No confirmes ese archivo en tu repositorio. Agrega .env a .gitignore antes de crearlo. Un secreto que ha sido enviado a un repositorio git remoto 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 tu registro de cuál es el valor, mantenido cifrado y auditado, en lugar de una nota en un gestor de contraseñas o un hilo de mensajes. Mantenla como la fuente de verdad: cuando rotes una clave en el proveedor, actualízala aquí al mismo tiempo, para que la próxima persona que implemente tenga el valor actual.

Eliminar un Secret

Haz clic en Delete en la fila. KPanel te pide que confirmes con Delete {KEY}? y advierte que la aplicación perderá acceso a este valor en su próximo reinicio. No hay deshacer ni copia guardada, así que si podrías necesitar el valor nuevamente, cópialo primero.

Elimina un secreto cuando la credencial subyacente ha sido revocada en el proveedor, o cuando el código que la utilizaba ha sido eliminado. Dejar claves antiguas alrededor dificulta saber, más tarde, cuáles realmente importan.

Rotar una credencial de forma segura

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

Hacerlo al revés, revocando primero, te da una ventana donde la aplicación en ejecución está manteniendo una credencial muerta y cada solicitud que la necesita falla. Si el cambio es arriesgado, haz una copia de seguridad primero para que puedas volver a un estado conocido como bueno: consulta Taking a Backup.

Solución de problemas

La pestaña Secrets no está en el menú. El sitio no es un sitio Node.js. Verifica la pastilla de pila 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 reporta Key + value required si alguno está vacío.

La clave fue rechazada. Las letras minúsculas, guiones, puntos y espacios no están permitidos. api-key y Api_Key ambos fallan; API_KEY pasa.

Copy no puso nada en el portapapeles. Algunos navegadores bloquean las escrituras del portapapeles en una pestaña inactiva. Haz clic en la página primero, luego haz clic en Copy nuevamente.

Dónde ir después

¿Aún necesitas ayuda?

Envíanos un correo electrónico a support@kapsulehost.com o abre un chat en KPanel.

Abrir KPanel
Almacenamiento de secretos de aplicación para un sitio