* 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.
11 KiB
CLI Machine-ID Token (Türkçe)
🌐 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 · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW
Genel Bakış
OmniRoute CLI komutları, x-omniroute-cli-token istek üstbilgisi üzerinden
gönderilen bir HMAC-SHA256(machine-id, salt) belirteci kullanarak yerel yönetim
API'sinde kimlik doğrulaması yapar.
Bu, CLI alt komutlarının (omniroute status, omniroute providers vb.) her
çalıştırmada kullanıcının bir JWT veya parola sağlamasına gerek kalmadan yönetim
uç noktalarını çağırmasına olanak tanır.
Nasıl çalışır?
getMachineTokenSync(),node-machine-idaracılığıyla donanım makine kimliğini okur (başarısızlık durumunda boş bir dizeye geri döner ve CLI kimlik doğrulamasını devre dışı bırakır).HMAC-SHA256(machine_id, salt)değerini hesaplar ve bu makineye bağlı, belirlenimsel ve geri döndürülemez bir belirteç olan 64 karakterlik tam onaltılık özeti döndürür.- CLI, belirteci yalnızca çözümlenen hedef açık bir geri döngü URL'si
(
localhost,127.0.0.0/8veya geri döngü IPv6) olduğundax-omniroute-cli-tokenolarak gönderir. Belirteci taşıyan isteklerredirect: errorkullanır; böylece yerel bir yönlendirme belirteci başka bir kaynağa iletemez. Uzak bağlamlar bunun yerine kapsamlı erişim belirteçlerini kullanır. Türetme kullanılamıyorsa CLI üstbilgiyi atlar veomniroute doctor, boş bir belirteci geçerli saymak yerine hatayı bildirir. - Sunucu (
src/server/authz/policies/management.ts), aynı salt değerini kullanarak beklenen belirteci yeniden hesaplar ve zamanlamaya dayalı çıkarımı önlemek içintimingSafeEqualaracılığıyla karşılaştırır.
Güvenlik özellikleri
| Özellik | Ayrıntı |
|---|---|
| Yalnızca geri döngü | Yalnızca sunucunun güvenilir eş yerelliği damgası (gerçek TCP eş adresinden türetilir) geri döngüyü gösterdiğinde kabul edilir. İstemci tarafından kontrol edilen Host üstbilgisine yerellik için asla güvenilmez. |
| Sabit zamanlı karşılaştırma | crypto.timingSafeEqual, zamanlama saldırılarını önler. |
| Geri döndürülemez | HMAC çıktısından makine kimliği elde edilemez. |
always korumasını aşma yok |
isAlwaysProtectedPath(), CLI belirteci kontrolünden önce değerlendirilir. /api/shutdown ve /api/settings/database her zaman JWT gerektirir. |
| Dışa aktarılamaz | Belirteç hiçbir zaman diske yazılmaz veya günlüğe kaydedilmez. |
Varsayılan salt (kurulum başına rastgele)
OMNIROUTE_CLI_SALT ayarlanmadığında salt, bir kez oluşturulan ve
<DATA_DIR>/cli-token-salt.json konumunda (0600 moduyla) kalıcı olarak saklanan
rastgele 64 karakterlik bir onaltılık dizedir; depoya eklenmiş sabit
omniroute-cli-auth-v1 değeri değildir. Hem src/lib/machineToken.ts içindeki
getActiveSalt() hem de bin/cli/utils/cliToken.mjs içindeki karşılığı aynı
dosyayı okur; böylece sunucu ve bu kurulumdaki her CLI çağrısı aynı değerde
uzlaşır. Depoya eklenmiş sabit değer yalnızca henüz kalıcı veya ortam değişkeni
tabanlı bir salt oluşturulamadığında son çare olarak kullanılır (örneğin, sunucu
daha önce hiç çalıştırılmadan önceki yeni bir yalnızca-CLI kurulumu). Bu, eski
sabit varsayılanın zayıflığını giderir: /etc/machine-id genellikle herkes
tarafından okunabilir olduğundan, aksi takdirde herhangi bir yerel kullanıcı
OMNIROUTE_CLI_SALT değerinin hiç ayarlanmadığı her kurulum için aynı belirteci
türetebilirdi.
Salt rotasyonu
Türetilmiş token'ı kod değişikliği yapmadan döndürmek için OMNIROUTE_CLI_SALT değerini ayarlayın — bu değer, kurulum başına kalıcı olarak saklanan salt değerine her zaman göre önceliklidir. Rotasyondan sonra bu makinedeki tüm CLI işlemleri yeni token'ı otomatik olarak kullanır. Önceki türetilmiş değeri açığa çıkarmış olabilecek bir işlem listesi sızıntısından sonra kullanışlıdır.
# Kalıcı rotasyon (kabuk profiline ekleyin)
export OMNIROUTE_CLI_SALT="my-secret-salt-2026"
# Yeni token'ın kullanıldığını doğrulayın
omniroute status
Eski biçim (SHA-256, 32 karakter) — hâlâ kabul ediliyor
Yukarıdaki HMAC biçiminden önce CLI, token'ını
bin/cli/utils/cliToken.mjs içinde (src/lib/machineToken.ts dosyasındaki
getLegacyCliTokenSync) SHA-256(machineId + salt).hex[0..32] (32 karakterlik bir
önek) olarak türetiyordu.
Geriye dönük uyumluluk için sunucu her iki biçimi de kabul eder: doğrulayıcı
expectedTokens = [getMachineTokenSync(), getLegacyCliTokenSync()] oluşturur ve gelen
üstbilgiyi timingSafeEqual ile her biriyle karşılaştırır
(src/server/authz/policies/management.ts ve src/lib/middleware/cliTokenAuth.ts).
Dolayısıyla bir token, 64 karakterlik HMAC özetiyle veya 32 karakterlik eski
SHA-256 önekiyle eşleşirse geçerlidir.
Devre dışı bırakma: CLI token mekanizmasını tamamen devre dışı bırakmak için
OMNIROUTE_DISABLE_CLI_TOKEN=true değerini (env veya .env içinde) ayarlayın;
bundan sonra tüm erişimler açıkça belirtilmiş bir API anahtarı gerektirir. Çok
kullanıcılı ana makinelerde bu önerilir; çünkü machine-id kullanıcı başına değil,
cihaz başınadır ve aynı ana makinedeki başka bir kullanıcı aynı token'ı hesaplayabilir.
Dosyalar
| Dosya | Amaç |
|---|---|
src/lib/machineToken.ts |
Token türetme (getMachineTokenSync) |
bin/cli/utils/cliToken.mjs |
Aynı türetmenin CLI tarafındaki karşılığı |
<DATA_DIR>/cli-token-salt.json |
Kurulum başına kalıcı rastgele salt |
src/server/authz/headers.ts |
CLI_TOKEN_HEADER sabiti |
src/server/authz/policies/management.ts |
Sunucu tarafı doğrulama |
src/server/authz/routeGuard.ts |
Geri döngü ana makine denetimi (isLoopbackHost) |
Ayrıca bkz.
docs/security/ROUTE_GUARD_TIERS.md— rota koruma katmanlarıdocs/architecture/AUTHZ_GUIDE.md— eksiksiz yetkilendirme işlem hattı