Przejdź do głównej zawartości

Ścieżki tokenów i danych uwierzytelniających

Wszystkie dane uwierzytelniające przechowywane przez Speedwave trafiają do wspólnego katalogu danych (domyślnie ~/.speedwave/). Użycie zmiennej środowiskowej SPEEDWAVE_DATA_DIR pozwala przenieść całą strukturę do innej lokalizacji. Zmienna ta jest odczytywana jednorazowo podczas uruchamiania procesu. Pełną listę zmiennych startowych znajdziesz w sekcji Zmienne środowiskowe, a zasady izolacji poświadczeń opisano w rozdziale Obsługa danych uwierzytelniających.

  • Folder~/.speedwave/
    • Foldertokens/
      • Folder<project> /
        • Folder<service> / dane uwierzytelniające workera dla danej usługi
          • pliki uwierzytelniające
          • _settings.json niesekretne ustawienia wtyczki
        • Folderllm/
          • <provider_id> _api_key klucz API dostawcy LLM
    • Folderclaude-home/
      • Folder<project> /
        • Folder.claude/
          • .credentials.json OAuth Anthropic (zarządzane przez Claude Code)
    • Folderoauth/
      • Folder<project> /
        • <service> .json tokeny odświeżające OAuth wtyczki (poza punktem montowania)
    • Folderplugin-state/
      • Folder<slug> /
        • bridge-token zapisany token mostka do hosta
    • Folderide-bridge/
      • <port> .lock token UUID IDE Bridge
    • Folderpolicies/
      • Folder<project> /
        • policy.json wyliczona polityka PII
        • key klucz tokenizacji PII
    • Folderaudit/
      • Folder<project> /
        • audit-proxy.jsonl rejestr wykrywania PII w proxy
        • audit-hub.jsonl rejestr wykrywania PII w hubie

Oznaczenia: <project> to przestrzeń nazw projektu, <service> to identyfikator usługi MCP (workera wbudowanego lub wtyczki), <provider_id> to identyfikator dostawcy LLM, <slug> to identyfikator wtyczki, a <port> to numer portu IDE Bridge.

ŚcieżkaPrzeznaczeniePunkt montowaniaUprawnienia
tokens/<project>/<service>/<file>Dane uwierzytelniające pojedynczej usługi MCPTylko worker tej usługi, pod /tokens (tylko do odczytu)plik 0o600, katalog 0o700
tokens/<project>/llm/<provider_id>_api_keyKlucz API dostawcy LLMTylko kontener proxy, pod /tokens (tylko do odczytu), jako zmienna SPW_KEY_<PROVIDER_ID>plik 0o600, katalog 0o700
tokens/<project>/<service>/_settings.jsonNiesekretne ustawienia wtyczkiTen sam worker, wewnątrz /tokens (tylko do odczytu)plik 0o600, katalog 0o700
policies/<project>/policy.jsonWyliczona polityka ochrony danych (PII) projektuTylko mcp-hub, pod /policy (tylko do odczytu), jako zmienna POLICY_FILE=/policy/policy.jsonplik 0o600, katalog 0o700
policies/<project>/key32-bajtowy klucz szesnastkowy tokenizacji PII (AES-128-SIV)Tylko mcp-hub, pod /policy (tylko do odczytu)plik 0o600, katalog 0o700
audit/<project>/audit-*.jsonlRejestry zdarzeń tokenizacji PII (bez wartości oryginalnych)proxy i mcp-hub, pod /audit (odczyt i zapis)n/d
claude-home/<project>/.claude/.credentials.jsonPoświadczenia OAuth Anthropic${CLAUDE_HOME} pod /home/speedwave (odczyt i zapis)zarządzane przez Claude Code
oauth/<project>/<service>.jsonTokeny odświeżające OAuth wtyczek i sekrety klientaBez montowania (odczytywane przez worker oauth na hoście)plik 0o600, katalog 0o700
plugin-state/<slug>/bridge-tokenZapisany token mostka do hostaBez montowaniaplik 0o600 (jeśli istnieje)
ide-bridge/<port>.lockToken uwierzytelniający UUID v4 dla IDE Bridge/home/speedwave/.claude/ide/ (tylko do odczytu)plik 0o600, katalog 0o700

