Files
OmniRoute/docs/i18n/no/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

10 KiB
Raw Blame History

CLI Machine-ID Token (Norsk)

🌐 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 · 🇮🇳 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


Oversikt

OmniRoute CLI-kommandoer autentiseres mot det lokale administrasjons-API-et ved hjelp av et HMAC-SHA256(machine-id, salt)-token som sendes via forespørselshodet x-omniroute-cli-token.

Dette gjør at CLI-underkommandoer (omniroute status, omniroute providers osv.) kan kalle administrasjonsendepunkter uten at brukeren må oppgi et JWT eller passord ved hver kjøring.

Slik fungerer det

  1. getMachineTokenSync() leser maskinens maskinvare-ID via node-machine-id (går tilbake til en tom streng ved feil, noe som deaktiverer CLI-autentisering).
  2. Den beregner HMAC-SHA256(machine_id, salt) og returnerer hele den 64 tegn lange heksadesimale kontrollsummen et deterministisk, ikke-reversibelt token knyttet til denne maskinen.
  3. CLI-et sender tokenet som x-omniroute-cli-token bare når det fastsatte målet er en eksplisitt loopback-URL (localhost, 127.0.0.0/8 eller loopback-IPv6). Forespørsler som inneholder tokenet, bruker redirect: error, slik at en lokal omdirigering ikke kan videresende det til en annen opprinnelse. Eksterne kontekster bruker avgrensede tilgangstokener i stedet. Hvis avledningen ikke er tilgjengelig, utelater CLI-et hodet, og omniroute doctor rapporterer feilen i stedet for å behandle et tomt token som gyldig.
  4. Serveren (src/server/authz/policies/management.ts) beregner det forventede tokenet på nytt med samme salt og sammenligner ved hjelp av timingSafeEqual for å forhindre tidsbasert uthenting.

Sikkerhetsegenskaper

Egenskap Detalj
Bare loopback Godtas bare når serverens klarerte stempel for motpartens lokalitet (utledet fra den faktiske TCP-adressen til motparten) angir loopback. Det klientkontrollerte Host-hodet brukes aldri som grunnlag for lokalitet.
Sammenligning med konstant kjøretid crypto.timingSafeEqual forhindrer tidsangrep.
Ikke-reversibelt Maskin-ID-en kan ikke utledes fra HMAC-resultatet.
Ingen omgåelse av always-beskyttelse isAlwaysProtectedPath() evalueres før CLI-tokenkontrollen. /api/shutdown og /api/settings/database krever alltid JWT.
Ikke-eksporterbart Tokenet skrives aldri til disk eller logges.

Standardsalt (tilfeldig per installasjon)

Når OMNIROUTE_CLI_SALT ikke er angitt, er saltet en tilfeldig heksadesimal streng på 64 tegn som genereres én gang og lagres i <DATA_DIR>/cli-token-salt.json (modus 0600) ikke den innsjekkede literalen omniroute-cli-auth-v1. Både getActiveSalt() i src/lib/machineToken.ts og speilimplementasjonen i bin/cli/utils/cliToken.mjs leser den samme filen, slik at serveren og hver CLI-kjøring i denne installasjonen ender opp med den samme verdien. Den innsjekkede literalen brukes bare som en siste utvei når verken et lagret salt eller et salt fra miljøet ennå kan etableres (for eksempel i en ny installasjon med bare CLI-et før serveren noen gang har kjørt). Dette lukker en svakhet ved den gamle, faste standardliteralen: /etc/machine-id er vanligvis lesbar for alle, slik at enhver lokal bruker ellers kunne utlede det samme tokenet for hver installasjon der OMNIROUTE_CLI_SALT aldri ble angitt.

Saltrotasjon

Angi OMNIROUTE_CLI_SALT for å rotere det avledede tokenet uten kodeendringer — den har alltid prioritet over det lagrede saltet per installasjon. Etter rotasjon vil alle CLI- prosesser på denne maskinen automatisk bruke det nye tokenet. Nyttig etter en lekkasje av prosesslisten som kan ha eksponert den forrige avledede verdien.

# Vedvarende rotasjon (legg til i skallprofilen)
export OMNIROUTE_CLI_SALT="my-secret-salt-2026"

# Kontroller at det nye tokenet er i bruk
omniroute status

Eldre format (SHA-256, 32 tegn) — godtas fortsatt

Før HMAC-formatet ovenfor avledet CLI-en tokenet som SHA-256(machineId + salt).hex[0..32] (et prefiks på 32 tegn) i bin/cli/utils/cliToken.mjs (getLegacyCliTokenSync i src/lib/machineToken.ts).

For bakoverkompatibilitet godtar serveren begge formatene: Verifikatoren bygger expectedTokens = [getMachineTokenSync(), getLegacyCliTokenSync()] og sammenligner den innkommende headeren med hvert av dem ved hjelp av timingSafeEqual (src/server/authz/policies/management.ts og src/lib/middleware/cliTokenAuth.ts). Et token er derfor gyldig hvis det samsvarer med enten HMAC-digesten på 64 tegn eller det eldre SHA-256-prefikset på 32 tegn.

Deaktivering: Angi OMNIROUTE_DISABLE_CLI_TOKEN=true (miljøvariabel eller .env) for å deaktivere CLI- tokenmekanismen fullstendig. All tilgang krever da en eksplisitt API-nøkkel. På flerbruker- verter anbefales dette, siden machine-id gjelder per enhet (ikke per bruker), og en annen bruker på samme vert kan beregne det samme tokenet.

Filer

Fil Formål
src/lib/machineToken.ts Tokenavledning (getMachineTokenSync)
bin/cli/utils/cliToken.mjs CLI-kopi av den samme avledningen
<DATA_DIR>/cli-token-salt.json Lagret tilfeldig salt per installasjon
src/server/authz/headers.ts Konstanten CLI_TOKEN_HEADER
src/server/authz/policies/management.ts Verifisering på serversiden
src/server/authz/routeGuard.ts Kontroll av loopback-vert (isLoopbackHost)

Se også

  • docs/security/ROUTE_GUARD_TIERS.md — nivåer for rutebeskyttelse
  • docs/architecture/AUTHZ_GUIDE.md — fullstendig autorisasjonsflyt