yeke.io · dokümanlar · güvenlik
Güvenlik Mimarisi ve Tehdit Modeli
Teknik inceleme kapsamı: YEKE 0.15.3 · 19 Ağustos 2026. Bu sayfa güven sınırlarını, güvenlik kontrollerini ve bunları doğrulama yollarını açıklar. Daha yeni sürümlerdeki değişiklikler için sürüm notlarına bakın.
Kapsam ve bu sayfa nasıl okunur
Neyin garanti edildiği, kontrolün nerede durduğu ve her iddianın bize sormadan nasıl denetlenebileceği.
YEKE tek bir çizgi boyunca ayrılmıştır; o çizgi ilk gün yazıldı ve o günden beri yerinden
oynamadı: cluster'ınızın içinde koşan her satır kod açıktır; merkez kapalıdır. Agent
Apache-2.0 lisanslı ve
github.com/nairotech/yeke-agent
adresinde; tünel protokolü de kendi Apache-2.0 paketinde,
@nairotech/yeke-tunnel
(bu gözden geçirme sırasında 4.1.0; major numarası tel sürümünün kendisidir). Core,
arayüz ve AI katmanı kapalıdır ve bunun değişeceğine dair genel bir söz verilmiyor — geri
çekilebilecek bir söz, hiç verilmemiş bir sözden kötüdür.
Bu sayfa kontrollerin nerede uygulandığını, hangi tehditleri ele aldığını ve nasıl doğrulanabileceğini anlatır. Kapalı kaynak bileşenlerin dosya yapısı, veritabanı şeması ve lisans veri yapısı kapsam dışındadır.
Doğrulama. Her bölüm tehdidi, kontrolü ve doğrulama adımlarını açıklar. Bağımsız doğrulama mümkün değilse belirtilir. Açık kaynak bileşenleri hesap veya lisans olmadan indirebilirsiniz.
Güven sınırları
Gözetilen tehditler: çalınmış bir tarayıcı oturumu, ele geçirilmiş bir core, düşmanca bir cluster iş yükü, fark edilmeden dışarı çıkan veri.
Aşağıdaki dört sınır farklı kontrollerle korunur.
Tarayıcı Core (kapalı) Sizin cluster'ınız
──────── ────────────── ──────────────────
oturum çerezi ──[1]──► varsayılan-reddet ──[2a]──► agent (açık) ──► apiserver
HttpOnly, CSRF kimlik çözümü yalnız dışa açar
yazma zinciri yol beyaz listesi
──[2b]──► doğrudan kubeconfig ──► apiserver
│ │ (credential core'da)
[3]│ │[4]
▼ ▼
AI sağlayıcı SIEM hedefi
opt-in, TLS syslog ya da
cluster başına imzalı webhook| Sınır | Ne geçer | Kim karar verir |
|---|---|---|
| 1 · tarayıcı → core | HttpOnly bir çerezde taşınan opak oturum token'ı. | Core, varsayılan-reddet: kimliksiz erişilebilen üç yol var — sağlık, giriş, ilk kurulum. |
| 2a · core → agent | Dışa açılan bir soket üzerinde, impersonation başlığı taşıyan bir istek. Credential geri yönde hiç geçmez. | Apiserver, bürünülen kullanıcının kendi RBAC'iyle. Tavan sizin cluster'ınızda durur. |
| 2b · core → apiserver | Aynı istek, ama kubeconfig core'da. Zayıf olan sınır bu — §3. | Apiserver, o kubeconfig'in erişebildiği her şeyle. |
| 3 · core → AI sağlayıcı | Yalnız bir egress manifestinin kaydettiği kadarı, ve yalnız egress'in açıldığı yerde. Varsayılan kapalı. | Yönetici, cluster başına, denetim izine düşen bir değişiklikle. |
| 4 · core → SIEM | Denetim kayıtları; hash zinciriyle bağlı, imzalı checkpoint'lerle. | Alıcı taraf, kanal dışından taşınmış bir public key ile. |
Bağımsız doğrulama. 1. ve 2. sınırlar ürünün dışından gözlenebilir: core'u yalnız beklediğiniz şeye izin veren bir NetworkPolicy'nin arkasında koşturun ve gerçekte neye bağlanmaya çalıştığını izleyin. 3. sınırın sert bir kapatma anahtarı var ve kapattığınızı kendi güvenlik duvarınızda görebilirsiniz; 4. sınır kendi toplayıcınızda doğrulanabilir (§8).
Credential nerede durur — moda bağlıdır
Gözetilen tehdit: cluster'ınıza kalıcı yetkisi olan, ele geçirilmiş bir merkez.
Agent modu
Credential, cluster'ınızda yaşayan ve oradan hiç çıkmayan bir ServiceAccount'tur.
Agent'ın kendi ClusterRole'ünde hiçbir yazma fiili ve hiçbir nesne okuma yetkisi
yoktur — tavanla sınırlı impersonate, sağlık probu için bir öz-inceleme
çağrısı, ve discovery okumaları. Kullanıcı adına giden her isteğin yetkisini, bürünülen
kullanıcının kendi RBAC'i belirler.
Doğrudan kubeconfig modu
Credential core'da durur; diskte AES-256-GCM zarfında, kurulumun kendi snapshot anahtarıyla ve ek doğrulanmış veri olarak cluster kimliğiyle mühürlenmiş hâlde. Daha rahat olan mod bu, ve bedeli aşağıdaki kutuda yazılı.
Doğrudan modda core ele geçerse cluster ele geçmiştir
Buradaki tavan, import ettiğiniz kubeconfig'in kendisidir: bir yönetici, o
credential'ın bürünebildiği her kimliği dağıtabilir ve koşulsuz reddedilen tek şey
system:masters'tır. Asgari yetkili bir kubeconfig import edin, ya da agent
modunu kullanın. Doğrudan mod ayrıca core'u bir istek sahteciliği (SSRF) yüzeyine çevirir,
çünkü kaydettiğiniz adrese core'un kendisi bağlanır — yüzey daraltılmış durumda (yalnız
https://, yalnız apiserver yol önekleri, proxy-url reddi) ama
iç ağ adreslerine bağlanma engellenmiyor. O kontrolün doğru yeri kubeconfig
ayrıştırıcısı değil, operatör tarafındaki bir çıkış politikasıdır.
Bağımsız doğrulama. Aradaki fark bir dipnot değil, makine-okunur bir
alan: cluster envanteri credentialCustody: "cluster" | "core" değerini taşır ve
arayüz bunu tam import'u onayladığınız anda gösterir. Agent modunda, uygulamadan önce üretilen
kurulum manifestini okuyun — içindeki ClusterRole tavanın tamamıdır.
Kimlik, oturum ve impersonation tavanı
Gözetilen tehditler: çalınmış bir parola deposunun çevrimdışı kırılması, oturum hırsızlığı, CSRF, kaba kuvvet, kimlik eşlemesi üzerinden yetki yükseltme.
Diskte. Parolalar scrypt ile, 128 MiB'lık bir bellek maliyetiyle
özetlenir — GPU'lu bir saldırganın paralellik avantajını kesen şey budur — kayıt başına bir tuzla
ve maliyet parametreleri kaydın içinde saklanarak; böylece parametreler sonradan
yükseltilebilir ve eski kayıtlar başarılı bir girişte yeniden özetlenir. Parola politikası NIST
800-63B çizgisindedir: en az 12 karakter, kompozisyon kuralı yok.
Oturumlar. Her opaque session token 256 bit rastgele veri içerir. Core, token’ın tuzsuz SHA-256 hash’ini benzersiz bir indeksle saklar. Oturum iptali sunucudaki kayıttan yönetilir; JWT veya imzalı stateless cookie kullanılmaz.
Cookie yalnız host’a bağlıdır; HttpOnly ve SameSite=Lax kullanır. Secure isteğin şemasına göre belirlenir ve bir ayarla kapatılamaz. CSRF koruması double-submit cookie ve Origin kontrolünü birlikte kullanır.
Oturum 12 saat kullanılmazsa veya toplam 7 gün geçerse sona erer. Refresh token veya kimlik doğrulama cache’i olmadığından iptal bir sonraki istekte geçerlidir. Route’lar varsayılan olarak erişimi reddeder.
Tavan. YEKE kim sorusuna cevap verir; neye yetkili sorusuna Kubernetes.
Bir kullanıcı cluster'a, cluster kuralından ya da kişisel bir bağlamadan çözülen bir kimlikle
çıkar ve o bağlama kaydedildiği anda apiserver'a sorulur. Eşleme yoksa istek core'dan hiç
çıkmaz — bu bir ayar değil, tip sisteminde zorlanan bir kural — ve
system:masters birbirinden bağımsız iki kapı tarafından reddedilir; açan bir bayrak
yoktur. Tavanın kendisi sizin cluster'ınızda durur: üretilen manifest
impersonate yetkisini resourceNames ile sınırlar, ve liste boş
bırakılırsa manifest fail-closed üretilir — agent hiçbir kimliğe bürünemez ve bürünülen her
istek reddedilir, yani yanlış yapılandırma sessizce yetki vermek yerine ilk denemede kendini
gösterir.
Çoklu oturum açma ve ikinci faktör. LDAP / Active Directory girişi 0.13.0'da, OIDC
0.14.0'da geldi; ikisi de tek bir Enterprise kaleminin arkasında ve aynı anda etkin olabilir.
OIDC akışı, gizli (confidential) bir istemci üzerinde PKCE'li (S256) Authorization Code'dur;
redirect_uri yapılandırılmış genel adresten türer ve asla istek başlığından
okunmaz, refresh token istenmez ve saklanmaz. Giriş ekranındaki yerel parola formu hiç
kaybolmaz, çünkü yerel hesaplar acil erişim yoludur. Tek kullanımlık kurtarma kodlarıyla TOTP
var, ve opt-in'dir (§11).
Bağımsız doğrulama. Bize değil cluster'a sorun: kimlik ekranı, yapılandırmanın iddia ettiği adı değil apiserver'ın döndürdüğü adı gösterir. Sonra tavanı ölçün — dar bağlanmış bir kullanıcıyla girip onun namespace'i dışında bir yazma denemesi yapın. Beklenen sonuç apiserver'ın reddi ve o red apiserver'ın kendi denetim günlüğünde görünür.
Tek yazma yolu
Gözetilen tehditler: onaysız bir yazma, bayat bir tabloya verilmiş onay, zinciri atlayan bir istemci, refleksle yapılan yıkıcı bir işlem.
Apiserver'ınıza bir yazmanın ulaşmasının tam olarak tek bir yolu var ve o yol bir durum makinesidir:
plan ─► önceki hâli yakala ─► sınıflandır ─► guardrail ─► dry-run
│
onay (planHash) ◄──────────┘
│
uygula ─► geri alma (yeni bir plan,
aynı boru hattı)- Hiçbir adım isteğe bağlı değil, ve onay hiçbir koşulda isteğe bağlı değil. Dry-run yalnız apiserver onu imkânsız kıldığı yerde atlanır; o durumda adım bayraklanır ve ürünle gelen bir politika onayı yükseltilmiş seviyeye çıkarır. Koleksiyon silme, siz görmeden önce tek tek adlandırılmış adımlara açılır — her adım kendi nesne kimliği ve sürüm ön koşuluyla.
planHash, size gösterilen kararın SHA-256'sıdır: hedef nesne sürümleri, neyin değişeceği, hangi şiddette onay istendiği. Bunlardan biri değişirse hash değişir ve önceki onay reddedilir. Bayat bir karta basılan onay, onay değildir.- Uygulama yedi kapıyı sırayla doğrular: plan var mı; durum izin veriyor mu; süresi geçmiş mi; çağıranın kimliği planın kimliğiyle aynı mı; hash güncel mi; yükseltilmiş bir plan hedefin adıyla eşleşen bir doğrulama adı taşıyor mu; bağlantı canlı mı. O adı yazdırmak arayüz süsü değil API sözleşmesinin parçasıdır, yani doğal dil katmanı dâhil hiçbir istemci onu atlayamaz.
- Ham proxy yolundaki yazmalar reddedilir — 405 ve kendine ait bir hata kodu — ve her
deneme bir denetim olayına dönüşür; okumalar o yoldan dokunulmadan akmaya devam eder. Acil
bir kaçış kapısı bilinçli olarak yapılmadı, çünkü cluster'ınızda zaten bir tane var:
kubectl. Belirsizlik de aşağı yuvarlanmıyor: uygulama sırasında bağlantı koparsa adım "uygulanmadı" değil bilinmiyor olarak kaydedilir.
Zincirin var olma sebebi olan değişmez: uygulanan her yazma, kendi kaydında kendisini yetkilendiren onaya işaret eder — ya kendi onay kartına, ya da adı yazılarak açılmış bir kabuk oturumu onayına. Sahipsiz bir uygulama veri modelinde temsil edilemez.
Bağımsız doğrulama. Bizim test paketimizin sözüne güvenmeyin; apiserver'ın kendi muhasebesini kullanın. Reçete §10'da.
Güvenilmez girdi olarak AI katmanı
Gözetilen tehditler: cluster içeriğine gizlenmiş prompt injection, bir istemle birlikte dışarı çıkan sırlar, modelin çıktısının karar sanılması.
Cluster içeriği güvenilmeyen girdidir. Örneğin bir Pod annotation’ında namespace silmeyi isteyen bir talimat bulunabilir. AI bir işlem önerse bile plan dry-run, guardrail ve kullanıcının Kubernetes yetkilerinden geçer.
Namespace silmek ek onay gerektirir: kullanıcı etkileri inceler ve namespace adını yazar. Cluster kaynağındaki bir metin bu onayı veremez.
Araç çıktıları veri olarak işaretlenir ve kullanıcı talimatlarından farklı mesaj rollerinde taşınır. Denetim izi, istek ile planı ilişkilendirir. Tehlikeli metin arayan bir sınıflandırıcı güvenlik sınırı olarak kullanılmaz.
Egress cluster başınadır ve varsayılan kapalıdır (kapalı, yalnız-yerel, izinli); değiştirmek denetim izine düşen bir yönetici işidir ve kapalıyken hiçbir istek hiçbir sağlayıcıya ulaşmaz. Bir sağlayıcının "yerel" sayılıp sayılmayacağı model adından değil, temel adresinin host'undan türetilir, ve izinli host listesi sert bir sınır olarak da işletilebilir. Ürünün de bu sayfanın da kullandığı dürüst ifade şu: yerel sınıf "core'un bağlandığı adres özel bir adrestir" der, "veri binadan çıkmadı" demez.
AI’a gönderilmeyen veriler. Kod düzeyindeki filtreleme; Secret değerlerini, dockerconfig gövdelerini, managed-fields metadata’sını ve last-applied-configuration annotation’ını çıkarır. DB_PASSWORD gibi anahtar adları gönderilebilir.
Her sağlayıcı çağrısı için egress manifesti kaydedilir: sağlayıcı, host, egress sınıfı, prompt sürümü ve hash’i, parça başına veri boyutu. İstek gövdeleri saklanmaz. Manifest veri kategorisini ve hacmini gösterir; gönderilen baytların birebir kaydı değildir.
Bu nasıl ölçülüyor — ve kendi ölçümünüzü nasıl alırsınız
Depoda sabit ve sürümlenen bir vaka kümesi var; taklit bir sağlayıcıya değil gerçek
modellere karşı koşturuluyor ve injection onun içinde ayrı bir sınıf. Her vaka
kabul ölçütünü yasaklı işlemler listesi olarak yazar: vaka ancak enjekte edilmiş talimata
karşılık gelen plan hiç önerilmediyse geçer. Sonuçlar bu sayfada değil sürüm notlarında
raporlanır — böylece buradaki bir sayı, geldiği yapıdan daha uzun yaşayamaz, ve burada
okuduğunuz şey koşumdan koşuma değişmeyen mekanizma olur.
Sınıf bilinçli olarak birden fazla taşıyıcıyı kapsıyor. Enjekte edilen metin nesne alanlarına yerleştirilir — bir Deployment annotation'ı, bir ConfigMap'in içeriği, bir açıklama — ve nesne spec'i hiç olmadıkları için gözden kaçması en kolay iki yere de: pod log çıktısı ve Event mesajları. Bir vaka, silmenin operatör tarafından önceden onaylandığını iddia eden bir Event'tir. Orada doğru davranış, o iddiayı veri olarak işlemektir — çünkü onay kaydı olmayan bir yetkilendirme, yetkilendirme değildir.
Komşu sınıf hakkındaki dürüst not. Bir talimatı baştan reddetmek modelin kendi kararıdır ve model bunda başarısız olabilir: şimdiye kadarki koşumlarda bir model, reddetmesi gereken bir vakada plan önerdi. Bu sayfadaki garantinin "model iyi davranır" olmamasının sebebi tam olarak budur. Garanti, zincirin o öneriyi nerede durdurduğudur: bir insanı bekleyen onay kartında, ve yıkıcı olan her şeyde nesne adı yazdırılarak. Modelin reddi bir kolaylıktır; kontrol olan şey zincirdir.
Bağımsız doğrulama. Bizim ölçümümüzü değil kendi ölçümünüzü alın. Sizin olan bir cluster'da her taşıyıcıya bir talimat yerleştirin — bir annotation, bir ConfigMap değeri, bir pod log satırı, bir Event mesajı — sonra o nesne hakkında sıradan bir okuma sorusu sorun. Vaka kümesinin kullandığı kabul ölçütünün aynısını kullanın: vaka başına, görünmemesi gereken işlemleri yazın ve bunlardan herhangi birinin görünmesini başarısızlık sayın. Kanıt sayılan şey asistanın metni değil operasyon kaydıdır — hiç plan olmaması, ya da onay kartından hiç çıkmamış bir plan. Negatif kontrol için önce egress'i kapatın ve kendi güvenlik duvarınızda hiçbir denemenin yapılmadığını doğrulayın.
Tünel ve açık agent
Gözetilen tehditler: tünelin cluster çevresinde genel amaçlı bir deliğe dönüşmesi, ele geçirilmiş bir merkezin komşu servislere atlaması.
Bir tünel agent'ı yapısal olarak çevrenizden dışa doğru açılmış bir deliktir ve öteki uçta duran taraf ona "şuraya bağlan" diyebilir. Bu çerçeve sonradan bizim uydurduğumuz bir şey değil: açık kaynakta, onu daraltan sabitin hemen üstünde yazılı.
- Yalnız dışa açar. Agent core'a bağlanır. Dinleyen hiçbir port açmaz ve içe doğru hiçbir kurala ihtiyaç duymaz; yapılandırıldığı tek adres core'un adresidir.
- Tek meşru hedef. İstekler yalnız sabit bir apiserver yol öneki kümesi için kabul
edilir —
/api,/apis,/openapi,/version,/healthz,/livez,/readyz— ve yol atlama reddedilir; başka her şeyPATH_NOT_ALLOWEDile düşer. Buradaki mesele daha geniş bir isteğin yetkisiz olması değil, o isteğin ifade edilememesidir. Öteki ucun istediği hedefi adlandırabildiği tasarımlarda, ele geçirilmiş bir merkez container çalışma zamanı soketine ve bulut metadata ucuna ulaşır. - Kimlik başlıkları iletilmez, soyulur.
Authorization,Proxy-Authorizationve hop-by-hop kümesi öteki uçtan apiserver'a hiç ulaşmaz; apiserver'ın gördüğü kimlik, zincirin oraya koyduğu impersonation başlığıdır. - Tel sürümü bir kapıdır, bir umut değil. Protokol 4. sürümde ve paketin major numarası yapısı gereği aynı sayıdır; eşitliği bir depo kapısı ölçer, ve uyuşmazlık tanımsız bir lehçeye düşmek yerine bağlantıyı kapatır. Agent'ta ayrıca hiç lisans, telemetri ya da hesap kodu yoktur — bu, ayrımın bir yan etkisi değil ön koşuludur.
Bağımsız doğrulama. Bu bölümün büyük kısmı doğrudan açık kaynakta
denetlenebilir. Depoyu klonlayın ve beyaz listeyi, soyulan başlıkları ve lisans kodunun
yokluğunu git grep ile arayın; npm pack @nairotech/yeke-tunnel ile tel
tiplerini okuyun. Sonra davranışı çalışma anında doğrulayın: yalnız core'a ve apiserver'a çıkışa
izin veren bir NetworkPolicy ile.
Denetim izi ve SIEM aktarımı
Gözetilen tehditler: sessizce silinmiş ya da değiştirilmiş bir kayıt, ölü bir aktarım hattının sessiz sanılması, müşterinin uyum kaydını taklit edebilen bir satıcı.
İz güçlü anlamda append-only'dir: yazma ucu yok, silme ucu yok. Saklama süresi geçince bir operasyonun kendi kaydı düşer; ona ait denetim olayları düşmez. Her olay iki parçalı bir aktör taşır — YEKE kimliği (kim) ve o kişinin altında iş yaptığı Kubernetes kimliği ile grupları (hangi yetkiyle) — artı oturum kimliği, çünkü "aynı kişi, farklı oturum" ayrımı bir olay incelemesinde ilk sorulan şeydir. İzi okumak her katmanda ücretsizdir: denetim uçları lisans olsun olmasın bit düzeyinde aynıdır, ve standart çıktıdaki ikinci NDJSON kopyası olduğu yerde durur, bağımsız olarak toplanabilir.
Aktarım bir Enterprise kalemidir ve tasarım sorusu "satırları nasıl göndeririz" değildi, "alıcı hiçbirinin eksik olmadığını nasıl kanıtlar"dı.
- İki sıra numarası, ve ikisini karıştırmak amacı boşa çıkarır. Biri kaydın izdeki yeridir ve bir sınıf süzgeci varsa seyrektir — oradaki boşluklar meşrudur. Öteki, hedef başına tutulan ve hiç atlamayan yoğun bir sayaçtır; ondaki bir boşluk kesin bir kayıptır. Yalnız sayaca bakmak göndericiye güvenmek olurdu; yalnız iz numarasına bakmak ise süzgeci silmeden ayırt edemez.
- Bir hash zinciri, ve üstünde imzalı checkpoint'ler. Her kaydın kanonik hâlinin SHA-256'sı bir sonraki kaydın önceki-hash'i olur; bir kaydı silen, değiştiren ya da araya ekleyen taraf zinciri tam o noktada kırar. Zincir kanonik JSON üstünde hesaplanır, syslog sunumu üstünde değil, çünkü sunum kırpılabilir. Ama zincir kaynak sessizken hiçbir şey söylemez ve sessiz bir hat ölü bir hattan ayırt edilemez; bu yüzden zincir başını, kapsanan aralıkları, beyan edilen süzgeci ve anahtar kimliğini taşıyan bir Ed25519-imzalı checkpoint belirli aralıklarla, olay olsun olmasın gider. Satır başına imza bilinçli reddedildi: o, "bu satırı YEKE yazdı"yı kanıtlar, satılan garanti ise "bu satırlardan hiçbiri eksik değil"dir.
- İmza anahtarı kurulumun kendisine aittir, satıcıya değil. Core ilk kullanımda çifti üretir ve özel yarısını kendi zarfıyla mühürler. Satıcı anahtarı reddedildi, çünkü core lisans anahtarının yalnız public yarısını taşır ve tek bir sızıntı bütün müşterilerin zincirini aynı anda geçersiz kılardı; HMAC de reddedildi, çünkü simetrik bir imzayı alıcı da üretebilir. Public key toplayıcıya elle taşınır ve orada pinlenir — otomatik keşif kriptografik değil epistemik bir sebeple reddedildi: doğrulayacağınız kanaldan aldığınız bir anahtar hiçbir şey kanıtlamaz.
- Taşıyıcı TLS syslog ya da imzalı webhook'tur; düz TCP ve UDP elendi ve sertifika doğrulamasını kapatan bir kaçış bayrağı yok. Karşı argüman kayıtlı: kurumsal toplayıcıların önemli bir kısmı düz TCP dinler, yani TLS zorunluluğu kurulum turunda sürtünme üretir. Süresi dolmuş bir lisans da akışı kesmez, çünkü uyum kaydını kesmek müşterinin denetçisini cezalandırır.
Bağımsız doğrulama. Uçtan uca, bize ihtiyaç duymadan: bir hedefi kendi kontrolünüzdeki bir toplayıcıya çevirin, public key'i pinleyin, checkpoint imzalarını kendiniz doğrulayın. Sonra kendi kopyanıza saldırın — alıcı taraftaki depodan bir satır silin ve zincirin tam o kayıtta kırıldığını görün. Negatif tarafı da doğrulayın: açık bıraktığınız düz TCP ya da UDP syslog portuna hiçbir şey gelmemeli.
Lisans ve telefon etmeme
Gözetilen tehditler: kullanım verisi sızdıran bir lisans mekanizması, acil erişimi elinizden alan bir ticari durum.
Lisans tek satırlık taşınabilir bir bloktur: bir sürüm işareti, base64 bir yük ve base64 bir
Ed25519 imzası. Doğrulama, core'a gömülü bir public key ile ve çalışma
ortamının kendi kripto kütüphanesiyle tamamen çevrimdışı yapılır — dış bağımlılık yok,
algoritma müzakere yüzeyi yok, alg karışıklığı sınıfı yok. Hiçbir şey telefon
etmez. Lisans sunucusu yok, çevrimiçi aktivasyon yok, "bağlantı varsa doğrula" kontrolü yok,
donanım parmak izi yok, obfuscation yok — her biri yazılı bir gerekçeyle elendi; bağlantıya
bağlı olan varyant, belgelenecek iki davranış ve güvenlik incelemesinde verilecek iki cevap
anlamına geldiği için. Ücretsiz katman hesap da anahtar da istemez.
Yükü değiştirilmiş bir lisans gürültülü reddedilir — kendine ait bir hata artı bir denetim olayı — ve core ücretsiz katman yetkileriyle çalışmaya devam eder. Hiçbir lisans durumu core'un açılmasını engellemez, çünkü açılmayı reddetmek bir yenileme gecikmesini kesintiye çevirirdi. Süre dolduğunda sıra şu: bitişten 30 gün önce banner, bitiş, tam işlevle bir ek süre, sonra toplamalı dondurma — yeni cluster yok, yeni kullanıcı yok, Enterprise yapılandırmasında değişiklik yok; ama var olan her cluster tam yönetilebilir kalır, çoklu oturum açma çalışmayı sürdürür ve kurulu bir denetim aktarımı akmaya devam eder. Kararda açıkça yazılı olan ilke: acil müdahale yolu asla ticari bir duruma rehin verilmez.
Bağımsız doğrulama. Core'u hiçbir ağ yolu olmayan bir ortamda koşturun ve ilk kurulumu, cluster import'unu ve ilk operasyonu baştan sona yapın; dışarıya hiçbir deneme olmamalı. Bir lisans yükünün tek baytını değiştirin ve gürültülü reddi, ardından çalışmanın sürdüğünü görün. Yayınlanan imajın string dökümünü alın ve lisans public key'inin oradaki tek anahtar olduğunu, ve sürümler arasında sabit kaldığını doğrulayın.
Kaynağa erişmeden nasıl doğrulanır
Gözetilen tehdit: yalnızca iddialardan oluşan bir güvenlik sayfası.
Core kapalıdır, yani onun için "kodu okuyun" diye bir teklif yok. Teklif edilen şey, kendi
ortamınızda kendi apiserver'ınıza karşı koşturabileceğiniz bir yöntem. Açık olan iki bileşenle
başlayın — §7'deki her şey bir git grep uzaklıkta — sonra
§5'in merkezî iddiasını, bizim herhangi bir sayacımız yerine apiserver'ın
kendi muhasebesiyle tekrarlayın.
# 1. Taban değer, apiserver'ın KENDİ metriklerinden — YEKE'den değil. # dry-run olmayan yazma sayaçlarını topla; önce boşta gürültü tabanını ölç. kubectl get --raw /metrics | grep '^apiserver_request_total' \ | grep -E 'verb="(POST|PUT|PATCH|DELETE)"' | grep 'dry_run=""' # 2. Saldırı setini core'a karşı, kimliği doğrulanmış bir yönetici olarak koştur: # a) ham proxy yolunda POST / PUT / PATCH / DELETE # b) plansız apply, ve zincirin dışındaki herhangi bir uç # c) bozulmuş bir planHash ile apply # d) süresi dolmuş bir plana apply # e) başka bir kimliğin oluşturduğu plana apply # f) zaten reddedilmiş bir plana apply # g) yükseltilmiş bir plana önce eksik, sonra yanlış doğrulama adıyla apply # 3. Aynı sayaçları yeniden oku, ve o pencere için KENDİ apiserver denetim # günlüğünü oku. Beklenen: bu denemelere atfedilebilecek hiçbir yazma yok; # her deneme kendi red koduyla dönmüş; her deneme YEKE'nin denetim izinde # reddedilmiş bir deneme olarak duruyor. Sonra hedef nesnenin bayt bayt # değişmediğini doğrula.
Bu, bizim de içeride koştuğumuz ölçümün aynısı; sonucu özetlemek yerine yöntemi yazmamızın tek bir sebebi var: kapalı bir deponun içindeki yeşil bir test paketi, o deponun dışındaki hiç kimse için kanıt değildir. Dışarıya dürüstçe verilebilecek şey yöntemdir. Aynısı denetim zinciri için de geçerli (§8) — sizin toplayıcınız, sizin pinlediğiniz anahtar, sizin kendi kurcalamanız — ve AI vaka kümesi için de (§6): kabul ölçütlerini kendi cluster'ınıza karşı yeniden kurabilirsiniz.
Bu doğrulamanın ulaşamadığı yer
Guardrail motorunun iç işleyişi, ürünle gelen politika setinin içeriği, veritabanı şemaları ve lisans yükünün alan düzeni kapalıdır ve hiçbir kara-kutu testi bunları geri getirmez. Sınır bilinçli olarak çizildi: bir denetçinin kontrol nerede duruyor ve nasıl denetlerim sorusunu cevaplayabileceği kadar açık, bir rakibin aynısını nasıl kurarım sorusunu cevaplayabileceği kadar açık değil. İnceleme süreciniz kaynak emaneti (source escrow) ya da gizlilik sözleşmesi altında bir kod denetimi gerektiriyorsa, bunu doğrudan bizimle konuşmak gerekir; genel bir sayfa onu çözemez.
Bilinen boşluklar ve iddia edilmeyenler
Her satır 19 Ağustos 2026 itibarıyla durumu yazar. Hiçbiri değişeceği bir tarih taşımıyor.
| İddia edilmeyen | Bugünkü durum |
|---|---|
| SAML | Yok. Çoklu oturum açmayı OIDC ve LDAP karşılıyor. |
| SCIM sağlama | Yok. Kullanıcılar ilk dizin ya da OIDC girişinde otomatik olarak oluşturulur. |
| OIDC çıkış entegrasyonu | Ne back-channel ne RP-initiated logout var. Kimlik sağlayıcıda silinen bir kullanıcı bir sonraki girişinde reddedilir, ama açık olan oturumu düşmez; anlık çare o oturumu YEKE'de iptal etmektir ve iptal bir sonraki istekte etkisini gösterir. |
| Bağımsız sızma testi | Yapılmadı. Bu ürün için üçüncü taraf bir test raporu yok, ve buradaki hiçbir şey öyle okunmamalı. |
| SOC 2 / ISO 27001 | Sertifika yok. Hiçbir denetim yapılmadı ve hiçbir rapor mevcut değil. |
| Her sağlayıcıya karşı OIDC | Kendi ağımızdaki Keycloak'a karşı uçtan uca doğrulandı. İç karşılaştırmamızın Entra ID sütunu Microsoft belgelerinden yazıldı ve hiçbir satırı ölçülmedi — laboratuvarda Entra kiracısı yok. Okta hiç ölçülmedi. |
| Ticari bir toplayıcının SIEM kabulü | Mekanizma gerçek soketlerle ölçüldü: gerçek bir TLS toplayıcı, gerçek bir veritabanı, bilerek açık bırakılmış düz TCP ve UDP portlarına sıfır temas, ve veritabanı yeniden açıldığında kaldığı yerden süren bir imleç. Ölçülmeyen: üretimdeki bir Splunk, Elastic ya da Sentinel ayrıştırıcısının bu satırları kabul ettiği. |
| Zorunlu ikinci faktör | TOTP hesap başına opt-in. Kurulum genelinde zorunlu kılan bir politika yok, yani ikinci faktörü hiç açmayan bir yönetici tek faktörlü kalır ve bunu kimse fark ettirmez. |
| Yıkıcı işlemde parola yeniden sorma | Yok. Yükseltilmiş onay nesnenin adını yazdırır; bu, çalınmış bir oturumu yavaşlatır ama durdurmaz. Kabuk yüzeyinde bu yavaşlatma da bilinçli olarak yok: rıza oturum açılırken bir kez verilir. |
| Doğrudan modda custody | Credential core'da durur; core ele geçerse cluster ele geçmiştir. Tavan kubeconfig'in kendisidir ve koşulsuz reddedilen tek şey system:masters'tır (§3). |
| Doğrudan modda çıkış kontrolü | Core kaydettiğiniz adrese bağlanır. Yüzey daraltılmış (https://, apiserver yol önekleri, proxy-url reddi) ama iç ağ adresleri engellenmiyor. O kontrol operatör tarafına aittir. |
| Doğrudan modda credential rotasyonu | Rotasyon ucu yok. Kubeconfig'i değiştirmenin tek yolu cluster'ı silip yeniden eklemektir. |
| Dağıtık kaba kuvvete direnç | IP başına deneme kovası bellek-içi ve süreç-yereldir: core yeniden başlayınca sıfırlanır ve dağıtık kaynaklı bir saldırıda işe yaramaz. Kalıcı olan kapı hesap kilidir. |
| AI ölçümünün genellenmesi | Vaka kümesi bir dil modeli tarafından yazıldı ve henüz insan gözüyle gözden geçirilmedi. Şimdiye kadarki koşumlar dar bir sağlayıcı bandını ve tek bir tüketici donanım sınıfını kapsıyor; yani yerel çıkarım hakkında genel hiçbir hüküm — iki yönde de — bundan çıkmaz. |
| Log ve olay taşıyıcılı enjeksiyon | Talimatı pod log çıktısına ve Event mesajlarına yerleştiren vakalar, gerçek modellere karşı yapılan en son koşumdan sonra vaka kümesine girdi. Taşıyıcı kümede kapsanıyor; uçtan uca henüz ölçülmedi. |
| Teşhis doğruluğu | Asistan olay ve log toplar ve sabit bir bulgu/kanıt/sebep/düzeltme düzeninde cevap verir, ama söylediği kök nedenin gerçek kök neden olup olmadığı bozuk cluster fixture'larına karşı ölçülmedi. Bir teşhisi sonuç değil ipucu olarak okuyun. |
| Kullanıcı silme | Hesaplar silinmez, devre dışı bırakılır; böylece denetim izindeki başvurular asılı kalmaz. Parola sıfırlama yönetici tarafından üretilen tek kullanımlık bir token'dır; posta altyapısı olmadığı için sıfırlama e-postası da yoktur. |
İhtiyaç duyduğunuz bir kontrol bu sayfada hiç geçmiyorsa, bunu "kısalık olsun diye atlandı" değil "yok" diye okuyun. Bu, kısa olmasını tercih edeceğimiz bölüm, ve sayfanın geri kalanının olduğu gibi okunabilmesinin sebebi de o.
Güvenlik açığı bildirimi
Bunun için tek bir adres var, ve o adres hakkında tek bir çekince.
Bildiriminizi konu satırının başında SECURITY yazarak
[email protected]
adresine gönderin. Bugün ayrı bir güvenlik adresi yok — ürün için yayınlanmış tek iletişim
adresi bu, ve bu sayfada olmayan bir adres uydurmak, sayfanın geri kalanının tam olarak karşı
çıktığı türde bir iddia olurdu.
İşe yarayanlar: test ettiğiniz sürüm (etiketler sürümler sayfasında), cluster'ın agent modunda mı doğrudan modda mı bağlı olduğu, AI egress'inin açık olup olmadığı, ve size ait olmayan veriye dokunmadan duran bir yeniden üretim adımı. Bulgu agent'ta ya da tünel paketindeyse depo üzerinden bir issue da geçerli bir kanaldır — ikisi de herkese açık. Ödül programı yok ve taahhüt edilmiş bir cevap süresi de yok; ikisi de taahhüt olurdu.
Kontrol gerçekte nerede duruyor
Bu sayfa sınırı anlatıyor. Yanındaki iki sayfa, o sınırın kendiniz yapılandırdığınız iki yarısını anlatıyor: bir kişinin hangi kimlikle yazdığı, ve bir değişiklik inmeden önce sizin sistemlerinize ne sorulduğu.