SpitfireYük Testi ve Gözlemlenebilirlikv1.4.9 · Yenilikler

Sürüm: 1.4.9Bu dokümantasyon Spitfire 1.4.9 içindir.

Zabbix'i hazırlamak: rol, kullanıcı ve API token

Bu sayfa, Spitfire'ın Zabbix'inizi okuyabilmesi için Zabbix tarafında yapılacakları sürüm sürüm anlatır: bir rol, bir kullanıcı grubu, bir kullanıcı ve bir API token. Hepsi en az yetkiyle: Spitfire Zabbix'inizde hiçbir şeyi değiştirmez ve istediğiniz an erişimi kesebilirsiniz. Bağlantıyı Spitfire'da eklemek ve filtreler: Gözlemlenebilirlik: Zabbix.

Ne gerekecek

Spitfire yalnız şu API metodlarını çağırır:

Metod Ne için
apiinfo.version Sürümü öğrenmek (oturum açmadan)
hostgroup.get Host group adlarını çözmek
host.get Filtreye uyan host'ları bulmak
problem.get Koşu penceresindeki problemleri okumak
event.get Problemlerin olay ayrıntıları

Parolayla bağlanırsanız ek olarak user.login ve user.logout çağrılır. Bulguları Zabbix'e geri yazmak isterseniz ek yetki gerekir; o bölümde ayrıca anlatılır. Bu sayfadaki hazırlık yalnız okumayı açar.

Zabbix'te izinlerin iki kaynağı vardır. Güvenlik ekibinizin ilk sorusu genelde budur:

  • Ne görebilir: kullanıcı grubunun host group izinleri. Spitfire yalnız bu gruptaki host'ları ve onların problemlerini görür.
  • Ne yapabilir: kullanıcı rolü (5.2 ve sonrası) ya da kullanıcı tipi (5.0). Rolde yalnız yukarıdaki metodlara izin verilir; arayüz ve aksiyonlar kapalı kalır.

Sürümünüzü bulun

Zabbix sürümü arayüzün her sayfasının altında yazar (ör. Zabbix 8.0.0). Arayüze giremiyorsanız API'ye oturum açmadan sorun (deneme bölümündeki ilk komut).

Konu 5.0 5.2 5.4 6.0 6.2 6.4 7.0 / 7.2+ 8.0
Kullanıcı rolü ve API metod izin listesi yok (User type) var var var var var var var
API token yok yok var var var var var var
Token'ın gönderilişi – – auth alanı auth auth Authorization: Bearer Bearer Bearer
Grup izin sekmesi Permissions Permissions Permissions Permissions Template / Host permissions aynı aynı aynı
Menü Administration Administration Administration Administration Administration Users (yeni üst menü) Users Users
Spitfire'da Zabbix sürümü 5.0–5.2 5.0–5.2 5.4 6.0–6.2 6.0–6.2 6.4 7.0 / 7.2 ve sonrası 7.2 ve sonrası
Not

Tablo, Zabbix 8.0'da birebir izlenen yoldan ve Zabbix'in sürüm notlarından derlendi. Yalnız 8.0 canlı bir kurulumda doğrulandı. Eski bir sürümde bir menü ya da sekme adı farklı görünüyorsa aynı işi yapan formu Zabbix'in o sürüme ait dokümanında bulun; izin mantığı aynıdır.

Sürüme göre adımlar

Zabbix 7.0, 7.2 ve sonrası (8.0)

