Logo Aurabase
aurabazadokumenty
dokumenty›Edge Functions›Secrets and environment

Sekrety i zmienne środowiskowe

Jak przekazać klucz Stripe lub dowolne ustawienie do funkcji bez zapisywania go w kodzie i co faktycznie chroni platforma.

6 min przeczytane·Poziom mediator·Zmieniono 12 paź 2026
Ten tekst w języku angielskim został wygenerowany automatycznie na podstawie francuskiego oryginału i nie był jeszcze recenzowany.
Ta strona została przetłumaczona automatycznie. Wersja angielska jest miarodajna.
#
Pisać

1. Ustaw zmienną

Każda zmienna należy do jednej funkcji. Ustawianie zmiennych wymaga klucza service_role.

terminalbash
aura secrets set --function checkout STRIPE_SECRET_KEY=sk_live_… WEBHOOK_SECRET=whsec_…
aura secrets list --function checkout     # wartości są maskowane: 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 zastępuje cały zestaw zmiennych wysyłaną listą. aura secrets set i unset odczytują bieżące wartości, zmieniają nazwy kluczy i zapisują wynik z powrotem.

Ponowne wdrożenie pozwala zachować tajemnice

Wdrożenie nowego kodu z aura functions deploy pozostawia zmienne nietknięte.

#
Czytać

2. Przeczytaj to w funkcji

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 })
  // …zadzwoń do Stripe'a za pomocą `klucza`
  return Response.json({ ok: true })
})

Zmienne są odczytywane przy każdym wywołaniu: zmiana dotyczy następnego wywołania.

#
Wstrzyknięty

3. Zmienne dodawane przez platformę

ZmiennyWartość
AURABASE_PROJECT_IDIdentyfikator projektu. Zawsze ustawione.
AURABASE_FUNCTION_NAMENazwa funkcji. Zawsze ustawione.
AURABASE_URLAdres URL platformy, jeśli definiuje go operator platformy.
AURABASE_ANON_KEYKlucz platformy, jeśli zdefiniuje go operator.

Nie można zastąpić tych nazw. Środowisko hosta nie jest widoczne dla Twojej funkcji: w prawdziwym uruchomieniu Deno.env.get('PATH') zwróciło undefined.

Aby wywołać własny projekt z funkcji, należy zapisać klucz service_role jako sekret tej funkcji i wysłać go w nagłówku apikey żądania HTTP. Nigdy nie przekazuj klucza użytkownika i nigdy nie umieszczaj klucza service_role w przeglądarce.

#
Ochrona

4. Co jest szyfrowane

ŚcieżkaZaszyfrowane w stanie spoczynku
PUT /v1/functions/{name}/envTak, jeśli usługa ma skonfigurowany klucz szyfrowania (FN_ENV_ENCRYPTION_KEY, AES-256-GCM). Bez tego wartości są zapisywane jako wysłane, a usługa rejestruje ostrzeżenie przy uruchomieniu.
aura secrets set / unsetNie: interfejs CLI zapisuje poprzez PATCH, który przechowuje wysłane wartości.
env_vars w żądaniu wdrożeniaNie, ten sam powód.

W naszym lokalnym teście wartość zapisana przez PUT /env została zwrócona w niezmienionej postaci zgodnie z definicją funkcji, ponieważ nie skonfigurowano żadnego klucza.

Zanim skorzystasz z szyfrowania, zapytaj operatora platformy

To, czy klucze tajne są szyfrowane, zależy od wdrożenia i tylko ścieżka PUT /env może je zaszyfrować. Ścieżka CLI przechowuje je w podanej postaci. Dopóki interfejs CLI nie użyje PUT /env, użyj powyższego wywołania HTTP w celu uzyskania tajemnic produkcyjnych.

Odczytywanie tajemnic również jest ograniczone. GET /v1/functions/{name}/env zwraca odszyfrowane wartości i podobnie jak GET /v1/functions/{name} wymaga klucza service_role. Klucz publiczny otrzymuje 403.

#
Zasady

5. Zasady, których należy przestrzegać

  • Nigdy nie zapisuj na stałe sekretu w index.ts. Kod źródłowy funkcji jest przechowywany w Twoim projekcie i zwracany do dowolnego programu wywołującego service_role.
  • Nigdy nie zapisuj sekretu. Dane wyjściowe console.log trafiają do dzienników środowiska wykonawczego.
  • Użyj jednej zmiennej na funkcję, z najwęższym, który działa (klucz zastrzeżony od dostawcy, a nie klucz główny).
  • Obróć klucz, ustawiając nową wartość i niczego nie wdrażając ponownie: następne wywołanie go użyje.
Ostatnia aktualizacja · 12 paź 2026