* 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.
19 KiB
CLI Machine-ID Token (മലയാളം)
🌐 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
അവലോകനം
OmniRoute CLI കമാൻഡുകൾ പ്രാദേശിക മാനേജ്മെന്റ് API-യുമായി പ്രാമാണീകരിക്കുന്നത്
x-omniroute-cli-token അഭ്യർത്ഥനാ ഹെഡർ വഴി അയയ്ക്കുന്ന
HMAC-SHA256(machine-id, salt) ടോക്കൺ ഉപയോഗിച്ചാണ്.
ഓരോ തവണ പ്രവർത്തിപ്പിക്കുമ്പോഴും ഉപയോക്താവ് JWT അല്ലെങ്കിൽ പാസ്വേഡ് നൽകേണ്ടതില്ലാതെ
മാനേജ്മെന്റ് എൻഡ്പോയിന്റുകൾ വിളിക്കാൻ CLI ഉപകമാൻഡുകളെ (omniroute status,
omniroute providers തുടങ്ങിയവ) ഇത് അനുവദിക്കുന്നു.
ഇത് പ്രവർത്തിക്കുന്ന വിധം
getMachineTokenSync(),node-machine-idവഴി ഹാർഡ്വെയർ മെഷീൻ ID വായിക്കുന്നു (പരാജയപ്പെടുകയാണെങ്കിൽ ശൂന്യമായ സ്ട്രിംഗ് ഉപയോഗിക്കുന്നു, ഇതിലൂടെ CLI പ്രാമാണീകരണം പ്രവർത്തനരഹിതമാകുന്നു).- ഇത്
HMAC-SHA256(machine_id, salt)കണക്കാക്കി പൂർണ്ണമായ 64-പ്രതീകങ്ങളുള്ള ഹെക്സ് ഡൈജസ്റ്റ് മടക്കി നൽകുന്നു — ഈ മെഷീനുമായി ബന്ധിപ്പിച്ചിട്ടുള്ള, നിർണായകവും തിരിച്ച് കണ്ടെത്താനാവാത്തതുമായ ഒരു ടോക്കൺ. - പരിഹരിക്കപ്പെട്ട ലക്ഷ്യസ്ഥാനം വ്യക്തമായ ഒരു ലൂപ്പ്ബാക്ക് URL (
localhost,127.0.0.0/8, അല്ലെങ്കിൽ ലൂപ്പ്ബാക്ക് IPv6) ആയിരിക്കുമ്പോൾ മാത്രം CLI ടോക്കൺx-omniroute-cli-tokenആയി അയയ്ക്കുന്നു. ടോക്കൺ ഉൾക്കൊള്ളുന്ന അഭ്യർത്ഥനകൾredirect: errorഉപയോഗിക്കുന്നതിനാൽ, ഒരു പ്രാദേശിക റീഡയറക്ടിന് അത് മറ്റൊരു ഒറിജിനിലേക്ക് ഫോർവേഡ് ചെയ്യാനാവില്ല. റിമോട്ട് കോൺടെക്സ്റ്റുകൾ പകരം സ്കോപ്പ് ചെയ്ത ആക്സസ് ടോക്കണുകൾ ഉപയോഗിക്കുന്നു. ടോക്കൺ നിർമാണം ലഭ്യമല്ലെങ്കിൽ, CLI ഹെഡർ ഒഴിവാക്കുകയും ശൂന്യമായ ടോക്കണിനെ സാധുവായി കണക്കാക്കുന്നതിനുപകരംomniroute doctorപരാജയം റിപ്പോർട്ട് ചെയ്യുകയും ചെയ്യുന്നു. - സെർവർ (
src/server/authz/policies/management.ts) അതേ സാൾട്ട് ഉപയോഗിച്ച് പ്രതീക്ഷിക്കുന്ന ടോക്കൺ വീണ്ടും കണക്കാക്കുകയും സമയത്തെ അടിസ്ഥാനമാക്കിയുള്ള വേർതിരിച്ചെടുക്കൽ തടയാൻtimingSafeEqualവഴി താരതമ്യം ചെയ്യുകയും ചെയ്യുന്നു.
സുരക്ഷാ സവിശേഷതകൾ
| സവിശേഷത | വിശദാംശം |
|---|---|
| ലൂപ്പ്ബാക്കിൽ മാത്രം | സെർവറിന്റെ വിശ്വസനീയമായ പിയർ-ലോക്കാലിറ്റി സ്റ്റാമ്പ് (യഥാർഥ TCP പിയർ വിലാസത്തിൽനിന്ന് നിർണയിക്കുന്നത്) ലൂപ്പ്ബാക്ക് ആണെന്ന് സൂചിപ്പിക്കുമ്പോൾ മാത്രം സ്വീകരിക്കുന്നു. ക്ലയന്റ് നിയന്ത്രിക്കുന്ന Host ഹെഡറിനെ ലോക്കാലിറ്റി നിർണയിക്കാൻ ഒരിക്കലും വിശ്വസിക്കുന്നില്ല. |
| സ്ഥിര-സമയ താരതമ്യം | crypto.timingSafeEqual ടൈമിംഗ് ആക്രമണങ്ങൾ തടയുന്നു. |
| തിരിച്ച് കണ്ടെത്താനാവാത്തത് | HMAC ഔട്ട്പുട്ടിൽനിന്ന് machine-id വീണ്ടെടുക്കാനാവില്ല. |
always-പരിരക്ഷിത ബൈപാസ് ഇല്ല |
CLI ടോക്കൺ പരിശോധിക്കുന്നതിന് മുമ്പ് isAlwaysProtectedPath() വിലയിരുത്തുന്നു. /api/shutdown, /api/settings/database എന്നിവയ്ക്ക് എല്ലായ്പ്പോഴും JWT ആവശ്യമാണ്. |
| എക്സ്പോർട്ട് ചെയ്യാനാവാത്തത് | ടോക്കൺ ഒരിക്കലും ഡിസ്കിലേക്ക് എഴുതുകയോ ലോഗ് ചെയ്യുകയോ ചെയ്യുന്നില്ല. |
ഡിഫോൾട്ട് സാൾട്ട് (ഓരോ ഇൻസ്റ്റാളിലും ക്രമരഹിതം)
OMNIROUTE_CLI_SALT സജ്ജീകരിച്ചിട്ടില്ലെങ്കിൽ, സാൾട്ട് ഒരിക്കൽ സൃഷ്ടിച്ച്
<DATA_DIR>/cli-token-salt.json-ൽ (മോഡ് 0600) സ്ഥിരമായി സൂക്ഷിക്കുന്ന,
ക്രമരഹിതമായ 64-പ്രതീകങ്ങളുള്ള ഹെക്സ് സ്ട്രിംഗായിരിക്കും — റിപ്പോസിറ്ററിയിൽ ഉൾപ്പെടുത്തിയിരിക്കുന്ന
omniroute-cli-auth-v1 എന്ന ലിറ്ററൽ അല്ല. src/lib/machineToken.ts-ലെ
getActiveSalt()-ഉം bin/cli/utils/cliToken.mjs-ലെ അതിന്റെ പകർപ്പും ഒരേ
ഫയൽ വായിക്കുന്നതിനാൽ, ഈ ഇൻസ്റ്റാളിലെ സെർവറും ഓരോ CLI പ്രവർത്തനവും ഒരേ മൂല്യത്തിൽ
ഒത്തുചേരുന്നു; സ്ഥിരമായി സൂക്ഷിച്ച സാൾട്ടോ എൻവയോ ഇതുവരെ സ്ഥാപിക്കാനാകാത്തപ്പോൾ മാത്രം
റിപ്പോസിറ്ററിയിൽ ഉൾപ്പെടുത്തിയിരിക്കുന്ന ലിറ്ററൽ അവസാന ആശ്രയമായി ഉപയോഗിക്കുന്നു
(ഉദാഹരണത്തിന്, സെർവർ ഇതുവരെ പ്രവർത്തിപ്പിച്ചിട്ടില്ലാത്ത ഒരു പുതിയ CLI-മാത്രമുള്ള ഇൻസ്റ്റാൾ).
ഇത് പഴയ സ്ഥിരമായ ലിറ്ററൽ ഡിഫോൾട്ടിന്റെ ഒരു ദൗർബല്യം പരിഹരിക്കുന്നു:
/etc/machine-id സാധാരണയായി എല്ലാവർക്കും വായിക്കാനാകുന്നതാണ്, അതിനാൽ
OMNIROUTE_CLI_SALT ഒരിക്കലും സജ്ജീകരിച്ചിട്ടില്ലാത്ത ഓരോ ഇൻസ്റ്റാളിനും ഏതൊരു
പ്രാദേശിക ഉപയോക്താവിനും അതേ ടോക്കൺ നിർമിക്കാനാകുമായിരുന്നു.
സാൾട്ട് റൊട്ടേഷൻ
കോഡ് മാറ്റങ്ങളില്ലാതെ ഡെറൈവ് ചെയ്ത ടോക്കൺ റൊട്ടേറ്റ് ചെയ്യാൻ OMNIROUTE_CLI_SALT സജ്ജമാക്കുക — സ്ഥിരമായി സൂക്ഷിച്ചിരിക്കുന്ന ഓരോ ഇൻസ്റ്റാളേഷനിലെയും സാൾട്ടിനെക്കാൾ ഇതിന് എല്ലായ്പ്പോഴും മുൻഗണനയുണ്ട്. റൊട്ടേഷനുശേഷം, ഈ മെഷീനിലെ എല്ലാ CLI പ്രോസസ്സുകളും പുതിയ ടോക്കൺ സ്വയമേവ ഉപയോഗിക്കും. മുമ്പ് ഡെറൈവ് ചെയ്ത മൂല്യം വെളിപ്പെടുത്തിയിരിക്കാനിടയുള്ള ഒരു പ്രോസസ്-ലിസ്റ്റ് ചോർച്ചയ്ക്കുശേഷം ഇത് ഉപകാരപ്രദമാണ്.
# സ്ഥിരമായ റൊട്ടേഷൻ (ഷെൽ പ്രൊഫൈലിലേക്ക് ചേർക്കുക)
export OMNIROUTE_CLI_SALT="my-secret-salt-2026"
# പുതിയ ടോക്കൺ ഉപയോഗത്തിലുണ്ടെന്ന് പരിശോധിക്കുക
omniroute status
ലെഗസി ഫോർമാറ്റ് (SHA-256, 32 പ്രതീകങ്ങൾ) — ഇപ്പോഴും സ്വീകരിക്കുന്നു
മുകളിലുള്ള HMAC ഫോർമാറ്റിന് മുമ്പ്, CLI അതിന്റെ ടോക്കൺ
SHA-256(machineId + salt).hex[0..32] (bin/cli/utils/cliToken.mjs-ൽ ഒരു 32-പ്രതീക പ്രിഫിക്സ്; src/lib/machineToken.ts-ൽ getLegacyCliTokenSync) ആയി ഡെറൈവ് ചെയ്തിരുന്നു.
പിന്നോട്ടുള്ള അനുയോജ്യതയ്ക്കായി സെർവർ രണ്ട് ഫോർമാറ്റുകളും സ്വീകരിക്കുന്നു: വെരിഫയർ
expectedTokens = [getMachineTokenSync(), getLegacyCliTokenSync()] നിർമ്മിക്കുകയും ഇൻകമിങ് ഹെഡറിനെ ഓരോന്നുമായും timingSafeEqual ഉപയോഗിച്ച് താരതമ്യം ചെയ്യുകയും ചെയ്യുന്നു
(src/server/authz/policies/management.ts, src/lib/middleware/cliTokenAuth.ts എന്നിവയിൽ).
അതുകൊണ്ട്, ഒരു ടോക്കൺ 64-പ്രതീക HMAC ഡൈജസ്റ്റുമായോ 32-പ്രതീക ലെഗസി SHA-256 പ്രിഫിക്സുമായോ ഏതെങ്കിലും ഒന്നുമായി പൊരുത്തപ്പെടുന്നുവെങ്കിൽ അത് സാധുവാണ്.
ഒഴിവാക്കൽ: CLI ടോക്കൺ സംവിധാനം പൂർണ്ണമായും പ്രവർത്തനരഹിതമാക്കാൻ OMNIROUTE_DISABLE_CLI_TOKEN=true (env അല്ലെങ്കിൽ .env) സജ്ജമാക്കുക; തുടർന്ന് എല്ലാ ആക്സസിനും വ്യക്തമായി നൽകിയ API കീ ആവശ്യമാണ്. machine-id ഓരോ ഉപയോക്താവിനുമല്ല, ഓരോ ഉപകരണത്തിനുമുള്ളതായതിനാൽ, ഒരേ ഹോസ്റ്റിലെ മറ്റൊരു ഉപയോക്താവിന് അതേ ടോക്കൺ കണക്കാക്കാൻ കഴിയാം; അതിനാൽ മൾട്ടി-യൂസർ ഹോസ്റ്റുകളിൽ ഇത് ശുപാർശ ചെയ്യുന്നു.
ഫയലുകൾ
| ഫയൽ | ഉദ്ദേശ്യം |
|---|---|
src/lib/machineToken.ts |
ടോക്കൺ ഡെറൈവേഷൻ (getMachineTokenSync) |
bin/cli/utils/cliToken.mjs |
അതേ ഡെറൈവേഷന്റെ CLI-വശ മിറർ |
<DATA_DIR>/cli-token-salt.json |
ഓരോ ഇൻസ്റ്റാളേഷനിലെയും സ്ഥിരമായി സൂക്ഷിച്ചിരിക്കുന്ന റാൻഡം സാൾട്ട് |
src/server/authz/headers.ts |
CLI_TOKEN_HEADER സ്ഥിരാങ്കം |
src/server/authz/policies/management.ts |
സെർവർ-വശ വെരിഫിക്കേഷൻ |
src/server/authz/routeGuard.ts |
ലൂപ്പ്ബാക്ക് ഹോസ്റ്റ് പരിശോധന (isLoopbackHost) |
ഇതും കാണുക
docs/security/ROUTE_GUARD_TIERS.md— റൂട്ട് സംരക്ഷണ ടിയറുകൾdocs/architecture/AUTHZ_GUIDE.md— പൂർണ്ണ ഓതറൈസേഷൻ പൈപ്പ്ലൈൻ