Doğrulandı: Zabbix 8.0, 2026-11-08.

  1. Rol: Users → User roles → Create user role.
    • Name Spitfire read-only, User type User.
    • UI elements: hepsi kapalı.
    • API access (formun alt kısmında, Access to modules ile Access to actions arasında): Enabled; API methods Allow list; kutuya hostgroup.get, host.get, problem.get, event.get yazıp her birinde Enter'a basın (ya da Select ile seçin).
    • Access to actions: hepsi kapalı.
    • Bölüm görünmüyorsa User type seçili mi bakın. Select listesi yalnız o tipin kullanabildiği metodları gösterir.
  2. Grup: Users → User groups → Create user group.
    • Group name Spitfire readers, Frontend access Disabled (API token bundan etkilenmez).
    • Host permissions → Add → izlenecek host group(lar) → Read.
    • Template permissions ve Problem tag filter'a dokunmayın. Tag filtresi verirseniz görülen problemleri ayrıca daraltır.
  3. Kullanıcı: Users → Users → Create user.
    • Username spitfire, uzun ve rastgele bir parola, grup Spitfire readers.
    • Permissions sekmesi: Role Spitfire read-only. Altta kullanıcının eriştiği host group listesi çıkar: seçtiğiniz grup orada görünüyorsa rol ile grup doğru bağlanmıştır.
  4. API token: Users → API tokens → Create API token.
    • User spitfire, bir son kullanma tarihi koyun (ör. 1 yıl).
    • Token yalnız bir kez gösterilir: hemen kopyalayın.
  5. Deneme: Spitfire'a girmeden deneyin bölümündeki iki komut. host.get 0 dönüyorsa grubun host izni eksiktir.

7.0 ve 7.2'de aynı menü yolları beklenir; bu sürümlerde henüz birebir denenmedi.

Zabbix 6.4

Adımlar 7.x ile aynıdır: Users üst menüsü ve token'ın Authorization: Bearer header'ıyla gönderilmesi bu sürümde geldi. Spitfire'da Zabbix sürümü olarak Zabbix 6.4'ü seçin.

Not

Bu sürümde birebir denenmedi. Bir alan adı farklı görünüyorsa izin mantığı aynıdır: rolde yalnız okuma metodları, grupta host group'lara Read.

Zabbix 6.0 ve 6.2

  • Rol: Administration → User roles. Alanlar 7.x'teki 1. adım gibidir.
  • Grup: Administration → User groups. 6.0'da grup formunda tek bir Permissions sekmesi vardır; 6.2'de Template permissions ve Host permissions ayrıldı. Host group'lara Read verin.
  • Kullanıcı: Administration → Users.
  • API token: Administration → General → API tokens.
  • Token istek gövdesindeki auth alanıyla gider; Spitfire bunu Zabbix 6.0–6.2 seçimine göre kendisi yapar.
Not

Bu sürümlerde birebir denenmedi. Menü adları Zabbix'in sürüm notlarından alındı.

Zabbix 5.4

6.0 gibidir: menüler Administration altında, token auth alanıyla gider. 5.4, API token'ın geldiği ilk sürümdür. Spitfire'da Zabbix 5.4'ü seçin.

Not

Bu sürümde birebir denenmedi.

Zabbix 5.2

