Skip to Content
TestingZmienne środowiskowe aplikacji

Zmienne środowiskowe aplikacji

OpenFactory może przechowywać wartości środowiskowe w zakresie aplikacji i konta, szyfrować je at rest i renderować je w candidate app VM podczas deploy. To wczesny file-backed secret store, a nie zarządzany vault.

Zakres i pierwszeństwo

  • Wartości konta to wielokrotnego użytku domyślne ustawienia dla każdej aplikacji należącej do tego konta.
  • Wartości aplikacji nadpisują wartości konta o tej samej nazwie.
  • Managed values zapisuje skonfigurowany producer token i rejestruje producenta będącego właścicielem klucza.
  • Zmieniona wartość zwiększa env_version; udany deploy rejestruje zastosowaną wersję. Różnica oznacza konieczność redeploy.

Nazwy muszą być uppercase environment identifiers, są ograniczone do 128 znaków i nie mogą używać zarezerwowanego prefiksu OPENFACTORY_. User values mają limit 8 KiB, a aplikacja limit 100 keys.

Workflow MCP

Operacje list zawsze maskują wartości. Ujawniaj jedną wartość tylko wtedy, gdy to konieczne:

set_app_env( app_id="550e8400-e29b-41d4-a716-446655440000", set={"API_BASE_URL": "https://api.example.internal"} ) list_app_env(app_id="550e8400-e29b-41d4-a716-446655440000") reveal_app_env( app_id="550e8400-e29b-41d4-a716-446655440000", name="API_BASE_URL" )

Ten sam wzorzec jest dostępny jako set_account_env, list_account_env i reveal_account_env. Operacje set/delete na poziomie aplikacji zwracają env_version i redeploy_hint; ustawienie wartości nie mutuje działającej VM.

Powierzchnia REST

MethodPathPurpose
GET/api/apps/{app_id}/envZamaskowana lista app keys i stan wersji
PUT/api/apps/{app_id}/envTransakcyjne set/delete dla app keys
POST/api/apps/{app_id}/env/revealAudytowane plaintext reveal jednej app key
GET/api/account/envZamaskowana lista account keys
PUT/api/account/envTransakcyjne set/delete dla account keys
POST/api/account/env/revealAudytowane plaintext reveal jednej account key
PUT/api/apps/{app_id}/env/managedSkonfigurowany producer publikuje managed keys
DELETE/api/apps/{app_id}/env/managed/{name}Producer usuwa owned managed key

Powierzchnie użytkownika wymuszają rozwiązany kontekst właściciela. Managed endpoints używają bearer credential <kid>.<secret> z pliku producer token skonfigurowanego przez operatora; bez tego pliku producer API zwraca unavailable.

Zachowanie przy deploy

Podczas deploy backend odszyfrowuje wartości konta, nakłada wartości aplikacji, dodaje runtime fields platformy i zapisuje /etc/openfactory/app.env w VM z mode 0600. Proces startuje z tym plikiem jako środowiskiem. Jeśli odszyfrowanie, dostarczenie pliku lub uruchomienie się nie powiedzie, candidate nie jest promowany.

Granica bezpieczeństwa

  • Przechowywane wartości używają szyfrowania Fernet. Operator musi dostarczyć i chronić OPENFACTORY_ENV_MASTER_KEY; utrata lub wymiana uniemożliwia odszyfrowanie istniejących wartości.
  • List responses są zamaskowane. Jawne reveals i mutacje dopisują JSONL audit event.
  • Obecne storage i audit trail to lokalne pliki. Nie zapewniają hardware-backed keys, multi-party approval, tamper-evident logging, automatic rotation ani disaster-recovery guarantee.
  • Logi aplikacji i deploy nie zapewniają jeszcze pełnej secret-redaction boundary. Proces, który wypisuje środowisko, credential-bearing URL lub secret w error, może ujawnić to w logach i test evidence.

Z tego powodu nie używaj tego preview store do production credentials, dopóki deployment nie ma niezależnych access controls, testów backup i restore, log-redaction validation, retention rules i udokumentowanej procedury key-rotation. Nigdy nie umieszczaj secrets w recipes, source code, commands, URLs, test descriptions ani assertion expectations.

Zobacz App deployment dla candidate promotion flow.