Sekrety i zmienne środowiskowe
Jak przekazać klucz Stripe lub dowolne ustawienie do funkcji bez zapisywania go w kodzie i co faktycznie chroni platforma.
1. Ustaw zmienną
Każda zmienna należy do jednej funkcji. Ustawianie zmiennych wymaga klucza service_role.
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.
Wdrożenie nowego kodu z aura functions deploy pozostawia zmienne nietknięte.
2. Przeczytaj to w funkcji
Zmienne są odczytywane przy każdym wywołaniu: zmiana dotyczy następnego wywołania.
3. Zmienne dodawane przez platformę
| Zmienny | Wartość |
|---|---|
AURABASE_PROJECT_ID | Identyfikator projektu. Zawsze ustawione. |
AURABASE_FUNCTION_NAME | Nazwa funkcji. Zawsze ustawione. |
AURABASE_URL | Adres URL platformy, jeśli definiuje go operator platformy. |
AURABASE_ANON_KEY | Klucz 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.
4. Co jest szyfrowane
| Ścieżka | Zaszyfrowane w stanie spoczynku |
|---|---|
PUT /v1/functions/{name}/env | Tak, 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 / unset | Nie: interfejs CLI zapisuje poprzez PATCH, który przechowuje wysłane wartości. |
env_vars w żądaniu wdrożenia | Nie, 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.
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.
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ącegoservice_role. - Nigdy nie zapisuj sekretu. Dane wyjściowe
console.logtrafiają 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.