* 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.
25 KiB
Compliance & Audit (മലയാളം)
🌐 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 · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW
ആധികാരിക ഉറവിടം:
src/lib/compliance/,src/app/api/compliance/അവസാനം പുതുക്കിയത്: 2026-06-28 — v3.8.40
OmniRoute അഡ്മിനിസ്ട്രേറ്റീവ് പ്രവർത്തനങ്ങൾ, ഓതന്റിക്കേഷൻ ഇവന്റുകൾ, പ്രൊവൈഡർ ക്രെഡൻഷ്യൽ ലൈഫ്സൈക്കിൾ മാറ്റങ്ങൾ, MCP ടൂൾ ഇൻവൊക്കേഷനുകൾ എന്നിവ SQLite-അധിഷ്ഠിത ഓഡിറ്റ് ടേബിളുകളിൽ രേഖപ്പെടുത്തുന്നു. എന്തൊക്കെയാണ് ലോഗ് ചെയ്യപ്പെടുന്നത്, അവ എവിടെയാണ് സൂക്ഷിക്കുന്നത്, എത്രകാലം നിലനിർത്തുന്നു, API കീകൾക്ക് എങ്ങനെ ലോഗിംഗിൽനിന്ന് ഒഴിവാകാം, ഡാറ്റ എങ്ങനെ ക്വറി ചെയ്യാം എന്നിവ ഈ പേജിൽ വിവരിക്കുന്നു.
ഇംപ്ലിമെന്റേഷൻ src/lib/compliance/index.ts (T-43 — "കംപ്ലയൻസ്
നിയന്ത്രണങ്ങൾ"), src/lib/compliance/providerAudit.ts എന്നിവയിലാണ്. ഓഡിറ്റ് റൈറ്റുകൾ ഒരിക്കലും എറർ ത്രോ ചെയ്യില്ല:
എന്തെങ്കിലും പരാജയം സംഭവിച്ചാൽ കോൾ നിശ്ശബ്ദമായി അവഗണിക്കപ്പെടുന്നതിനാൽ ഓഡിറ്റ് ലോഗിംഗ്
പ്രധാന റിക്വസ്റ്റ് ഫ്ലോയെ തടസ്സപ്പെടുത്തില്ല.
എന്തൊക്കെയാണ് ലോഗ് ചെയ്യപ്പെടുന്നത്
അഡ്മിനിസ്ട്രേറ്റീവ് ഓഡിറ്റ് ഇവന്റുകൾ (audit_log)
logAuditEvent({ action, actor, target, details, ... })-ലേക്കുള്ള ഓരോ കോളും
ഒരു റോ സൃഷ്ടിക്കുന്നു. ആക്ഷൻ സ്ട്രിങ്ങുകൾ domain.verb (അല്ലെങ്കിൽ domain.verb.outcome)
പാറ്റേൺ പിന്തുടരുന്നു. സോഴ്സ് ട്രീയിൽ സ്ഥിരീകരിച്ചിട്ടുള്ള ആക്ഷൻ തരങ്ങളിൽ ഇവ ഉൾപ്പെടുന്നു:
| ആക്ഷൻ | ഉറവിടം |
|---|---|
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 |
ഓരോ എൻട്രിയും action, actor (ഡിഫോൾട്ട് "system"), target,
details/metadata (JSON), ip_address, resource_type, status,
request_id, timestamp എന്നിവ രേഖപ്പെടുത്തുന്നു. സെൻസിറ്റീവ് കീകൾ (apiKey, accessToken,
refreshToken, password, *token/*secret/*apikey എന്നിവയുമായി പൊരുത്തപ്പെടുന്ന ഏതും,
തുടങ്ങിയവ) റോ എഴുതുന്നതിന് മുമ്പ് ആവർത്തിതമായി "[redacted]" ആക്കി മറയ്ക്കുന്നു.
MCP ടൂൾ കോളുകൾ (mcp_tool_audit)
ഓരോ MCP ടൂൾ ഇൻവൊക്കേഷനും
open-sse/mcp-server/audit.ts വഴി ഒരു റോ എഴുതുന്നു. സ്കീമ
(src/lib/db/migrations/002_mcp_a2a_tables.sql-ൽ നിന്ന്):
| കോളം | കുറിപ്പുകൾ |
|---|---|
id |
സ്വയമേവ വർധിക്കുന്നത് |
tool_name |
MCP ടൂൾ ഐഡന്റിഫയർ |
input_hash |
ഇൻപുട്ടിന്റെ sha256 (പേലോഡ് സൂക്ഷിക്കില്ല) |
output_summary |
ഹ്രസ്വവും ചുരുക്കിയതുമായ സംഗ്രഹം |
duration_ms |
യഥാർത്ഥ സമയദൈർഘ്യം |
api_key_id |
കോളർ (nullable) |
success |
1 / 0 |
error_code |
പരാജയത്തിൽ ലഭിക്കുന്ന അന്തിമ എറർ കോഡ് |
created_at |
ISO ടൈംസ്റ്റാമ്പ് |
റിക്വസ്റ്റ് / ഉപയോഗ ലോഗുകൾ
ഇവ പ്രവർത്തനപരമായ ടെലിമെട്രിയാണ് (കർശനമായി അഡ്മിൻ ഓഡിറ്റ് അല്ല), എന്നാൽ ഒരേ റിറ്റെൻഷൻ പൈപ്പ്ലൈൻ പങ്കിടുന്നു:
usage_history— ഓരോ റിക്വസ്റ്റിന്റെയും ഉപയോഗ റോൾ-അപ്പ്call_logs— ഓരോ റിക്വസ്റ്റിന്റെയും പൂർണ്ണ ലോഗ് (റോ പരിധിക്ക് വിധേയം, താഴെ കാണുക)proxy_logs— പ്രോക്സി ട്രാഫിക് ലോഗ് (റോ പരിധിക്ക് വിധേയം)request_detail_logs— ലെഗസി വിശദമായ റിക്വസ്റ്റ് ലോഗ് (നിലവിലുണ്ടെങ്കിൽ ഇപ്പോഴും പ്രൂൺ ചെയ്യപ്പെടും)
സ്റ്റോറേജ് സ്കീമ
ആദ്യ ഉപയോഗത്തിൽ ensureAuditLogSchema() വഴി audit_log ആവശ്യാനുസരണം സൃഷ്ടിക്കപ്പെടുന്നു:
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
);
timestamp, action, actor, resource_type, status, request_id എന്നിവയിൽ ഇൻഡെക്സുകൾ സൃഷ്ടിക്കപ്പെടുന്നു. പഴയ DB-കളിൽ കാണാത്ത കോളങ്ങൾ ആവശ്യാനുസരണം ALTER TABLE വഴി ചേർക്കപ്പെടുന്നു.
നിലനിർത്തലും ശുചീകരണവും
വ്യത്യസ്തമായ രണ്ട് നിലനിർത്തൽ കാലയളവുകൾ പാലിക്കപ്പെടുന്നു:
| പരിസ്ഥിതി വേരിയബിൾ | ഡിഫോൾട്ട് | ബാധകമാകുന്നത് |
|---|---|---|
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 |
call_logs-നുള്ള വരി-പരിധി ട്രിമ്മിങ് |
PROXY_LOGS_TABLE_MAX_ROWS |
100000 |
proxy_logs-നുള്ള വരി-പരിധി ട്രിമ്മിങ് |
cleanupExpiredLogs() നിലനിർത്തൽ നടപടിക്രമം പ്രവർത്തിപ്പിക്കുന്നു. സെർവർ ആരംഭിക്കുമ്പോൾ src/instrumentation-node.ts-ൽ നിന്ന് ഇത് വിളിക്കപ്പെടുന്നു. ഓരോ പ്രവർത്തനവും ഓരോ പട്ടികയിലെയും ഇല്ലാതാക്കൽ എണ്ണങ്ങൾ ഉൾപ്പെടുത്തി ഒരു compliance.cleanup ഓഡിറ്റ് ഇവന്റ് ലോഗ് ചെയ്യുന്നു. ദൈർഘ്യമേറിയ റൈറ്റ് ലോക്കുകൾ ഒഴിവാക്കുന്നതിനായി പ്രോക്സി/കോൾ ലോഗ് ട്രിമ്മിങ് ബാച്ചുകളായാണ് (BATCH_SIZE = 5000) നടത്തുന്നത്.
മാനുവൽ റിക്വസ്റ്റ്-ഹിസ്റ്ററി ശുചീകരണം നിലനിർത്തൽ നടപടിക്രമത്തിൽ നിന്ന് വേറിട്ടതാണ്. Request Logs പേജ് POST /api/settings/purge-request-history വിളിക്കുന്നു; ഇത് call_logs, പഴയ request_detail_logs, ${DATA_DIR}/call_logs/-ന് കീഴിലുള്ള ലോക്കൽ റിക്വസ്റ്റ് ആർട്ടിഫാക്റ്റുകൾ എന്നിവ ഇല്ലാതാക്കുന്നു.
ഡിഫോൾട്ടുകൾ src/lib/logEnv.ts-ൽ നിർവചിച്ചിരിക്കുന്നു
(DEFAULT_APP_LOG_RETENTION_DAYS = 7, DEFAULT_CALL_LOG_RETENTION_DAYS = 7).
noLog ഒഴിവാക്കൽ ഓപ്ഷൻ (ഓരോ API കീയ്ക്കും)
API കീകളുടെ ഡൗൺസ്ട്രീം കോൾ ട്രാഫിക് ലോഗ് ചെയ്യാതിരിക്കാൻ അവയ്ക്ക് ഫ്ലാഗ് നൽകാം. ഈ ഫ്ലാഗ് api_keys പട്ടികയിലാണ് (no_log INTEGER DEFAULT 0) സൂക്ഷിക്കുന്നത്; വേഗത്തിലുള്ള പാത്ത് ലുക്കപ്പുകൾക്കായി ഇത് ഒരു ഇൻ-മെമ്മറി സെറ്റിലേക്കും പകർത്തപ്പെടുന്നു.
# ലോഗ് ചെയ്യാത്ത ഒരു കീ സൃഷ്ടിക്കുക (മാനേജ്മെന്റ് ഓതന്റിക്കേഷൻ ആവശ്യമാണ്)
curl -X POST http://localhost:20128/api/keys \
-H "Cookie: auth_token=..." \
-H "Content-Type: application/json" \
-d '{"name": "Privacy key", "noLog": true}'
സഹായക ഫങ്ഷനുകൾ (src/lib/compliance/index.ts):
setNoLog(apiKeyId, true|false)— ഇൻ-മെമ്മറി എൻട്രി ടോഗിൾ ചെയ്യുന്നുisNoLog(apiKeyId)— റിക്വസ്റ്റ് പാത്തിൽ പരിശോധിക്കുന്നു; ലഭ്യമല്ലെങ്കിൽapi_keys.no_log-ൽ നിന്ന് 30 സെക്കൻഡ് കാഷ് ചെയ്ത റീഡിലേക്ക് മടങ്ങുന്നുNO_LOG_API_KEY_IDS(env, കോമ ഉപയോഗിച്ച് വേർതിരിച്ചത്) — ബൂട്ട് സമയത്ത് ഇൻ-മെമ്മറി സെറ്റിലേക്ക് മുൻകൂട്ടി ലോഡ് ചെയ്യുന്നു; കോളം നേരിട്ട് ടോഗിൾ ചെയ്യാൻ കഴിയാത്തപ്പോൾ ഇത് പ്രയോജനകരമാണ്
അഡ്മിനിസ്ട്രേറ്റീവ് ഓഡിറ്റ് ഇവന്റുകളെ (ലോഗിൻ, പ്രൊവൈഡർ മാറ്റങ്ങൾ, MCP ടൂൾ കോളുകൾ മുതലായവ) noLog ബാധിക്കില്ല — ഓരോ റിക്വസ്റ്റുമായും ബന്ധപ്പെട്ട ട്രാഫിക് ലോഗിങ്ങിൽ നിന്ന് മാത്രമാണ് ഒഴിവാകുന്നത്.
REST API
| എൻഡ്പോയിന്റ് | രീതി | വിവരണം | പ്രാമാണീകരണം |
|---|---|---|---|
/api/compliance/audit-log |
GET |
ഫിൽട്ടറുകളോടുകൂടിയ, പേജുകളായി വിഭജിച്ച അഡ്മിൻ ഓഡിറ്റ് എൻട്രികൾ | മാനേജ്മെന്റ് |
/api/mcp/audit |
GET |
പേജുകളായി വിഭജിച്ച MCP ടൂൾ ഓഡിറ്റ് എൻട്രികൾ | (open-sse) |
/api/mcp/audit/stats |
GET |
സമാഹരിച്ച MCP ഓഡിറ്റ് സ്ഥിതിവിവരക്കണക്കുകൾ | (open-sse) |
നിലവിൽ CSV എക്സ്പോർട്ട് എൻഡ്പോയിന്റ് ലഭ്യമല്ല — ഡാഷ്ബോർഡിൽ നിന്ന് എക്സ്പോർട്ട് ചെയ്യുക അല്ലെങ്കിൽ SQLite ഡാറ്റാബേസിൽ നേരിട്ട് ക്വറി നടത്തുക.
/api/compliance/audit-log ക്വറി ചെയ്യൽ
പിന്തുണയ്ക്കുന്ന ക്വറി പാരാമീറ്ററുകൾ (എല്ലാം ഐച്ഛികമാണ്; ടെക്സ്റ്റ് ഫിൽട്ടറുകൾക്ക് എല്ലാം
LIKE %value% പൊരുത്തപ്പെടുത്തൽ ഉപയോഗിക്കുന്നു):
action,actor,target,resourceType(അല്ലെങ്കിൽresource_type),status,requestId(അല്ലെങ്കിൽrequest_id)from/since,to/until— ISO ടൈംസ്റ്റാമ്പുകൾlimit(ഡിഫോൾട്ട്50, കുറഞ്ഞത്1, പരമാവധി500)offset(ഡിഫോൾട്ട്0, പരമാവധി10_000)
പ്രതികരണം ഒരു JSON അറേയാണ്. പേജിനേഷൻ മെറ്റാഡാറ്റ ഹെഡറുകളിൽ നൽകുന്നു:
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=..."
ഡാഷ്ബോർഡ്
ഡാഷ്ബോർഡ് ഓഡിറ്റ് ഡാറ്റ /dashboard/audit എന്നതിൽ ലഭ്യമാക്കുന്നു
(src/app/(dashboard)/dashboard/audit/page.tsx). പേജിൽ രണ്ട് ടാബുകളുണ്ട്:
- കംപ്ലയൻസ് (
ComplianceTab.tsx) —/api/compliance/audit-log-ൽ നിന്നുള്ള അഡ്മിൻ ഓഡിറ്റ് ഇവന്റുകൾ. ഇവന്റ് തരം, തീവ്രത (വിവരം / മുന്നറിയിപ്പ് / ഗുരുതരം; ആക്ഷൻ + സ്റ്റാറ്റസിൽ നിന്ന് നിർണ്ണയിക്കുന്നത്), തീയതി പരിധി എന്നിവ പ്രകാരം ഫിൽട്ടർ ചെയ്യുന്നു. തീവ്രത ആക്ഷൻ/സ്റ്റാറ്റസ് സ്ട്രിങ്ങുകളിൽ നിന്ന് ക്ലയന്റ് ഭാഗത്ത് കണക്കാക്കുന്നു. - MCP (
McpAuditTab.tsx) —/api/mcp/audit-ൽ നിന്നുള്ള MCP ടൂൾ ഓഡിറ്റ്, ടൂളിന്റെ പേര്, വിജയം/പരാജയം എന്നിവ പ്രകാരമുള്ള ഫിൽട്ടറുകളോടെ.
രണ്ട് ടാബുകളും യഥാക്രമം 50 (കംപ്ലയൻസ്), 25 (MCP) എന്ന പേജ് വലുപ്പത്തിൽ പേജിനേറ്റ് ചെയ്യുന്നു.
പ്രൊവൈഡർ ക്രെഡൻഷ്യൽ ഹെൽപ്പറുകൾ
ക്രെഡൻഷ്യൽ ഇവന്റുകൾ പുറപ്പെടുവിക്കുമ്പോൾ പ്രൊവൈഡർ-മാനേജ്മെന്റ് റൂട്ടുകൾ ഉപയോഗിക്കുന്ന
രൂപപ്പെടുത്തൽ ഹെൽപ്പറുകൾ src/lib/compliance/providerAudit.ts നൽകുന്നു:
summarizeProviderConnectionForAudit(connection)— കണക്ഷൻ സ്നാപ്പ്ഷോട്ട്details-ലേക്ക് എഴുതുന്നതിന് മുമ്പ്apiKey,accessToken,refreshToken,idToken,providerSpecificData.consoleApiKeyഎന്നിവ നീക്കംചെയ്യുന്നു.getProviderAuditTarget(connection)—targetഫീൽഡിനായി സ്ഥിരതയുള്ള"<provider>:<name|id>"സ്ട്രിങ് തയ്യാറാക്കുന്നു.extractProviderWarnings(...payloads)— പ്രൊവൈഡർ പ്രതികരണങ്ങളിൽ പോളിസി/സുരക്ഷാ മുന്നറിയിപ്പുകൾ ([sanitizer],prompt injection detected,content has been filtered,safety filter,policy violation) തിരയുകയും പരമാവധി 5 പൊരുത്തങ്ങൾ പുറത്തെടുക്കുകയും ചെയ്യുന്നു; ഓരോന്നും 400 പ്രതീകങ്ങളായി ചുരുക്കുന്നു.
മികച്ച രീതികൾ
- PII (നിയമപരം, മെഡിക്കൽ മുതലായവ) കൈകാര്യം ചെയ്യുന്ന API കീകളെ
noLog: trueഉപയോഗിച്ച് അടയാളപ്പെടുത്തുക. - നിങ്ങളുടെ നിലനിർത്തൽ നയം പാലിക്കുന്നതിന്
APP_LOG_RETENTION_DAYS/CALL_LOG_RETENTION_DAYSക്രമീകരിക്കുക. ഡിഫോൾട്ട് 7 ദിവസം യാഥാസ്ഥിതികമാണ്. - നിങ്ങളുടെ കംപ്ലയൻസ് പ്രോഗ്രാം ആവശ്യപ്പെടുന്ന ഇടവേളയിൽ ഓഡിറ്റ് പട്ടിക പ്ലാറ്റ്ഫോമിന് പുറത്തേക്ക്
(
sqlite3 dump) എക്സ്പോർട്ട് ചെയ്യുക — ബിൽറ്റ്-ഇൻ ആർക്കൈവിംഗ് നിലവിലില്ല. - ബ്രൂട്ട്-ഫോഴ്സ് കണ്ടെത്തലിനായി
auth.login.failed,auth.login.lockedഎന്നിവയുടെ എണ്ണം നിരീക്ഷിക്കുക. - പുതിയ അഡ്മിൻ എൻഡ്പോയിന്റുകൾ ചേർക്കുമ്പോൾ, സ്ഥിരതയുള്ള
domain.verb.outcomeആക്ഷൻ സ്ട്രിങ്ങോടെlogAuditEvent({ ... })വിളിക്കുകയും, IP-യുംrequestId-യും സ്വയമേവ ശേഖരിക്കാൻgetAuditRequestContext(request)വഴി റിക്വസ്റ്റ് കോൺടെക്സ്റ്റ് നൽകുകയും ചെയ്യുക.
ഇതും കാണുക
docs/security/GUARDRAILS.md— PII മാസ്കിംഗ്, പ്രോംപ്റ്റ് ഇൻജെക്ഷൻdocs/frameworks/MCP-SERVER.md— MCP ടൂൾ കാറ്റലോഗും സ്കോപ്പുകളുംdocs/reference/ENVIRONMENT.md— പൂർണ്ണമായ എൻവയോൺമെന്റ് വേരിയബിൾ റഫറൻസ്- ഉറവിടം:
src/lib/compliance/,src/app/api/compliance/,src/app/api/mcp/audit/,src/lib/logEnv.ts