Rol ve API metod izin listesi vardır (6.0'daki gibi, Administration altında), ama API token yoktur. Spitfire'da Zabbix 5.0–5.2'yi ve Oturum açma olarak Kullanıcı adı + parola'yı seçin.

Grubun Frontend access ayarını System default bırakın. Parolayla oturum açılırken Disabled bir grup girişi reddedebilir (No permissions for system access); bu davranış henüz doğrulanmadı. 5.4 ve sonrasında token'la Disabled güvenle kullanılır.

Zabbix 5.0 kullanıyorsanız bir sonraki bölüme bakın.

Zabbix 5.0 LTS

  • Rol yoktur: kullanıcının Permissions sekmesinde User type Zabbix user'ı seçin.
  • Metod bazında kısıtlama yapılamaz. Zabbix user tipi zaten yalnız okuyabildiği host'ları görür ve yapılandırmayı değiştiremez. Güvenlik ekibinize bunu söyleyin: kullanıcı yönetici değildir, yalnız kendi grubunun host'larını okur.
  • Token yoktur: Spitfire'da Zabbix 5.0–5.2 ve Kullanıcı adı + parola.
  • Grubun Frontend access ayarını 5.2'deki gerekçeyle System default bırakın.
Not

Bu sürümde birebir denenmedi.

Ön kapı arkasındaysa

Zabbix'iniz bir SSO kapısının, Cloudflare Access'in ya da bir reverse proxy'nin arkasındaysa Spitfire'ın isteği oraya takılır. Spitfire'ın Zabbix istemcisi yalnız Authorization header'ını gönderir; Cloudflare'in CF-Access-Client-Id / CF-Access-Client-Secret header'larını gönderemez. Bugün işleyen yol: kapıda yalnız API yolunu (/api_jsonrpc.php) Spitfire'ın çıkış IP'sine açmak. Arayüz kapının arkasında kalır; API'yi Zabbix token'ı korur.

Cloudflare Access

Neden ayrı bir uygulama: Access aynı alan adında daha özel yolu önce eşleştirir. API yolu için açılan uygulama yalnız o dosyayı kapsar; arayüz mevcut uygulamanın e-posta ya da SSO politikasında kalır. Mevcut uygulamaya Bypass eklemek bütün arayüzü o IP'ye açar: bunu yapmayın.

  1. Spitfire'ın çıkış IP'sini bulun. Spitfire'ın çalıştığı makinede çalıştırın. İkinci satır boşsa IPv6 çıkışı yoktur.

    bash
    curl -4 -s ifconfig.me; echo; curl -6 -s ifconfig.me; echo
  2. Zero Trust → Access controls → Applications → Create new application. Self-hosted and private sekmesi, Public DNS → Continue with Self-hosted and private.

  3. Destinations → Public hostnames: Subdomain zabbix, Domain alan adınız, Path api_jsonrpc.php (başında / olmadan). Zabbix bir alt yolda yayınlanıyorsa (ör. /zabbix/api_jsonrpc.php) yolu ona göre yazın. Domain listesinde birbirine benzeyen adlar olabilir: dikkatle seçin.

  4. Access policies → Create new policy:

    • Policy Name: ör. spitfire-bypass
    • Action: Bypass
    • Include → Selector IP ranges → değer <IPv4>/32 (Enter), varsa <IPv6>/128 (Enter)
    • Save policy. Politika uygulamanın listesine Bypass olarak düşer.
  5. Authentication bölümüne dokunmayın: Bypass'ta giriş yapılmaz.

  6. Details → Name: varsayılan ad mevcut uygulamanınkiyle aynı gelebilir (ör. zabbix); ayırt edici bir ad verin, ör. zabbix-api-spitfire. Create.

  7. Doğrulayın:

    • Spitfire makinesinden apiinfo.version çağrısı (ilk komut) sürümü döner: {"jsonrpc":"2.0","result":"8.0.0","id":1}.
    • Başka bir makineden aynı çağrı 403 döner. Bu uygulamada tek politika Bypass olduğundan eşleşmeyen IP'ler giriş sayfasına değil doğrudan 403'e düşer. Beklenen durum budur.
    • Başka bir makineden arayüz (/) Access giriş sayfasına yönlenir (302). Arayüz korunmaya devam eder.
Dikkat

Bypass edilen istekler Access loglarında görünmez; API erişimini izlemek için Zabbix'in audit log'una bakın. Spitfire makinesinin IP'si değişirse (yeni sunucu, IPv6'nın açılması) bağlantı 403 ile kesilir: yeni IP'yi 4. adımdaki politikaya ekleyin. Authenticated Origin Pulls açıksa sorun olmaz, istek yine Cloudflare üzerinden gelir.

Cloudflare service token ile Service Auth politikası IP'ye bağlı kalmadığı için daha iyi bir yoldur, ama Spitfire o header'ları bugün gönderemediği için şimdilik kullanılamaz.

Öteki ön kapılar

Yöntem aynıdır: yalnız /api_jsonrpc.php yolu, yalnız Spitfire'ın çıkış IP'si için kapının ön doğrulaması atlanır.

  • SSO ya da uygulama proxy'leri (ör. Okta, Azure AD App Proxy, Zscaler): API yolu için "IP'ye göre ön doğrulamayı atla" kuralı.

  • nginx auth_request önündeyse: API yolunda auth'u kaldırıp IP'yle sınırlayın.

    nginx
    location = /api_jsonrpc.php {
        auth_request off;
        allow <Spitfire IPv4>;
        allow <Spitfire IPv6>;
        deny all;
        # mevcut proxy_pass / fastcgi_pass satırınız
    }
  • Yalnız IP izin listesi (firewall): Spitfire'ın çıkış IPv4 ve IPv6 adreslerini ekleyin.

Spitfire'a girmeden deneyin

