* feat(docs): mirror every docs/ page in all 65 locales Extends the documentation mirrors from the 22-page core set (#13940) to every Markdown page under docs/: 152 sources x 65 locales = 9,880 mirrors (6,208 new), language bars rewritten for the full locale list, state adopted so the blocking drift gate now covers all 152 pages. run-translation.mjs: an oversized block made only of table rows or list items (PROVIDER_REFERENCE.md 244-row table, FREE_TIERS.md 71-item list) is cut at item boundaries and rejoined without a blank line — the single 16-40 KB request outlived the backend socket for verbose scripts. 48 older mirrors whose tables had lost rows were retranslated with --force. * docs(i18n): refresh mirrors for the sources the base changed since the branch cut Section-level retranslation of the 29 docs (and README.md) whose source or mirrors moved on release/v3.8.51 during the run, then state adoption; the drift gate is green again on the merged tree.
15 KiB
Compliance & Audit (Slovenščina)
🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW
Vir resnice:
src/lib/compliance/,src/app/api/compliance/Zadnja posodobitev: 2026-06-28 — v3.8.40
OmniRoute beleži skrbniška dejanja, dogodke preverjanja pristnosti, spremembe življenjskega cikla poverilnic ponudnikov in klice orodij MCP v revizijske tabele, podprte s SQLite. Ta stran opisuje, kaj se beleži, kje so podatki shranjeni, kako dolgo se hranijo, kako lahko ključi API onemogočijo beleženje in kako poizvedovati po podatkih.
Implementacija je v src/lib/compliance/index.ts (T-43 — »Nadzor skladnosti«) in src/lib/compliance/providerAudit.ts. Revizijski zapisi nikoli ne sprožijo izjeme: ob kakršni koli napaki je klic tiho prezrt, zato revizijsko beleženje ne more prekiniti glavnega toka zahteve.
Kaj se beleži
Skrbniški revizijski dogodki (audit_log)
Vsak klic logAuditEvent({ action, actor, target, details, ... }) ustvari eno vrstico. Nizi dejanj sledijo vzorcu domain.verb (ali domain.verb.outcome). Potrjene vrste dejanj v izvornem drevesu vključujejo:
| Dejanje | Vir |
|---|---|
auth.login.success |
src/app/api/auth/login/route.ts |
auth.login.failed |
src/app/api/auth/login/route.ts |
auth.login.locked |
src/app/api/auth/login/route.ts |
auth.login.error |
src/app/api/auth/login/route.ts |
auth.login.misconfigured |
src/app/api/auth/login/route.ts |
auth.login.setup_required |
src/app/api/auth/login/route.ts |
auth.logout.success |
src/app/api/auth/logout/route.ts |
provider.credentials.created |
src/app/api/providers/route.ts |
provider.credentials.updated |
src/app/api/providers/[id]/route.ts |
provider.credentials.revoked |
src/app/api/providers/[id]/route.ts |
provider.credentials.batch_revoked |
src/app/api/providers/route.ts |
sync.token.created |
src/app/api/sync/tokens/route.ts |
sync.token.revoked |
src/app/api/sync/tokens/[id]/route.ts |
compliance.cleanup |
src/lib/compliance/index.ts |
Vsak vnos zajema action, actor (privzeto "system"), target, details/metadata (JSON), ip_address, resource_type, status, request_id in timestamp. Občutljivi ključi (apiKey, accessToken, refreshToken, password, vse, kar se ujema z *token/*secret/*apikey, itd.) se pred zapisom vrstice rekurzivno zakrijejo z "[redacted]".
Klici orodij MCP (mcp_tool_audit)
Vsak klic orodja MCP zapiše vrstico prek open-sse/mcp-server/audit.ts. Shema (iz src/lib/db/migrations/002_mcp_a2a_tables.sql):
| Stolpec | Opombe |
|---|---|
id |
samodejno povečanje |
tool_name |
identifikator orodja MCP |
input_hash |
sha256 vhoda (vsebina se ne shrani) |
output_summary |
kratek, skrajšan povzetek |
duration_ms |
pretečeni čas |
api_key_id |
klicatelj (lahko je ničelna vrednost) |
success |
1 / 0 |
error_code |
končna koda napake ob neuspehu |
created_at |
časovni žig ISO |
Dnevniki zahtev/uporabe
To so operativni telemetrijski podatki (in ne izključno skrbniška revizija), vendar uporabljajo isti postopek hrambe:
usage_history— zbirni podatki o uporabi za posamezno zahtevocall_logs— celoten dnevniški zapis posamezne zahteve (velja omejitev števila vrstic, glejte spodaj)proxy_logs— dnevnik prometa posredniškega strežnika (velja omejitev števila vrstic)request_detail_logs— starejši podrobni dnevnik zahtev (še vedno se obrezuje, če je prisoten)
Shema shranjevanja
Tabela audit_log se ob prvi uporabi ustvari po potrebi s funkcijo ensureAuditLogSchema():
CREATE TABLE IF NOT EXISTS audit_log (
id INTEGER PRIMARY KEY AUTOINCREMENT,
timestamp TEXT NOT NULL DEFAULT (datetime('now')),
action TEXT NOT NULL,
actor TEXT NOT NULL DEFAULT 'system',
target TEXT,
details TEXT,
ip_address TEXT,
resource_type TEXT,
status TEXT,
request_id TEXT,
metadata TEXT
);
Indeksi se ustvarijo za stolpce timestamp, action, actor, resource_type,
status in request_id. Manjkajoči stolpci v starejših podatkovnih zbirkah se
po potrebi dodajo z ukazom ALTER TABLE.
Hramba in čiščenje
Upoštevata se dve ločeni obdobji hrambe:
| Okoljska spremenljivka | Privzeto | Velja za |
|---|---|---|
APP_LOG_RETENTION_DAYS |
7 |
audit_log, mcp_tool_audit |
CALL_LOG_RETENTION_DAYS |
7 |
usage_history, call_logs, proxy_logs, request_detail_logs |
CALL_LOGS_TABLE_MAX_ROWS |
100000 |
Omejitev števila vrstic v call_logs |
PROXY_LOGS_TABLE_MAX_ROWS |
100000 |
Omejitev števila vrstic v proxy_logs |
Funkcija cleanupExpiredLogs() izvede čiščenje glede na obdobje hrambe. Ob
zagonu strežnika jo pokliče datoteka src/instrumentation-node.ts. Vsako
izvajanje zabeleži revizijski dogodek compliance.cleanup s številom izbrisanih
zapisov za posamezno tabelo. Obrezovanje dnevnikov posredniškega strežnika in
klicev poteka v paketih (BATCH_SIZE = 5000), da se preprečijo dolgotrajni
zaklepi za pisanje.
Ročno čiščenje zgodovine zahtev je ločeno od samodejnega čiščenja glede na
obdobje hrambe. Stran Dnevniki zahtev pokliče
POST /api/settings/purge-request-history, ki izbriše call_logs, starejšo
tabelo request_detail_logs in lokalne artefakte zahtev v
${DATA_DIR}/call_logs/.
Privzete vrednosti so določene v src/lib/logEnv.ts
(DEFAULT_APP_LOG_RETENTION_DAYS = 7, DEFAULT_CALL_LOG_RETENTION_DAYS = 7).
Izključitev noLog (za posamezen ključ API)
Ključe API je mogoče označiti tako, da se promet njihovih nadaljnjih klicev ne
beleži. Oznaka je shranjena v tabeli api_keys (no_log INTEGER DEFAULT 0) in
se zrcali v množico v pomnilniku za hitre poizvedbe na kritični poti.
# Ustvarite ključ brez beleženja (zahtevano je skrbniško preverjanje pristnosti)
curl -X POST http://localhost:20128/api/keys \
-H "Cookie: auth_token=..." \
-H "Content-Type: application/json" \
-d '{"name": "Privacy key", "noLog": true}'
Pomožne funkcije (src/lib/compliance/index.ts):
setNoLog(apiKeyId, true|false)— vklopi ali izklopi vnos v pomnilnikuisNoLog(apiKeyId)— preveri se na poti zahteve; če vnos ni na voljo, uporabi predpomnjeno branje vrednostiapi_keys.no_logz veljavnostjo 30 sNO_LOG_API_KEY_IDS(okoljska spremenljivka, vrednosti ločene z vejicami) — ob zagonu se vnaprej naloži v množico v pomnilniku; uporabno, kadar stolpca ne morete spreminjati neposredno
noLog ne vpliva na skrbniške revizijske dogodke (prijave, spremembe
ponudnikov, klice orodij MCP itd.) — izključiti je mogoče le beleženje prometa
posameznih zahtev.
REST API
| Končna točka | Metoda | Opis | Avtentikacija |
|---|---|---|---|
/api/compliance/audit-log |
GET |
Ostranjeni skrbniški revizijski vnosi s filtri | management |
/api/mcp/audit |
GET |
Ostranjeni revizijski vnosi orodij MCP | (open-sse) |
/api/mcp/audit/stats |
GET |
Združeni statistični podatki revizije MCP | (open-sse) |
Končna točka za izvoz CSV trenutno ni vključena — podatke izvozite z nadzorne plošče ali pa neposredno poizvedujte po zbirki podatkov SQLite.
Poizvedovanje po /api/compliance/audit-log
Podprti parametri poizvedbe (vsi so neobvezni, vsi besedilni filtri pa uporabljajo ujemanje LIKE %value%):
action,actor,target,resourceType(aliresource_type),status,requestId(alirequest_id)from/since,to/until— časovni žigi ISOlimit(privzeto50, najmanj1, največ500)offset(privzeto0, največ10_000)
Odgovor je polje JSON. Metapodatki o ostranjevanju so vrnjeni v glavah:
x-total-count, x-page-limit, x-page-offset.
curl "http://localhost:20128/api/compliance/audit-log?action=provider.credentials&from=2026-05-01" \
-H "Cookie: auth_token=..."
Nadzorna plošča
Nadzorna plošča prikazuje revizijske podatke na naslovu /dashboard/audit
(src/app/(dashboard)/dashboard/audit/page.tsx). Stran ima dva zavihka:
- Skladnost (
ComplianceTab.tsx) — skrbniški revizijski dogodki iz/api/compliance/audit-log. Filtriranje po vrsti dogodka, resnosti (informativno / opozorilo / kritično, izpeljano iz dejanja in stanja) ter časovnem obdobju. Resnost se izračuna na strani odjemalca iz nizov dejanja in stanja. - MCP (
McpAuditTab.tsx) — revizija orodij MCP iz/api/mcp/audits filtri po imenu orodja in uspehu/neuspehu.
Oba zavihka uporabljata ostranjevanje z velikostjo strani 50 (skladnost) oziroma 25 (MCP).
Pomožne funkcije za poverilnice ponudnikov
src/lib/compliance/providerAudit.ts zagotavlja pomožne funkcije za oblikovanje podatkov, ki jih
upravljavske poti ponudnikov uporabljajo pri oddajanju dogodkov poverilnic:
summarizeProviderConnectionForAudit(connection)— odstraniapiKey,accessToken,refreshToken,idTokeninproviderSpecificData.consoleApiKey, preden se posnetek povezave zapiše vdetails.getProviderAuditTarget(connection)— sestavi stabilen niz"<provider>:<name|id>"za poljetarget.extractProviderWarnings(...payloads)— pregleda odgovore ponudnikov in poišče opozorila glede pravilnikov/varnosti ([sanitizer],prompt injection detected,content has been filtered,safety filter,policy violation) ter izpostavi največ 5 zadetkov, pri čemer je vsak skrajšan na 400 znakov.
Najboljše prakse
- Ključe API, ki obdelujejo osebno določljive podatke (pravne, zdravstvene itd.), označite z
noLog: true. - Nastavite
APP_LOG_RETENTION_DAYS/CALL_LOG_RETENTION_DAYSskladno s svojo politiko hrambe. Privzeto 7-dnevno obdobje je konservativno. - Revizijsko tabelo izvozite zunaj platforme (
sqlite3 dump) tako pogosto, kot zahteva vaš program skladnosti — vgrajeno arhiviranje ne obstaja. - Spremljajte število dogodkov
auth.login.failedinauth.login.lockedza odkrivanje napadov z grobo silo. - Pri dodajanju novih skrbniških končnih točk pokličite
logAuditEvent({ ... })s stabilnim nizom dejanjadomain.verb.outcometer posredujte kontekst zahteve prekgetAuditRequestContext(request), da se naslov IP inrequestIdzajameta samodejno.
Glejte tudi
docs/security/GUARDRAILS.md— maskiranje osebno določljivih podatkov (PII), vrivanje pozivovdocs/frameworks/MCP-SERVER.md— katalog orodij MCP in obsegidocs/reference/ENVIRONMENT.md— celoten pregled spremenljivk okolja- Izvorna koda:
src/lib/compliance/,src/app/api/compliance/,src/app/api/mcp/audit/,src/lib/logEnv.ts