Files
OmniRoute/docs/i18n/ml/docs/security/COMPLIANCE.md
Diego Rodrigues de Sa e Souza 8feea123bb feat(docs): mirror every docs/ page in all 65 locales (#14106)
* 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.
2026-09-18 13:16:46 -03:00

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