Ana içeriğe atla
Bu doküman spesifik bir politikanın detaylı kullanımını anlatır. Eğer Apinizer politika yapısını ilk kez kullanıyorsanız veya politikaların genel çalışma prensiplerini öğrenmek istiyorsanız, öncelikle Politika Nedir? sayfasını okumanızı öneririz.

Genel Bakış

Amacı Nedir?

  • API Proxy (API Vekil Sunucusu) akışına giren JOSE/JWT tokenlarını doğrulayarak kimlik bilgilerinin güvenilirliğini garanti altına almak üzere tasarlanmıştır.
  • Belirlenen issuer, audience ve claim kurallarını zorunlu tutarak yetkisiz erişimlerin önüne geçer ve hassas endpoint’lerin korunmasını sağlar.
  • Şifrelenmiş JWE içeriklerini güvenli şekilde çözerek aşağı akış servislerine temizlenmiş veri aktarımı sunar.
  • Kimlik ve rol bilgisini header seviyesinde yayarak downstream servislerde merkezi yetkilendirme politikaları ile entegre çalışır.

Çalışma Prensibi

  1. İstek Gelişi: API Gateway’e gelen her HTTP/HTTPS isteği için, istemin kaynak IP adresi tespit edilir.
  2. Politika Kontrolü: JOSE Doğrulama politikası aktif ise, sistem aşağıdaki sırayla kontrol yapar:
    • Condition (koşul) tanımlı mı? Varsa koşul sağlanıyor mu?
    • Politika aktif mi (active=true)?
    • Variable kullanılıyor mu yoksa Apinizer default mı?
  3. JOSE İçeriği Çözümleme: Token belirlenen kaynaktan (body, Authorization header veya değişken) okunur; gerekiyorsa seçilen JWK ile şifre çözümü yapılır ve claim seti doğrulamaya hazırlanır.
  4. Karar Verme:
    • Eşleşme Var: İmza/şifreleme geçerli ise, claim ve audience kuralları sağlanırsa ve issuer ACL onaylanırsa istek akışa devam eder, gerekirse kullanıcı bilgisi header’a eklenir.
    • Eşleşme Yok: Token çözülemezse, imza doğrulanamazsa, claim kuralları ihlal edilirse veya ACL reddi oluşursa istek politika tarafından sonlandırılır.
  5. Hata İşleme: Politika kuralına uymayan istekler için özelleştirilebilir HTTP durum kodu ve hata mesajı döndürülür.

Özellikler ve Yetenekler

Temel Özellikler

  • Esnek JOSE Hedefi: Token; body, Authorization header veya seçilen değişkenden okunabilir, değişken senaryolarında Query Builder ile dinamik seçim yapılabilir.
  • Granüler Claim Doğrulaması: Accepted audience, zorunlu ve yasak claim listeleri ile exact match kuralları tanımlanarak çok katmanlı doğrulama kurgulanır.
  • Kimlik ve Rol Yayılımı: İstekten çıkarılan kullanıcı kimliği ve rol bilgisi header üzerinden sonraki servislere taşınabilir, merkezi yetki kontrolü desteklenir.
  • Aktif/Pasif Durum Kontrolü: Politikanın aktif veya pasif durumunu kolayca değiştirme (active/passive toggle). Pasif durumda politika uygulanmaz ancak yapılandırması saklanır.
  • Koşul Bazlı Uygulama: Query Builder ile karmaşık koşullar oluşturarak politikanın ne zaman uygulanacağını belirleme (örn: sadece belirli endpoint’lere veya header değerlerine göre).

İleri Düzey Özellikler

  • JWK Yaşam Döngüsü Yönetimi: İmza ve şifreleme anahtarları Secret Manager veya manuel JWK seçimleriyle yönetilir; gerekli roller yeni anahtar tanımlayabilir.
  • Issuer ACL ve IP Kontrolü: Issuer bazlı izin listesi ve isteği yapan istemci IP doğrulaması ek güvenlik katmanı oluşturur.
  • Claim Decode ve Yeniden Yazma: Şifrelenmiş veya base64 claim’ler çözümlenip body, header veya değişkene yönlendirilebilir; kısmi decode desteklenir.
  • Export/Import Özelliği: Politika yapılandırmasını ZIP dosyası olarak export etme. Farklı ortamlara (Geliştirme, Test, Canlı Ortam) import etme. Versiyon kontrolü ve yedekleme imkanı.
  • Policy Group ve Proxy Group Desteği: Birden fazla politikayı Policy Group içinde yönetme. Proxy Group’lara toplu politika atama. Merkezi güncelleme ve deploy işlemleri.
  • Deploy ve Versiyonlama: Politika değişikliklerini canlı ortama deploy etme. Hangi API Proxy’lerde kullanıldığını görme (Policy Usage). Proxy Group ve Policy Group kullanım raporları.

