Geheimen en omgevingsvariabelen
Hoe u een Stripe-sleutel of een andere instelling aan een functie kunt doorgeven zonder deze in de code te schrijven, en wat het platform daadwerkelijk beschermt.
1. Stel een variabele in
Elke variabele behoort tot één functie. Voor het instellen van variabelen is een service_role-sleutel nodig.
PUT /env vervangt de hele set variabelen door de lijst die u verzendt. aura secrets set en unset lezen de huidige waarden, wijzigen de sleutels die u een naam geeft en schrijven het resultaat terug.
Door nieuwe code te implementeren met aura functions deploy blijven de variabelen ongemoeid.
2. Lees het in de functie
Variabelen worden bij elke aanroep gelezen: een wijziging geldt voor de volgende oproep.
3. Variabelen die het platform toevoegt
| Variabel | Waarde |
|---|---|
AURABASE_PROJECT_ID | Het project-ID. Altijd ingesteld. |
AURABASE_FUNCTION_NAME | De naam van de functie. Altijd ingesteld. |
AURABASE_URL | De platform-URL, wanneer de platformoperator deze definieert. |
AURABASE_ANON_KEY | Een platformsleutel, wanneer de operator deze definieert. |
U kunt deze namen niet overschrijven. De omgeving van de host is niet zichtbaar voor uw functie: in een echte run retourneerde Deno.env.get('PATH') undefined.
Om uw eigen project vanuit een functie aan te roepen, slaat u een service_role-sleutel op als een geheim van die functie en verzendt u deze in de apikey-header van een HTTP-verzoek. Stuur nooit de sleutel van een gebruiker door en plaats nooit een service_role sleutel in een browser.
4. Wat is gecodeerd
| Pad | Versleuteld in rust |
|---|---|
PUT /v1/functions/{name}/env | Ja, als voor de service een coderingssleutel is geconfigureerd (FN_ENV_ENCRYPTION_KEY, AES-256-GCM). Zonder dit worden de waarden opgeslagen als verzonden en registreert de service bij het starten een waarschuwing. |
aura secrets set / unset | Nee: de CLI schrijft via PATCH, waarin de waarden worden opgeslagen zoals ze zijn verzonden. |
env_vars in een implementatieverzoek | Nee, dezelfde reden. |
In onze lokale test werd een waarde geschreven door PUT /env onveranderd geretourneerd door de definitie van de functie, omdat er geen sleutel was geconfigureerd.
Of geheimen worden versleuteld, hangt af van de implementatie en alleen het pad PUT /env kan ze versleutelen. Het CLI-pad slaat ze op zoals opgegeven. Totdat de CLI PUT /env gebruikt, gebruikt u de bovenstaande HTTP-aanroep voor productiegeheimen.
Het teruglezen van geheimen is ook beperkt. GET /v1/functions/{name}/env retourneert de gedecodeerde waarden en vereist, net als GET /v1/functions/{name}, een service_role sleutel. Een publieke sleutel ontvangt 403.
5. Te volgen regels
- Codeer nooit een geheim in
index.ts. De broncode van een functie wordt opgeslagen in uw project en teruggestuurd naar elkeservice_role-aanroeper. - Log nooit een geheim in. De uitvoer van
console.logkomt terecht in de runtimelogboeken. - Gebruik één variabele per functie, met de smalste sleutel die werkt (een beperkte sleutel van uw provider, niet de hoofdsleutel).
- Draai een sleutel door de nieuwe waarde in te stellen en niets opnieuw in te zetten: de volgende aanroep gebruikt deze.