Files
OmniRoute/docs/i18n/sr/docs/security/CLI_TOKEN.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

14 KiB
Raw Blame History

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 · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW


Преглед

OmniRoute CLI команде се аутентификују на локалном API-ју за управљање помоћу токена HMAC-SHA256(machine-id, salt) који се шаље преко заглавља захтева x-omniroute-cli-token.

Ово омогућава CLI поткомандама (omniroute status, omniroute providers итд.) да позивају крајње тачке за управљање без потребе да корисник при сваком позиву наводи JWT или лозинку.

Како функционише

  1. getMachineTokenSync() чита хардверски ID машине преко пакета node-machine-id (у случају неуспеха користи празан стринг, чиме се онемогућава CLI аутентификација).
  2. Израчунава HMAC-SHA256(machine_id, salt) и враћа комплетан хексадецимални сажетак од 64 знака — детерминистички, неповратни токен везан за ову машину.
  3. CLI шаље токен као x-omniroute-cli-token само када је разрешено одредиште експлицитна URL адреса повратне петље (localhost, 127.0.0.0/8 или IPv6 повратне петље). Захтеви који садрже токен користе redirect: error, тако да локално преусмеравање не може да га проследи другом извору. Удаљени контексти уместо тога користе приступне токене ограниченог опсега. Ако извођење токена није доступно, CLI изоставља заглавље, а omniroute doctor пријављује грешку уместо да празан токен сматра важећим.
  4. Сервер (src/server/authz/policies/management.ts) поново израчунава очекивани токен са истом сољу и пореди га помоћу timingSafeEqual како би спречио издвајање засновано на временским разликама.

Безбедносна својства

Својство Детаљ
Само повратна петља Прихвата се само када серверска поуздана ознака локалности равноправног чвора (изведена из стварне TCP адресе равноправног чвора) указује на повратну петљу. Клијентски контролисано заглавље Host никада се не сматра поузданим за утврђивање локалности.
Поређење у константном времену crypto.timingSafeEqual спречава временске нападе.
Неповратно Из HMAC излаза није могуће повратити ID машине.
Без заобилажења за путање заштићене са always isAlwaysProtectedPath() се проверава пре провере CLI токена. /api/shutdown и /api/settings/database увек захтевају JWT.
Не може се извести Токен се никада не уписује на диск нити бележи у евиденцију.

Подразумевана со (насумична за сваку инсталацију)

Када OMNIROUTE_CLI_SALT није постављен, со је насумични хексадецимални стринг од 64 знака који се генерише једном и трајно чува у <DATA_DIR>/cli-token-salt.json (режим 0600) — а не литерал omniroute-cli-auth-v1 који се налази у изворном коду. И getActiveSalt() у src/lib/machineToken.ts и његов пандан у 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] (префикс од 32 знака) у bin/cli/utils/cliToken.mjs (getLegacyCliTokenSync у src/lib/machineToken.ts).

Ради компатибилности уназад, сервер прихвата оба формата: верификатор формира expectedTokens = [getMachineTokenSync(), getLegacyCliTokenSync()] и пореди долазно заглавље са сваким помоћу timingSafeEqual (src/server/authz/policies/management.ts и src/lib/middleware/cliTokenAuth.ts). Дакле, токен је важећи ако се подудара или са HMAC сажетком од 64 знака или са застарелим SHA-256 префиксом од 32 знака.

Онемогућавање: подесите OMNIROUTE_DISABLE_CLI_TOKEN=true (у окружењу или .env) да бисте потпуно онемогућили механизам CLI токена; тада је за сваки приступ потребан експлицитан 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 Провера loopback хоста (isLoopbackHost)

Погледајте и

  • docs/security/ROUTE_GUARD_TIERS.md — нивои заштите рута
  • docs/architecture/AUTHZ_GUIDE.md — комплетан ток ауторизације