Każda usługa MCP przechowująca poświadczenia otrzymuje własny katalog tokens/<project>/<service>/ z plikami zadeklarowanymi w manifeście. Speedwave tworzy ten katalog tylko wtedy, gdy lista plików uwierzytelniających nie jest pusta. Jeśli wtyczka posiada formularz ustawień, w katalogu umieszczany jest dodatkowo plik _settings.json z wartościami jawnymi (dane poufne pozostają wyłącznie w plikach uwierzytelniających). Katalog ten jest montowany w trybie tylko do odczytu w odpowiednim workerze pod ścieżką /tokens, a reguła SecurityCheck PLUGIN_TOKEN_PATH_MISMATCH przed uruchomieniem kontenera weryfikuje poprawność ścieżki montowania.

Klucz API dostawcy LLM skonfigurowany w claude.llm jest zapisywany w pliku tokens/<project>/llm/<provider_id>_api_key. Katalog llm jest montowany w trybie tylko do odczytu wyłącznie w kontenerze proxy, a każdy klucz jest przekazywany w postaci nazwy zmiennej środowiskowej SPW_KEY_<PROVIDER_ID> (identyfikator dostawcy wielkimi literami ze znakiem _ zamiast -):

Przykłady nazw SPW_KEY i ścieżek
openrouter -> SPW_KEY_OPENROUTER
my-anthropic -> SPW_KEY_MY_ANTHROPIC
tokens/proj/llm/openrouter_api_key

Dane uwierzytelniające OAuth Anthropic są zapisywane w pliku claude-home/<project>/.claude/.credentials.json, gdzie zarządza nimi bezpośrednio Claude Code w ramach montowania ${CLAUDE_HOME} pod ścieżką /home/speedwave. Speedwave konfiguruje jedynie punkt montowania w compose oraz czyści plik po wywołaniu polecenia speedwave logout.

Tokeny odświeżające OAuth oraz sekrety klienta dla wtyczek nie trafiają do katalogu tokens/. Są one przechowywane poza punktami montowania w pliku oauth/<project>/<service>.json i przetwarzane przez proces pomocniczy po stronie hosta.

Zmienny stan poszczególnych wtyczek jest zapisywany w katalogu plugin-state/<slug>/ niezależnie od podpisanych plików wtyczki. Przykładem jest token mostka hosta plugin-state/<slug>/bridge-token, tworzony z uprawnieniami 0o600, o ile manifest wtyczki zawiera flagę persistent_token.

Plik blokady IDE Bridge (ide-bridge/<port>.lock) zawiera jednorazowy token UUID v4 generowany przy każdym starcie aplikacji Desktop. Jest zapisywany z uprawnieniami 0o600 w katalogu nadrzędnym 0o700 i montowany w kontenerze w trybie tylko do odczytu pod ścieżką /home/speedwave/.claude/ide/.

W katalogu z uprawnieniami ograniczonymi do właściciela (policies/<project>/) znajdują się dwa pliki: policy.json (wyliczona polityka ochrony danych wrażliwych) oraz key (32-bajtowy klucz szesnastkowy dla algorytmu AES-128-SIV, tworzony automatycznie przy pierwszym użyciu). Cały katalog jest montowany w trybie tylko do odczytu w kontenerze Tool Gateway (mcp-hub) pod ścieżką /policy, a zmienna POLICY_FILE=/policy/policy.json wskazuje na plik polityki. Zasady działania polityk oraz mechanizm szyfrowania tokenów opisano w rozdziale Tokenizacja.

Utrata pliku klucza uniemożliwia odszyfrowanie jakichkolwiek tokenów wygenerowanych wcześniej w danym projekcie. Speedwave nie przechowuje żadnej bazy mapowań wartości – klucz jest jedynym elementem pozwalającym na przywrócenie oryginalnych danych.

Katalog audit/<project>/ zawiera dwa pliki rejestrów: audit-proxy.jsonl oraz audit-hub.jsonl, które odnotowują zdarzenia tokenizacji danych wrażliwych (bez zapisywania oryginalnych wartości). Katalog ten jest montowany w trybie do odczytu i zapisu w kontenerach proxy oraz mcp-hub pod ścieżką /audit. Więcej informacji o strukturze dzienników znajdziesz w sekcji Logi i diagnostyka.

Speedwave tworzy pliki z danymi uwierzytelniającymi z uprawnieniami 0o600, a katalogi nadrzędne z 0o700, przypisując je do bieżącego konta użytkownika. W systemie Windows odpowiednikiem jest lista kontroli dostępu (DACL) z pełnymi uprawnieniami dla twojego konta.

W systemach unixowych Speedwave dodatkowo weryfikuje poprawność uprawnień przy każdym starcie i automatycznie koryguje błędne bity. W systemie Windows uprawnienia DACL są nadawane jednorazowo podczas tworzenia pliku lub katalogu.