Spitfire'ın çalıştığı makineden çalıştırın; zabbix.example.com yerine kendi adresinizi yazın.

  1. Sürüm (oturum açmadan, token göndermeden):

    bash
    curl -s -X POST https://zabbix.example.com/api_jsonrpc.php -H 'Content-Type: application/json-rpc' -d '{"jsonrpc":"2.0","method":"apiinfo.version","params":{},"id":1}'

    Doğru çıktı: {"jsonrpc":"2.0","result":"8.0.0","id":1}. HTML dönüyorsa adres Zabbix frontend'i değildir ya da bir giriş sayfası dönüyordur: ön kapı.

  2. Token'ın gördüğü host sayısı. 6.4 ve sonrası (Authorization: Bearer):

    bash
    curl -s -X POST https://zabbix.example.com/api_jsonrpc.php -H 'Content-Type: application/json-rpc' -H 'Authorization: Bearer <token>' -d '{"jsonrpc":"2.0","method":"host.get","params":{"countOutput":true},"id":2}'

    5.4, 6.0 ve 6.2 (token gövdedeki auth alanında):

    bash
    curl -s -X POST https://zabbix.example.com/api_jsonrpc.php -H 'Content-Type: application/json-rpc' -d '{"jsonrpc":"2.0","method":"host.get","params":{"countOutput":true},"auth":"<token>","id":2}'

    5.0 ve 5.2: önce user.login ile oturum açın, dönen result değerini yukarıdaki komutta <token> yerine yazın.

    bash
    curl -s -X POST https://zabbix.example.com/api_jsonrpc.php -H 'Content-Type: application/json-rpc' -d '{"jsonrpc":"2.0","method":"user.login","params":{"user":"spitfire","password":"<parola>"},"id":1}'

    Doğru çıktı: {"jsonrpc":"2.0","result":"3","id":2} (sıfırdan büyük bir sayı). "result":"0" ise grubun host izni eksiktir. Yanıtta "error" varsa data alanındaki metni sık hatalar tablosunda bulun.

Spitfire'da

Gözlemlenebilirlik → Ekle → Zabbix penceresinde:

Alan Ne yazılır
Adres Zabbix frontend'inin adresi, ör. https://zabbix.example.com (/api_jsonrpc.php olmadan)
Zabbix sürümü Sürüm tablosundaki son satır
Oturum açma API token (5.4 ve sonrası) ya da Kullanıcı adı + parola
API token 4. adımda kopyaladığınız token
Kullanıcı adı, Parola Yalnız parolayla: spitfire ve parolası
Host group'lar 2. adımda grubun Host permissions'ına eklediğiniz adlar, birebir

Sonra Kaydet ve Bağlantıyı dene: Zabbix sürümünü ve filtreye uyan host sayısını söyler.

Sık hatalar

Görülen Neden Çözüm
unexpected answer to apiinfo.version ve HTML Adres Zabbix frontend'i değil ya da bir giriş sayfası dönüyor Adresi düzeltin; ön kapı
HTTP 403 (Cloudflare sayfası) Spitfire'ın çıkış IP'si Bypass listesinde değil, IP değişti ya da istek IPv6'dan çıkıyor Cloudflare Access adım 1 ve 4: IPv4 ve IPv6'yı ekleyin
HTTP 302 → *.cloudflareaccess.com API yolu için ayrı uygulama yok ya da Path yanlış Cloudflare Access adım 3
No permissions to call "host.get" Rolün izin listesinde metod yok Rol → API methods (7.x adım 1)
0 hosts match the filter Grubun host izni yok ya da group adı birebir değil Grup → Host permissions; adı Zabbix'ten kopyalayın
choose Zabbix X Seçilen sürüm sunucuya uymuyor Zabbix sürümü'nde mesajdaki seçeneği seçin
Not authorised Token'ın süresi dolmuş, kapalı ya da başka bir kullanıcının Token listesinde durumuna bakın; gerekirse yenisini oluşturun

Geri almak

Erişimi istediğiniz an kesersiniz:

  1. Token'ı kapatın ya da silin: Users → API tokens (5.4–6.2: Administration → General → API tokens) → Disable / Delete.
  2. spitfire kullanıcısını kapatın ya da silin: Users → Users (6.2'ye kadar: Administration → Users).
  3. İsterseniz rolü ve grubu da silin; ön kapıda açtığınız Bypass uygulamasını kaldırın.

Spitfire'daki bağlantı "okunamıyor" olur; geçmiş koşulardaki problemler o koşularda kalır.

İlgili sayfalar