Secretos y variables de entorno.
Cómo pasar una clave Stripe o cualquier configuración a una función sin escribirla en el código y qué protege realmente la plataforma.
1. Establecer una variable
Cada variable pertenece a una función. Para configurar variables se necesita una clave service_role.
PUT /env reemplaza todo el conjunto de variables con la lista que envías. aura secrets set y unset leen los valores actuales, cambian las claves que nombra y escribe el resultado.
La implementación de código nuevo con aura functions deploy deja las variables intactas.
2. Léelo en la función.
Las variables se leen en cada invocación: se aplica un cambio en la siguiente llamada.
3. Variables que agrega la plataforma
| variable | Valor |
|---|---|
AURABASE_PROJECT_ID | La identificación del proyecto. Siempre configurado. |
AURABASE_FUNCTION_NAME | El nombre de la función. Siempre configurado. |
AURABASE_URL | La URL de la plataforma, cuando la define el operador de la plataforma. |
AURABASE_ANON_KEY | Una clave de plataforma, cuando la define el operador. |
No puede anular estos nombres. El entorno del host no es visible para su función: en una ejecución real, Deno.env.get('PATH') devolvió undefined.
Para llamar a su propio proyecto desde una función, almacene una clave service_role como secreto de esa función y envíela en el encabezado apikey de una solicitud HTTP. Nunca reenvíe la clave de un usuario y nunca coloque una clave service_role en un navegador.
4. Qué está cifrado
| Camino | Cifrado en reposo |
|---|---|
PUT /v1/functions/{name}/env | Sí, si el servicio tiene una clave de cifrado configurada (FN_ENV_ENCRYPTION_KEY, AES-256-GCM). Sin él, los valores se almacenan tal como se envían y el servicio registra una advertencia al inicio. |
aura secrets set / unset | No: la CLI escribe a través de PATCH, que almacena los valores tal como se envían. |
env_vars en una solicitud de implementación | No, la misma razón. |
En nuestra prueba local, la definición de la función devolvió un valor escrito por PUT /env sin cambios, porque no se configuró ninguna clave.
El cifrado de secretos depende de la implementación y solo la ruta PUT /env puede cifrarlos. La ruta CLI los almacena tal como se indica. Hasta que la CLI use PUT /env, use la llamada HTTP anterior para los secretos de producción.
La lectura de secretos también está restringida. GET /v1/functions/{name}/env devuelve los valores descifrados y, al igual que GET /v1/functions/{name}, requiere una clave service_role. Una clave pública recibe 403.
5. Reglas a seguir
- Nunca codifique un secreto en
index.ts. El código fuente de una función se almacena en su proyecto y se devuelve a cualquier llamadorservice_role. - Nunca registres un secreto. La salida de
console.logtermina en los registros del tiempo de ejecución. - Utilice una variable por función, con la clave más estrecha que funcione (una clave restringida de su proveedor, no la clave maestra).
- Gire una clave estableciendo el nuevo valor y no volviendo a implementar nada: la siguiente llamada la usa.