Hoppa till innehållet
Stackship-dokumentation English

FunktionerAnvändareMaskinöversatt

Hemligheter och managed identity

Ge funktioner hemligheter från ett valv, läs värdena i koden och ge funktionsnamnutrymmets managed identity den åtkomst som dess funktioner behöver.

Kräver: functions/write, rbac/members/write

Ett funktionsnamnutrymme har en managed identity, och varje funktion i det körs som den identiteten: när plattformen hämtar en funktions hemligheter vid start, och när funktionens egen kod ber om en token. För att lägga till hemlighetsreferenser behöver du functions/write; för att ge identiteten en roll behöver du rbac/members/write, som rollen Owner har.

Lägg till en hemlighetsreferens

Öppna funktionen, dess flik Konfiguration, avsnittet Hemligheter, och lägg till en referens till en hemlighet i ett valv med det Miljövariabelnamn den ska få. Stegen finns i Lägg till en hemlighetsreferens. När du sparar driftsätts funktionen om.

Ge identiteten åtkomst till valvet

Innan funktionen kan starta med en hemlighet behöver namnutrymmets identitet Secrets Reader på valvet. Ingenting tilldelar den åt dig.

  1. Hitta identitetens principal-ID. Öppna funktionsnamnutrymmet; kortet Hanterad identitet under dess Översikt visar Principal-ID. Kortet visas bara för den som också får läsa appar (apps/read); annars använder du CLI:t:

    bash
    stsh identity list -g my-resource-group -o json

    och tar principalId från posten vars resourceType är functionnamespace och vars resourceName är funktionsnamnutrymmet. Funktioner har ingen egen identitet.

  2. Ge det principal-ID:t Secrets Reader på valvet — se Ge en arbetslast åtkomst till ett valv.

Viktigt

Identiteten hör till funktionsnamnutrymmet, inte till en enskild funktion. En roll som du ger den gäller för varje funktion i namnutrymmet: när identiteten får läsa ett valv kan koden i vilken som helst av dess funktioner läsa valvets hemligheter, inte bara de funktioner som refererar till dem. Lägg funktioner som inte får dela åtkomst i olika funktionsnamnutrymmen.

Läs värdena i din kod

När en replik startar hämtar plattformen de refererade värdena till filen /secrets/env.json, ett JSON-objekt som kopplar varje Miljövariabelnamn till sitt värde. Funktionens körmiljö sätter sedan en miljövariabel per post, med namnet STSH_ följt av namnet i versaler:

javascript
const apiKey = process.env.STSH_API_KEY;
  • Filen går också att läsa, på en skrivskyddad volym som finns i minnet.
  • Om filen inte kan läsas eller tolkas startar funktionen inte.
  • En avbild som du bygger själv får filen men inte variablerna STSH_: de sätts av plattformens körmiljö — se Kör en avbild från din egen pipeline.

När ett värde ändras

Värdena hämtas varje gång en replik startar: när funktionen distribueras, när någon av dess inställningar sparas och varje gång den vaknar ur vila. En replik som redan körs behåller de värden den startade med.

Använd identiteten i din egen kod

Funktionens kod kan hämta en token för namnutrymmets identitet och anropa plattformens tjänster med den. Funktioner får samma variabler som andra arbetslaster — se Använd en managed identity i kod.

När en funktion inte startar

En funktion vars hemligheter inte kan hämtas startar inte — se Funktionen startar inte. Skälen till att en hemlighet inte kan hämtas är desamma som för andra arbetslaster — se Felsök leverans av hemligheter.