Logo Aurabase
aurabasedocuments
documents›Edge Functions›Secrets and environment

Secrets et variables d'environnement

Comment transmettre une clé Stripe ou tout autre paramètre à une fonction sans l'écrire dans le code, et ce que la plateforme protège réellement.

6 min de lecture·Niveau intermédiaire·Révisé le 12 oct. 2026
Ce texte anglais a été généré automatiquement à partir de l’original français et n’a pas encore été relu.
Cette page a été traduite automatiquement. La version anglaise fait foi.
#
Écrire

1. Définir une variable

Chaque variable appartient à une fonction. La définition de variables nécessite une clé service_role.

terminalbash
aura secrets set --function checkout STRIPE_SECRET_KEY=sk_live_… WEBHOOK_SECRET=whsec_…
aura secrets list --function checkout     # les valeurs sont masquées : STRIPE_SECRET_KEY sk_l***
aura secrets unset --function checkout WEBHOOK_SECRET
terminalbash
curl -X PUT "$AURA_URL/v1/functions/checkout/env" \
  -H "apikey: $AURA_SERVICE_ROLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"vars":[{"key":"STRIPE_SECRET_KEY","value":"sk_live_…"}]}'

PUT /env remplace l'ensemble des variables par la liste que vous envoyez. aura secrets set et unset lisent les valeurs actuelles, modifient les clés que vous nommez et réécrivent le résultat.

Le redéploiement garde vos secrets

Le déploiement d'un nouveau code avec aura functions deploy laisse les variables intactes.

#
Lire

2. Lisez-le dans la fonction

aurabase/functions/checkout/index.tstypescript
Deno.serve(async (req) => {
  const key = Deno.env.get('STRIPE_SECRET_KEY')
  if (!key) return new Response('STRIPE_SECRET_KEY is not set', { status: 500 })
  // …appelez Stripe avec `key`
  return Response.json({ ok: true })
})

Les variables sont lues à chaque invocation : une modification s'applique au prochain appel.

#
Injecté

3. Variables ajoutées par la plateforme

VariableValeur
AURABASE_PROJECT_IDL'identifiant du projet. Toujours réglé.
AURABASE_FUNCTION_NAMELe nom de la fonction. Toujours réglé.
AURABASE_URLL'URL de la plateforme, lorsque l'opérateur de la plateforme la définit.
AURABASE_ANON_KEYUne clé de plateforme, lorsque l'opérateur la définit.

Vous ne pouvez pas remplacer ces noms. L'environnement de l'hôte n'est pas visible pour votre fonction : lors d'une exécution réelle, Deno.env.get('PATH') a renvoyé undefined.

Pour appeler votre propre projet à partir d'une fonction, stockez une clé service_role comme secret de cette fonction et envoyez-la dans l'en-tête apikey d'une requête HTTP. Ne transmettez jamais la clé d'un utilisateur et ne mettez jamais de clé service_role dans un navigateur.

#
Protection

4. Qu'est-ce qui est crypté

CheminChiffré au repos
PUT /v1/functions/{name}/envOui, si le service a une clé de chiffrement configurée (FN_ENV_ENCRYPTION_KEY, AES-256-GCM). Sans cela, les valeurs sont stockées telles qu'elles ont été envoyées et le service enregistre un avertissement au démarrage.
aura secrets set / unsetNon : la CLI écrit via PATCH, qui stocke les valeurs telles qu'elles sont envoyées.
env_vars dans une demande de déploiementNon, même raison.

Lors de notre test local, une valeur écrite par PUT /env a été renvoyée inchangée par la définition de la fonction, car aucune clé n'était configurée.

Demandez à votre opérateur de plateforme avant de recourir au cryptage

Le chiffrement des secrets dépend du déploiement et seul le chemin PUT /env peut les chiffrer. Le chemin CLI les stocke comme indiqué. Jusqu'à ce que la CLI utilise PUT /env, utilisez l'appel HTTP ci-dessus pour les secrets de production.

La lecture des secrets est également limitée. GET /v1/functions/{name}/env renvoie les valeurs déchiffrées et, comme GET /v1/functions/{name}, nécessite une clé service_role. Une clé publique reçoit 403.

#
Règles

5. Règles à suivre

  • Ne codez jamais en dur un secret dans index.ts. Le code source d'une fonction est stocké dans votre projet et renvoyé à tout appelant service_role.
  • Ne consignez jamais un secret. La sortie de console.log se retrouve dans les journaux du runtime.
  • Utilisez une variable par fonction, avec la clé la plus étroite qui fonctionne (une clé restreinte de votre fournisseur, pas la clé principale).
  • Faites pivoter une clé en définissant la nouvelle valeur et en ne redéployant rien : le prochain appel l'utilise.
Dernière mise à jour · 12 oct. 2026