Kullanım Senaryoları

SenaryoDurumÇözüm (Politika Uygulaması)Beklenen Davranış / Sonuç
Mobil JWT DoğrulamaMobil uygulama Authorization header’da JWT taşırjoseTarget=AUTHORIZATION_HEADER, validateSign=true, issuer JWKS kullanGeçerli token kabul edilir, hatalı imzalar 401 döndürür
IoT JWE ÇözümüIoT cihazları şifreli payload gönderirdecrypt=true, decryptByIssuer=false, encryption JWK seçPayload çözülür, içerik downstream servislere aktarılır
Issuer Beyaz ListelemeBelirli issuer değerleri dışında erişim istenmezclientSourcePart=CLAIMS, clientFieldname=iss, exact match map ile listeUyumsuz issuer istekleri 403 ile engellenir
Audience SegmentasyonuMikroservisler farklı audience bekleracceptedAudienceList ortam bazlı doldurYanlış audience içeren istekler özelleştirilmiş hata alır
Kullanıcı Header EnjeksiyonuDownstream servisler kimlik header’ı isteraddUserToHeader=true, userHeaderName=X-Authenticated-UserIdKimlik bilgisi güvenli şekilde başlıkta iletilir
Yetkilendirme EntegrasyonuRol bazlı erişim denetimi gerekirenableAuthorization=true, method access yapılandırİstek, rol eşleşmesi sağlanmazsa politika tarafından durdurulur
Policy Group Senkronizasyonu (opsiyonel)Aynı kurallar çoklu API Proxy’de kullanılacakGlobal politika oluştur, Policy Group’a ekleTek değişiklikle tüm API Proxy’lerde politika güncellenir

Politika Parametrelerini Yapılandırma

Bu adımda, kullanıcı yeni bir politika oluşturabilir ya da mevcut politika parametrelerini yapılandırarak erişim kurallarını belirleyebilir. Tanımlanan parametreler, politikanın çalışma şeklini (örneğin hangi IP’lerin izinli olacağı, coğrafi kısıtlamalar, koşullu aktivasyonlar vb.) doğrudan etkiler. Bu sayede politika hem kuruma özel gereksinimlere göre özelleştirilebilir hem de merkezi olarak yönetilebilir.

Yeni JOSE Doğrulama Politikası Oluşturma

JOSE Doğrulama Politikası JOSE Doğrulama Politikası

Yapılandırma Adımları

AdımAçıklama / İşlem
Adım 1: Oluşturma Sayfasına Gitme- Sol menüden Development → Global Settings → Global Policies → JOSE Doğrulama Politikası bölümüne gidin.
- Sağ üstteki [+ Create] butonuna tıklayın.
Adım 2: Temel Bilgileri GirmePolicy Status (Politika Durumu): Aktif/Pasif durumu gösterir. Yeni politikalar varsayılan olarak aktiftir.

Name (İsim) Zorunlu: Örnek: Production_JOSEValidation
- Benzersiz isim girin, boşlukla başlamaz.
- Sistem otomatik kontrol eder. Yeşil tik: kullanılabilir. Kırmızı çarpı: mevcut isim.

Description (Açıklama): Örnek: “JWT imza ve şifreleme doğrulaması yapar.”
- Maks. 1000 karakter.
- Politikanın amacını açıklayın.
Adım 3: JOSE Kaynağı ve Kullanıcı Bilgisi Yapılandırması- JOSE Target alanından token kaynağını seçin (body, Authorization header veya değişken).
- Değişken kullanıyorsanız ilgili variable’ı seçin veya oluşturun.
- Client Source Part ile issuer bilgisinin okunacağı alanı belirleyin, gerekiyorsa clientFieldname veya variable atayın.
Adım 4: Claim ve Audience Kurallarını Tanımlama- Accepted Audience, Required Claim, Prohibited Claim listelerini doldurun.
- Exact Match Claim için anahtar-tür-değer eşleşmeleri girin.
- Validate Expiration Time, Validate ACL for Issuer ve checkClientIpAddress ayarlarını ihtiyaca göre aktive edin.
Adım 5: Kriptografik Anahtar ve Decode Ayarları- İmza doğrulaması gerekiyorsa Validate Sign seçeneğini açın ve gerekli JWK’yi seçin veya oluşturun.
- Şifrelenmiş içerikler için Decrypt ayarını ve ilgili JWK’yi yapılandırın.
- Strip and Decode ile decode edilecek claim’leri ve hedef alanı tanımlayın.
Adım 6: Koşul Tanımlama (İsteğe Bağlı)- Condition sekmesine geçin.
- Koşullar, politikanın hangi durumda aktif olacağını belirler.

Örnekler:
- Ortam bazlı: Header = X-Environment, Operator = Equals, Value = production
- API Key bazlı: Header = X-API-Key, Starts With = PROD-
- Endpoint bazlı: Path = /api/admin/*

Koşul tanımlamazsa politika her zaman aktif
Adım 7: Hata Mesajı Özelleştirme (İsteğe Bağlı)- Error Message Customization sekmesine gidin.
- Erişim reddedildiğinde dönecek mesajı özelleştirin.

Varsayılan:
{ "statusCode": 403, "message": "[Default hata mesajı]" }

Özel:
{ "statusCode": 403, "errorCode": "[CUSTOM_ERROR_CODE]", "message": "[Özel mesaj]" }
Adım 8: Kaydetme- Sağ üstteki [Save] butonuna tıklayın.

Kontrol Listesi: Benzersiz isim. Zorunlu alanlar dolu. En az bir kriptografik kontrol (imza veya şifreleme) etkin.

Sonuç:
- Politika listeye eklenir.
- API’lere bağlanabilir.
- Global politikaysa otomatik uygulanır.
Koşullar ve Hata Mesajı Özelleştirme panellerinin açıklaması için Politika Nedir? sayfasındaki Koşullar ve Hata Mesajı Özelleştirme (Error Message Customization) bölümlerini inceleyebilirsiniz.

Politikayı Silme

Bu politikanın silme adımları ve kullanımdayken uygulanacak işlemler için Politika Yönetimi sayfasındaki Akıştan Politika Kaldırma bölümüne bakabilirsiniz.

Politikayı Dışa/İçe Aktarma

Bu politikanın dışa aktarma (Export) ve içe aktarma (Import) adımları için Export/Import sayfasına bakabilirsiniz.

Politikayı API’ye Bağlama

Bu politikanın API’lere nasıl bağlanacağına ilişkin süreç için Politika Yönetimi sayfasındaki Politikayı API’ye Bağlama bölümüne bakabilirsiniz.

İleri Düzey Özellikler

ÖzellikAçıklama ve Adımlar
Dinamik JWK Entegrasyonu- İmza veya şifreleme JWK’sini Secret Manager’dan veya listeden seçin.
- Rolü uygun kullanıcılar aynı ekrandan yeni JWK üretebilir.
- Kaydedilen JWK değişiklikleri politika ile otomatik eşleştirilir.
Issuer ACL ve IP Doğrulaması- validateACLforIssuer seçeneğini etkinleştirin.
- Issuer bazlı ACL kurallarını güvenlik servisi üzerinden güncelleyin.
- Gerekirse checkClientIpAddress ayarını açarak gelen isteğin IP’sini doğrulayın.
Claim Decode & Rewrite- stripAndDecode değerini ALL veya PARTIAL olarak belirleyin.
- Decode edilecek claim listesini (jwtClaimsToDecode) girin.
- Çıktıyı body, header veya değişkene yönlendirip diğer politikalarda kullanın.

Best Practices

Yapılması Gerekenler ve En İyi Uygulamalar

KategoriAçıklama / Öneriler
Audience YönetimiKötü: Accepted audience boş bırakmak.
İyi: Her mikroservis için ayrı audience değeri tanımlamak.
En İyi: Ortam bazlı audience listelerini (Geliştirme/Test/Canlı Ortam) ayrı politikalarla yönetmek.
İmza DoğrulamaKötü: validateSign kapalı çalıştırmak.
İyi: Issuer JWKS endpoint’ini validateByIssuer ile kullanmak.
En İyi: Issuer olmayan senaryolarda merkezi JWK kasasını zorunlu kılmak.
Şifreleme YönetimiKötü: Şifreli tokenlarda decrypt kapalı bırakmak.
İyi: Issuer tabanlı çözümlemeyi etkinleştirmek.
En İyi: Her issuer için ayrı encryption anahtarı tanımlayıp periyodik anahtar döndürmek.
Claim PolitikalarıKötü: Claim listelerini tanımsız bırakmak.
İyi: Zorunlu ve yasak claim listelerini belirlemek.
En İyi: Exact match haritası ile değer-tip doğrulaması yapmak.
Header EntegrasyonuKötü: Kullanıcı kimliğini downstream servislere iletmemek.
İyi: addUserToHeader ile kimlik header’ı eklemek.
En İyi: Rol header’larını güvenlik log’larıyla eşleyip denetlemek.

Güvenlik En İyi Uygulamaları

Güvenlik AlanıAçıklama / Uyarılar
Anahtar YönetimiJWK dosyalarını Secret Manager’da saklayın; erişimleri rol tabanlı yönetin.
Issuer GüveniIssuer whitelist’ini düzenli güncelleyin; şüpheli issuer’ları derhal kaldırın.
Token ÖmrüvalidateExpirationTime daima açık olmalı; uzun süreli tokenları kısıtlayın.
Header SertliğiEklenen kimlik/rol header’larını yalnızca HTTPS üzerinden iletin; loglarda maskelenmesini sağlayın.
Hata MesajlarıHata mesajlarında içsel detay paylaşmayın; generik mesaj + hata kodu kombinasyonu kullanın.

Kaçınılması Gerekenler

KategoriAçıklama / Uyarılar
Statik Gömülü JWKNeden kaçınılmalı: Kod içine gömülen anahtarlar sızıntıya açıktır.
Alternatif: Secret Manager üzerinden JWK seçin.
Belirsiz Claim KurallarıNeden kaçınılmalı: Tüm claim’leri kabul etmek güvenlik açığı yaratır.
Alternatif: Required ve prohibited listelerini tanımlayın.
Decode Edilmeyen Şifreli VeriNeden kaçınılmalı: Şifreli veri doğrulanmadan geçer.
Alternatif: decrypt ayarını zorunlu tutup uygun JWK’yi bağlayın.
İzlenmeyen Header EkleriNeden kaçınılmalı: Denetlenmeyen header’lar kötüye kullanılabilir.
Alternatif: Header kullanımını loglayın ve erişim kontrolü uygulayın.

Performans İpuçları

KriterÖneri / Etki
JWK ÖnbelleğiÖneri: Sık kullanılan JWK’leri Secret Manager cache’iyle paylaşın.
Etki: İmza doğrulama süresi düşer.
Claim Kuralı SayısıÖneri: Gereksiz claim kontrollerini temizleyin.
Etki: Politika yürütme süresi kısalır.
Decode SeçenekleriÖneri: Yalnızca ihtiyaç duyulan claim’leri decode edin.
Etki: Bellek ve CPU tüketimi azalır.
Global vs Local KullanımÖneri: Aynı kuralları paylaşan API’lerde global politika tercih edin.
Etki: Yönetim ve deploy süreleri kısalır.
Koşul SadeleştirmeÖneri: Query Builder’da gereksiz koşulları kaldırın.
Etki: İstek başına koşul değerlendirme süresi azalır.

Sık Sorulan Sorular (SSS)

KategoriSoruCevap
GenelPolitika hangi token türlerini doğrular?JOSE standartlarını (JWS/JWE) destekler; JSON Web Signature/Encryption kurallarına göre doğrulama yapar.
GenelPolitika birden fazla API Proxy (API Vekil Sunucusu) için paylaşılabilir mi?Evet, global tanımlandıysa Policy Group aracılığıyla birden fazla API Proxy (API Vekil Sunucusu) ile paylaşılır.
TeknikIssuer kendi JWKS endpoint’ini sunuyorsa nasıl yapılandırılır?validateByIssuer seçeneğini etkinleştirerek gateway’in issuer JWKS’inden anahtar almasını sağlayın.
TeknikŞifrelenmiş JWE içeriği nasıl çözümlenir?decrypt seçeneğini açın, güvenilir değilse uygun encryption JWK’sini seçin; çözülen payload belirlenen hedefe yazılır.
KullanımKullanıcı kimliğini header’a eklemek güvenli midir?HTTPS üzerinde iletin, header adını maskeyin ve sadece yetkili servislerin okumasına izin verin.
KullanımClaim kurallarını ortam bazında nasıl ayırabilirim?Her ortam için ayrı politika kopyası oluşturun veya Condition sekmesinde ortam header’ına göre koşul tanımlayın.