KoderKoder.ai
FiyatlandırmaKurumsalEğitimYatırımcılar için
Giriş YapBaşla

Ürün

FiyatlandırmaKurumsalYatırımcılar için

Kaynaklar

Bize UlaşınDestekEğitimBlog

Yasal

Gizlilik PolitikasıKullanım KoşullarıGüvenlikKabul Edilebilir Kullanım PolitikasıKötüye Kullanımı Bildir

Sosyal

LinkedInTwitter
Koder.ai
Dil

© 2026 Koder.ai. Tüm hakları saklıdır.

Ana Sayfa›Blog›Ürünler Arası İzinleri Yönetmek İçin Bir Web Uygulaması Nasıl Kurulur?
03 Eyl 2025·8 dk

Ürünler Arası İzinleri Yönetmek İçin Bir Web Uygulaması Nasıl Kurulur?

Farklı ürünler arasında roller, gruplar ve izinleri merkezileştiren bir web uygulamasını nasıl tasarlayıp inşa edebileceğinizi; denetimler, SSO ve güvenli yayılım süreçleriyle birlikte öğrenin.

Ürünler Arası İzinleri Yönetmek İçin Bir Web Uygulaması Nasıl Kurulur?

Çözülmesi Gereken Problem ve Başarının Nasıl Görüneceği

“Birden fazla ürün arasında izinleri yönetmemiz gerekiyor” dendiğinde genellikle üç durumdan biri kastedilir:

  • Ayrı uygulamalar (örn. faturalama, analiz, destek) ve her biri kendi kullanıcı/rol sistemini geliştirmiştir.
  • Tek bir platform içindeki modüller ve her biri ayrı ürün gibi davranır (farklı veriler, eylemler, ekipler).
  • Tenantlar veya workspace’ler: aynı ürünün farklı müşteri, bölge veya iş birimleri için tekrarlandığı durumlar.

Her durumda temel sorun aynıdır: erişim kararları çok fazla yerde alınıyor ve “Admin”, “Manager” veya “Read-only” gibi rollerin tanımları çelişiyor.

En yaygın ağrılar

Ekipler genellikle sorunun varlığını net olarak söylemeden önce aksaklığı hissederler.

Tutarsız roller ve politikalar. Bir üründeki “Editor” kayıtları silebilirken diğerinde silemez. Kullanıcılar neye ihtiyaçları olacağını bilmedikleri için gereksiz erişim isterler.

Manuel provisyon/iptal. Erişim değişiklikleri rastgele Slack mesajları, hesap tabloları veya bilet kuyruğu üzerinden yapılır. Offboarding özellikle risklidir: bir araçta erişim gider ama diğerinde kalır.

Sahiplik belirsizliği. Kim erişimi onaylayabilir, kim gözden geçirmeli veya bir izin hatası olayına kim hesap vermeli bilinmez.

Başarının nasıl görünmesi gerekir

İyi bir izin yönetimi web uygulaması sadece bir kontrol paneli değildir—ortak bir anlayış yaratır.

Merkezi yönetim ve tutarlı tanımlar. Roller anlaşılır, yeniden kullanılabilir ve ürünler arasında (veya farklar açıkça belirtilerek) net şekilde eşlenir.

Koruyucu sınırlar içinde self‑servis. Kullanıcılar doğru kişiyi aramadan erişim isteyebilir; hassas izinler yine de onay ister.

Onay akışları ve hesap verebilirlik. Her değişikliğin sahibi olmalı: kim istedi, kim onayladı, neden.

Varsayılan olarak denetlenebilirlik. “Kim neye, ne zaman erişti?” sorusunu beş sistemin loglarını birleştirmeden yanıtlayabilmelisiniz.

İşleyenin ölçüleceği metrikler

Hız ve güvenlikle ilişkili çıktıları izleyin:

  • Erişim verme süresi (medyan ve p95)
  • Erişimle ilgili destek taleplerinde azalma (“X’i göremiyorum”, “Beni Y’ye ekleyin” gibi)
  • Erişim kaynaklı olaylarda azalma (aşırı ayrıcalık, eksik iptaller)
  • Periyodik erişim gözden geçirme tamamlama oranları (varsa)

Erişim değişikliklerini hem daha hızlı hem de daha öngörülebilir hale getirebilirseniz doğru yoldasınız demektir.

Gereksinimler ve Kapsam Kontrol Listesi

Rol tasarlamaya veya teknoloji seçmeye başlamadan önce, izin uygulamanızın birinci günde hangi alanları kapsaması gerektiğini ve açıkça neyi kapsamayacağını netleştirin. Dar bir kapsam, yarıda her şeyi yeniden inşa etmenizi engeller.

1) Önce entegre edeceğiniz ürünleri envanterleyin

Kısa bir listeyle (genellikle 1–3 ürün) başlayın ve her birinin bugün erişimi nasıl ifade ettiğini yazın:

  • Roller, gruplar, varlığa özel izinler mi yoksa is_admin gibi flag’ler mi kullanılıyor?
  • İzinler global mi (ürün geneli) yoksa varlığa mı bağlı (projeler, workspace’ler, hesaplar)?
  • İzinler bugün nerede denetleniyor (frontend, backend veya her ikisi)?

Eğer iki ürün temelde farklı modeller kullanıyorsa, bunu erken not edin—zorla tek bir şekle sokmak yerine çeviri katmanına ihtiyaç duyabilirsiniz.

2) Kullanıcı tiplerini ve operasyonel gerçeklikleri belirleyin

İzin sisteminiz sadece “son kullanıcıları” yönetmemeli. En az şunları tanımlayın:

  • Dahili yöneticiler ve destek personeli (genellikle geniş, süreli erişime ihtiyaç duyar)
  • Müşteri yöneticileri ve normal kullanıcılar
  • Partnerler / bayi‑satıcılar (birden fazla müşteri hesabına yayılabilir)
  • Servis hesapları ve API istemcileri (otomasyon için sabit, en az ayrıcalıklı erişim gerekli)

Sözleşmeli çalışanlar, paylaşılan posta kutuları ve birden fazla organizasyona ait kullanıcılar gibi uç durumları da yakalayın.

3) Hangi eylemlerin izin kontrolü gerektirdiğine karar verin

İş ve kullanıcılar için önemli eylemleri listeleyin. Yaygın kategoriler:

  • Görüntüleme vs. düzenleme (read/write)
  • Faturalama ve abonelik değişiklikleri
  • Kullanıcı yönetimi (davet etme, devre dışı bırakma, MFA sıfırlama)
  • Yüksek riskli yönetici eylemleri (veri dışa aktarma, anahtar rotasyonu, yıkıcı silmeler)

Bunları nesneye bağlı fiiller olarak yazın (ör. “workspace ayarlarını düzenle”), belirsiz etiketler kullanmayın.

4) Gerçek kaynaklar ve sahipliği belgeleyin

Kimliklerin ve özniteliklerin nereden geldiğini netleştirin:

  • Çalışanlar için HRIS, müşteriler için CRM, mevcut dizinler/SSO grupları
  • Üyelikler ve kaynaklar için ürün veri tabanları

Her kaynak için izin uygulamanızın neyi sahiplenip neyi aynaladığına ve çakışma olduğunda nasıl çözüleceğine karar verin.

Bir Mimari Seçin: Merkezi, Federated veya Hibrit

İlk büyük karar: yetkilendirme “nerede” yaşasın? Bu seçim entegrasyon çabasını, admin deneyimini ve izinleri güvenle geliştirme şeklini belirler.

Seçenek 1: Merkezileştir (tek bir yetkilendirme servisi)

Merkezi modelde, tüm ürünler için erişimi değerlendiren özel bir authorization service vardır. Ürünler bu servise çağrı yapar (veya merkezi verilen kararları doğrular) ve sonra eylemi izin verir.

Tutarlılığı, çapraz‑ürün rollerini ve tek bir yerde denetim yapmayı kolaylaştırır. Başlıca maliyet entegrasyondur: her ürün paylaşılan servisin kullanılabilirliğine, gecikmesine ve karar formatına bağımlı olur.

Seçenek 2: Federate (her ürün kendi kurallarını sahiplenir)

Federated modelde, her ürün kendi izinlerini uygular ve değerlendirir. Yönetici uygulamanız esasen atama iş akışlarını yönetir ve sonucu her ürüne senkronize eder.

Bu, ürün özerkliğini maksimize eder ve ortak runtime bağımlılıklarını azaltır. Dezavantajı sürüklenme (drift): isimler, anlamlar ve uç durumlar farklılaşarak çapraz‑ürün yönetimini ve raporlamayı zorlaştırır.

Seçenek 3: Hibrit (kontrol düzlemi + yerel uygulama)

Pratik bir orta yol: izin yöneticisini kontrol düzlemi (tek bir admin konsolu) olarak kullanmak, ürünleri ise uygulama noktaları olarak bırakmaktır.

Ortak bir izin katalogu oluşturun (ör. “Billing Admin”, “Read Reports”) ve aynı zamanda ürün‑özgü izinlere yer verin. Ürünler güncellemeleri (roller, atamalar, grup eşlemeleri) çeker veya alır ve yerelde uygular.

Karar verirken öncelikle değerlendirilmesi gerekenler

  • Entegrasyon hızı: merkezi değerlendirme standardize etmeyi hızlandırabilir, fakat legacy sistemlere eklemek zor olabilir; federated senkronizasyon küçük başlayıp normalize olması daha uzun sürebilir.
  • Özerklik: federated/hibrit ürün ekiplerinin bağımsız şekilde ilerlemesine izin verir; merkezi çözüm daha sıkı koordinasyon gerektirir.
  • Kırılma riski: paylaşılan katalog ve karar API’si versiyonlama ve geriye dönük uyumluluk gerektirir; aksi halde bir değişiklik birden çok ürünü etkileyebilir.

Ürün büyümesi bekliyorsanız, hibrit genellikle en iyi başlangıçtır: tek bir yönetici konsolu deneyimi sunar ama her ürünü aynı runtime karar motoruna zorlamaz.

İzin Modelini Tasarla (Önce RBAC, Sonra ABAC)

Bir izin sisteminin başarısı veritabanı/modeline bağlıdır. İnsanların kolay anlayacağı basit bir RBAC ile başlayın. RBAC çok kaba gelmeye başladığında ABAC ekleyin.

Neredeyse her zaman ihtiyaç duyacağınız temel varlıklar

En azından şu kavramları açıkça modelleyin:

  • Kullanıcılar: erişim isteyen kişiler veya servis hesapları.
  • Gruplar: kullanıcı koleksiyonları (ekip, departman, ortam sahipleri).
  • Ürünler: kontrol ettiğiniz uygulama/servisler.
  • Kaynaklar: ürün içindeki nesneler (proje, workspace, repo, müşteri hesabı).
  • İzinler: atomik eylemler (örn. project.read, project.write, billing.manage).
  • Roller: isimlendirilmiş izin setleri.

Pratik bir desen: rol atamaları bir principal (kullanıcı veya grup) ile bir rolu bir kapsamta (ürün geneli, kaynak seviyesi veya ikisi) bağlar.

Önce RBAC: rolleri birincil arayüz yapın

Her ürün için roller tanımlayın, böylece her ürünün sözcükçesi net kalır (örn. Ürün A’daki “Analyst” zorunlu olarak Ürün B’deki “Analyst” ile aynı olmak zorunda değildir).

Sonra rol şablonları ekleyin: tenantlar, ortamlar veya müşteriler arasında tekrar kullanılabilecek standart roller. Üzerine de birden fazla ürünü kapsayan paketler (bundles) oluşturun (örn. “Support Agent bundle” = Ürün A + Ürün B + Ürün C rolleri). Paketler yöneticilik işini azaltır fakat her şeyi tek bir mega‑role çekmez.

En az ayrıcalık: “admin her şeyi yapar” tuzağından kaçının

Varsayılan deneyimi güvenli yapın:

  • Yeni kullanıcılar erişimsiz veya minimal “Viewer” rolüyle başlamalıdır.
  • “Admin” rolünü kapsamlı olarak tanımlayın (ürün yöneticisi, workspace yöneticisi veya tenant admini), küresel god‑mode olarak değil.
  • billing.manage, user.invite, audit.export gibi yüksek riskli izinleri ayrı tutun; bunları tek bir “admin”in arkasına saklamayın.

Ne zaman ABAC eklemeli?

RBAC ile temiz ifade edilemeyen politika kuralları gerektiğinde ABAC ekleyin: “kullanıcı yalnızca kendi bölgesindeki ticket’ları görebilir” veya “sadece staging’e deploy edebilir” gibi. ABAC’ı kısıtlar için (bölge, ortam, veri sınıflandırması) kullanın; insanlar rollerle düşünmeye devam etsin.

Daha derin rol isimlendirme ve kapsam konvansiyonları için dahili dokümanlarınıza veya referans sayfanıza başvurun: /docs/authorization-model.

Kimlik, Doğrulama ve Token Stratejisi

İzin uygulamanız insanları, ürünleri ve politikaları birbirine bağlar—bu yüzden her isteğin kim tarafından yapıldığını, hangi ürünün sorduğunu ve hangi izinlerin uygulanacağını belirleyecek net bir plan gerekir.

Ürünler kendilerini nasıl tanımlar

Her ürünü (ve ortamı) kendi kimliğiyle bir istemci olarak ele alın:

  • Client ID + secret / API anahtarları sunucu tarafı entegrasyonlar için. Düzenli olarak döndürün ve belirli API’lerle sınırlandırın.
  • Yüksek güven gereken iç trafik için mTLS: ürün istemci sertifikası sunar, gateway’de doğrulama yapılır.

Hangi yöntemi seçerseniz seçin, her authorization/audit etkinliğinde ürün kimliğini loglayın ki “hangi sistem bunu istedi?” sorusuna cevap verebilesiniz.

Kullanıcıların oturum açma ve oturum yönetimi

İki giriş noktasını destekleyin:

  • E‑posta/parola (sadece gerekiyorsa): MFA, rate limiting ve breach check korunmalı.
  • SSO (SAML/OIDC): işletmeler için tercih edilir; kullanıcı yaşam döngüsü ve MFA müşteri IdP’sinde yönetilir.

Oturumlar için kısa ömürlü erişim tokenleri + sunucu tarafı session veya refresh token döndürme kullanın. Logout ve oturum iptalini (özellikle adminler için) öngörülebilir kılın.

Token stratejisi: JWT claim’leri vs introspeksiyon

İki yaygın desen:

  • JWT claim’leriyle: hızlı, çevrimdışı doğrulama; izinler token bitene kadar güncellenmeyebilir.
  • Token introspection / permission lookup: ürünler auth servisine (veya cache’e) çağrı yapar; daha güncel iptal sağlar ama gecikme ekler.

Pratik bir hybrid: JWT kimlik + tenant + roller içerir; ürünler detaylı izinler için bir endpoint’e çağrı yapar.

Servis‑servis ve insan olmayan kimlikler

Arka plan işlerinde kullanıcı tokenlerini yeniden kullanmayın. Servis hesapları için açık kapsamlar verin, client‑credential tokenleri oluşturun ve bunları insan eylemlerinden ayrı tutun ki denetim günlükleri karışmasın.

API’ler ve Çoklu Ürün Entegrasyon Deseni

Pilot İzin Uygulaması Oluştur
Chat odaklı React, Go ve Postgres iskeletiyle izin yönetimi uygulamasını daha hızlı prototipleyin.
Ücretsiz Dene

İzin uygulaması ancak her ürün aynı soruyu sorup tutarlı cevap alabildiğinde işe yarar. Amaç, her ürünün bir kez entegre edip portföy büyüdükçe yeniden kullanabileceği küçük ve stabil API setini tanımlamaktır.

“Stabil çekirdek” API’leri tanımlayın

Her ürünün ihtiyaç duyduğu temel operasyonlara odaklanın:

  • Erişimi kontrol et: “Kullanıcı X, kaynak Z üzerinde eylem Y yapabilir mi?” (hot path)
  • Yetki listesi: “Kullanıcı X’in ürün P’de hangi roller/izinleri var?”
  • Ver/verme: admin eylemleri ve otomatik provisyon akışları
  • Denetim ihracı: “Ne değişti, ne zaman, kim tarafından, neden?”

Bu endpoint’lere ürün‑özel mantık eklemekten kaçının. Standart bir sözlük kullanın: subject (kullanıcı/servis), action, resource, scope (tenant/org/project) ve context (ileride kullanılabilecek öznitelikler).

Her ürün için bir entegrasyon deseni seçin

Çoğu ekip kombinasyon kullanır:

  • Çalışma zamanı yetki kontrolleri (sync): Ürün her hassas istek için POST /authz/check çağrısı yapar veya yerel SDK kullanır.
  • Yerel uygulama (async replikasyon): Ürün, hızlı UI sınırlaması ve çevrimdışı kararlar için yetki okunabilir modeli tutar.

Pratik kural: merkezi kontrolü yüksek riskli eylemler için tek kaynak olarak tutun; replikasyon UX amaçlı (menüler, feature flag’ler, “erişiminiz var” rozetleri) için kullanılabilir, küçük staleness kabul edilebilir.

Olay‑tabanlı güncellemeler: ürünleri senkron tutun

İzinler değiştiğinde, her ürünün poll yapmasını beklemeyin.

role.granted, role.revoked, membership.changed, policy.updated gibi olaylar yayınlayın. Ürünler abone olup yerel cache/read model’lerini günceller.

Olayları şu şekilde tasarlayın:

  • Idempotent (iki kez işlenmeye güvenli)
  • Mümkünse subject+tenant bazında sıralı
  • Yerel durumu yeniden oluşturmak için yeterince açıklayıcı veya bir “current state” endpoint’i ile eşleştirilebilir

Hızlı kontroller için cache ve invalidasyon

Erişim kontrolleri hızlı olmalı; ancak zayıf invalidasyon güvenlik açıklarına yol açar.

Yaygın desen:

  • Allow/deny sonuçlarını kısa süreli (saniyeler) cacheleyin; anahtar subject/action/resource/scope ile.
  • Yetki snapshotlarını (roller, grup üyelikleri) daha uzun tutun ama olaylarda agresifçe invalidate edin.

JWT içindeki rollerle gidiyorsanız token ömrünü kısa tutun ve iptalin hızlı yayılması için sunucu tarafı iptal mekanizmaları (veya “token version” claim’i) kullanın.

Versiyonlama ve geriye dönük uyumluluk

İzinler ürünler yeni özellik ekledikçe evrilir. Buna hazırlıklı olun:

  • API kontratlarını versiyonlayın (/v1/authz/check) ve olay şemalarını versiyonlayın.
  • İzinleri mümkün olduğunca ekleyici olarak ele alın (anlamı değiştirmek yerine yeni eylemler ekleyin).
  • Deprecation yaparken zaman çizelgeleri ve telemetri kullanın: hangi ürünlerin eski endpointleri çağırdığını ölçün.

Uyumluluğa küçük bir yatırım, izin sisteminin yeni özelliklerin önünde bir darboğaz olmasını engeller.

Yönetici ve Self‑Servis UX’i İnşa Edin

Teknik olarak doğru bir izin sistemi, yöneticiler “Kimin neye, neden erişimi var?” sorusunu güvenle yanıtlayamazsa başarısız olur. UX, belirsizliği azaltmalı, yanlışlıkla aşırı yetki verilmesini önlemeli ve sık yapılan işleri hızlı hale getirmelidir.

Temel yönetici konsolu ekranları

Günlük operasyonların %80’ini kapsayan küçük bir sayfa setiyle başlayın:

  • Kullanıcı arama: isim, e‑posta, çalışan ID veya dış kimlik ile arama. Açık özet: ürünler, roller, gruplar ve “son değişiklik yapan”.
  • Rol atama: ürünler arası rol ekleme/kaldırma için tek, tutarlı akış. Süreli erişim destekliyorsanız etkin tarihler ekleyin.
  • Grup yönetimi: gruplar oluşturarak rolleri gruplara atayın; böylece yöneticiler kullanıcı‑kullanıcı izin yönetiminden kurtulur.

Her rolün yanında düz‑dil açıklama verin: “Bu rol ne yapar” ve somut örnekler (“$10k’ye kadar faturayı onaylayabilir”)—bu, “invoice:write” gibi belirsiz etiketlerden daha iyidir. Gerekirse daha derin dokümanlara bağlayın: /help/roles.

Toplu işlemler ama hata yapmayı zorlaştırın

Toplu araçlar zaman kazandırır ama hataları büyütür; bu yüzden güvenli tasarlayın:

  • Onboarding veya denetimler için CSV import/export, sıkı doğrulama ve indirilebilir şablon.
  • Toplu rol değişiklikleri: uygulamadan önce bir inceleme adımı gösterin (diff: “+ Billing Admin, − Viewer”).
  • Zamanlanmış erişim gözden geçirmeleri: yöneticiler için gözden geçirme sıraya alın, gözden geçirenleri bilgilendirin ve tamamlamayı izleyin.

“Dry run”, rate limitler ve bir import ters giderse geri alma talimatları gibi korumaları ekleyin.

Basit bir onay iş akışı

Birçok kuruluş hafif bir süreç ister:

İstek → Onay → Provisyon → Bildirim

İstekler iş bağlamını yakalamalı (“Q4 kapanışı için gerekli”) ve süre bilgisi içermeli. Onaylar rol‑ve‑ürün bazlı olmalı (doğru onaylayıcı doğru işi denetlemeli). Provisyoning denetim girdisi oluşturmalı ve hem isteyeni hem onaylayıcıyı bilgilendirmeli.

Erişilebilirlik ve açıklık

Tutarlı adlandırma kullanın, UI’da kısaltmalardan kaçının ve satır içi uyarılar ekleyin (“Bu, müşteri PII’sine erişim verir”). Klavye navigasyonu, yeterli kontrast ve temiz boş durumlar sağlayın (“Henüz rol atanmamış—erişim vermek için bir rol ekleyin”).

Denetim, Raporlama ve Uyumluluk Temelleri

RBAC ve Kapsamı Netleştirin
Planlama Modu ile roller, kapsamlar ve onay akışlarını yazılıma başlamadan önce tasarlayın.
Planla

Denetim, “erişim doğru görünüyor” ile “kanıt gösterebiliyoruz” arasındaki farktır. Uygulamanız izinleri yönetiyorsa, her değişiklik izlenebilir olmalı—özellikle rol atamaları, politika düzenlemeleri ve yönetici eylemleri.

Denetim kaydınızın yakalaması gerekenler

En azından kim neyi, ne zaman, nereden ve neden değiştirdiğini kaydedin:

  • Aktör: kullanıcı ID, yönetici ID, servis hesabı veya otomasyon (ve “on behalf of” varsa impersonator).
  • Eylem + nesne: örn. “rol şablonu X atandı”, “ürün Y erişimi kaldırıldı”, “politika Z düzenlendi”; önce/sonra değerleriyle.
  • Zaman damgası: UTC, milisaniye hassasiyetiyle.
  • Kaynak: IP, user agent, device/session ID ve kullanılan UI/API.
  • Neden: hassas işlemler için zorunlu “değişiklik nedeni” alanı.

Değiştirilemezlik, saklama ve SIEM ihracı

Denetim olaylarını append‑only olarak yönetin. Uygulama koduyla güncelleme veya silmeye izin vermeyin; düzeltme gerekiyorsa telafi edici bir olay yazın.

Saklama politikasını risk ve düzenlemeye göre belirleyin: çoğu ekip “hot” aranan logları 30–90 gün, arşivleri 1–7 yıl tutar. İhracı kolaylaştırın: zamanlı teslim (ör. günlük) ve SIEM’e akış seçenekleri sunun. En azından newline‑delimited JSON desteği ve tutarlı ID’ler sağlayın.

Riskli davranışı erken tespit edin

Basit dedektörler oluşturun ve şu durumları işaretleyin:

  • Yetki yükseltme (ani yüksek ayrıcalık atamaları, yeni global adminler, politika genişletme)
  • Alışılmadık yönetici etkinliği (mesai dışı anormallikler, kısa sürede çok sayıda değişiklik)
  • Şüpheli erişim desenleri (yeni IP/bölge, tekrarlı başarısız admin eylemleri)

Bunları “Yönetici etkinliği” görünümünde öne çıkarın ve istenirse uyarılar gönderin.

Paydaşların isteyeceği raporlar

Pratik ve dışa aktarılabilir raporlar sağlayın:

  • Ürün bazında erişim (kim neye sahip, rol şablonu ve tenant ile gruplanmış)
  • Pasif hesaplar (N gün boyunca giriş/yük kullanım yok ama hâlâ erişime sahip)
  • Yüksek ayrıcalıklı kullanıcılar (global adminler, politika editörleri, break‑glass hesapları) ile son kullanım zamanları

Onay iş akışları eklerseniz, denetim olaylarını istek ID’siyle ilişkilendirin ki uyumluluk incelemeleri hızlı olsun.

Güvenlik Kontrolleri ve Yaygın Hata Modları

Bir izin yönetimi uygulaması kendisi yüksek değerli bir hedeftir: tek bir kötü karar tüm ürünlerde geniş erişim verebilir. Yönetici yüzeyi ve yetkilendirme kontrollerini "tier‑0" sistemleri gibi ele alın.

Yetki yükselmesini önleyin

En az ayrıcalık ile başlayın ve yükselmeyi zorlaştırın:

  • Görev ayrımı: kimse tek başına hem erişim verebilme hem de hassas değişiklikleri onaylama yetkisine sahip olmasın (örn. “Role Editor” vs “Role Approver”).
  • Korunan roller: break‑glass/admin rollerini değiştirilemez şablonlar olarak işaretleyin (düzenlenemez, sadece atanabilir). Atama için ekstra doğrulama ve onay isteyin.
  • İki kişinin onayı: korunan rol atamaları, rol şablonu genişletmeleri veya politika değerlendirme kurallarındaki değişiklikler ikincil onay gerektirsin ve tam log üretsin.

Yaygın hata modu: bir “role editor” admin rolünü düzenleyip sonra kendine atayabilir.

Yönetici endpoint’lerini sertleştirin

Admin API’leri son‑kullanıcı API’leri kadar erişilebilir olmamalı:

  • Rol/izin değişiklik endpoint’lerine rate limit uygulayın.
  • Yönetici eylemleri için IP allowlist veya özel ağ erişimi düşünün.
  • Güvenli varsayılanlar: varsayılan reddetme, açıkça izin verme ve “geçici” olarak bırakılan wildcard izinlerden kaçınma.

Yaygın hata modu: üretime bir kolaylık endpoint’i (örn. “tümünü destek için ata”) guardrails olmadan gönderildi.

Sırlar ve oturumları koruyun

  • Gerçek bir secrets manager kullanın (çevre değişkenlerinde düz metin anahtar saklamayın).
  • Uçtan uca şifreleme: TLS her yerde; politika verisi, denetim günlükleri ve PII için dinlenmede şifreleme.
  • Çerezleri kilitleyin: HttpOnly, Secure, SameSite, kısa oturum süreleri ve CSRF koruması.

Yaygın hata modu: politika yazma yetkisi veren servis kimlik bilgilerinin sızması.

Yetkilendirmeyi ciddi şekilde test edin

Yetkilendirme hataları genellikle “reddetmeyi unutan” senaryolardır:

  • Negatif testler yazın (“kullanıcı X kesinlikle erişmemeli”)
  • Rol matrisi test seti (roller × eylemler × kaynaklar) tutun, böylece şablon değişiklikleri istenmeyen erişimi bozmaz.
  • Önceki olaylar ve uç durumlar (silinmiş kullanıcılar, eski tokenler, cross‑tenant erişim) için regresyon testleri ekleyin.

Yayılma Planı: Pilot, Göç ve Genişleme

Bir izin sistemi lansmanda "tamam" olmaz—güveni güvenli bir yayılma ile kazanırsınız. Amaç, erişim kararlarının doğru olduğunu kanıtlamak, destek ekiplerinin hızlı çözüm üretebilmesini sağlamak ve değişiklikleri geri almayı kolay kılmaktır.

1) Uçtan uca bir ürünle pilot yapın

Rolü ve aktif kullanıcıları net bir ürünle başlayın. Mevcut roller/grupları yeni sistemdeki kanonik rollere eşleyin, sonra ürünü bugün uyguladığı şekilde çevirecek bir adapter inşa edin (API scope’ları, feature flag’ler, DB flag’leri vb.).

Pilot sırasında tam döngüyü doğrulayın:

  • Yönetici rol ataması yapar
  • Ürün güncellemeyi alır (push veya pull)
  • Gerçek kullanıcılar giriş yapıp beklenen eylemleri gerçekleştirebilir
  • Denetim olayları kimin neyi ne zaman değiştirdiğini yakalar

Başarı metriklerini önceden tanımlayın: erişimle ilgili destek taleplerinde azalma, kritik aşırı ayrıcalık olaylarının olmaması ve iptal süresinin dakikalar içinde ölçülebilir olması.

2) Veriyi dikkatli göç ettirin (ve geri alınabilir olsun)

Legacy izinleri karmaşıktır. Mevcut grupları, ad‑hoc istisnaları ve ürün‑spesifik rolleri yeni modele çeviren bir adım planlayın. Her göç edilen atamayı açıklayabilmek için eşleme tablosu tutun.

Staging’de dry run yapın, sonra dalga dalga (organizasyon, bölge veya müşteri kademesi) göç edin. Zor müşteriler için göç yapın ama “shadow mode” açık kalarak eski ve yeni kararları karşılaştırın.

3) Feature flag’ler ve kademeli uygulama kullanın

Feature flag ile “yazma yolu”nu enforcement’dan ayırın. Tipik aşamalar:

  • Salt raporlama (read‑only UI)
  • Yazmalar etkin ama zorunlu değil (sadece sync)
  • Kısmi enforcement (belirli eylemler)
  • Tam enforcement

Bir sorun çıkarsa enforcement’ı kapatıp denetim görünürlüğünü koruyabilirsiniz.

4) Destek ve acil iptal runbook’ları hazırlayın

Sık olaylar için runbook’lar hazırlayın: kullanıcı ürünlere erişemiyor, kullanıcı fazla erişime sahip, yönetici hata yaptı, acil iptal. Kim nöbette, log’larda nerelere bakılmalı, etkin izinler nasıl doğrulanır ve hızla yayılan “break‑glass” iptali nasıl yapılır gibi adımlar olsun.

Pilot stabil olunca aynı playbook’u ürün‑ürün uygulayın. Her yeni entegrasyon entegrasyon işi gibi hissetmeli—izin modelinizin yeniden icadı değil.

Uygulama Notları: Teknoloji Yığını ve Operasyon

Kod Üzerinde Tam Sahiplik Tutun
Yetkilendirme mantığı için derin inceleme veya özel sertleştirme gerektiğinde kaynak kodunu dışa aktarın.
Kodu Dışa Aktar

Mükemmel bir izin yönetimi uygulaması için egzotik teknolojiye gerek yok. Doğruluk, öngörülebilirlik ve işletilebilirliğe öncelik verin—sonra optimize edin.

Sıradan, pratik bir yığın

Yaygın bir temel:

  • API servisi: Node.js (NestJS/Fastify) veya Go (Gin/chi)
  • Veritabanı: Postgres (güçlü tutarlılık ve policy sorguları için indeksleme)
  • Cache: Redis (rol genişletmeleri, tenant konfigürasyonları ve “kullanıcı X Y yapabilir mi” kararları için)
  • Kuyruk: Redis‑tabanlı (BullMQ) veya yönetilen kuyruk (SQS/Pub/Sub)

Yetki karar mantığını tek bir servis/kütüphanede tutun ki ürünler davranışta ayrışmasın.

Eğer pilotu hızlıca ayağa kaldırmak istiyorsanız, Koder.ai gibi platformlar chat‑odaklı iş akışıyla web uygulamasını hızla prototiplemenize yardımcı olabilir. Bu, React tabanlı admin UI, Go + PostgreSQL backend ve denetim/log/onsay workflow’larının iskeletini hızla oluşturabilir—yetkilendirme mantığını dikkatle gözden geçirmeniz gerekir.

Arka plan işleri (provisyon ve senkronizasyon)

İzin sistemleri hızla kuyruğa koyulması gereken işler üretir:

  • Harici IdP’lerden kullanıcı/grup import/senkronizasyon
  • Downstream ürünlere yetki provisyonu
  • Rol şablonu değişikliklerinden sonra türetilmiş atamaların yeniden hesaplanması
  • Düzenli tutarlılık kontrolleri (örn. “orphaned” atamalar)

İşleri idempotent ve retry‑edilebilir yapın; destek için tenant bazlı iş durumu saklayın.

Operasyon: gerçekten işe yarayan gözlemlenebilirlik

En azından şunları instrument edin:

  • Loglar: yapılandırılmış loglar, request ID, tenant ID, actor ID ve karar sonucu ile
  • Metrikler: yetki gecikmesi, hata oranı, cache hit oranı, DB sorgu süreleri
  • Tracing: “permission check” ve “admin change” akışları için uçtan uca trace

deny‑by‑error (örn. DB timeouts) spike’larına ve permission check için p95/p99 gecikmesine alarm kurun.

Yük testi ve kapasite kontrolleri

Yayılmadan önce permission‑check endpointi gerçekçi patternlerle load test edin:

  • Hot key’ler (aynı user/project sıkça kontrol edilir)
  • Karışık read/write (trafik sırasında admin güncellemeleri)
  • Farklı tenant boyutları

Throughput, p95 gecikme ve Redis hit oranını izleyin; cache soğukken performansın kademeli olarak düşmesini sağlayın.

İleri Özellikler: SSO, SCIM ve Çok‑Tenant Desteği

Çekirdek model çalışınca, birkaç “kurumsal” özellik sistemi ölçeklemek ve işletmeyi kolaylaştırmak için fark yaratır—bu ürünlerin uygulama şeklini değiştirmez.

SSO: SAML/OIDC ve IdP gruplarını rollere eşleme

SSO genellikle SAML 2.0 (eski kurumsal IdP’ler) veya OpenID Connect (OIDC) ile gelir. Karar: IdP’den neyi güvenilir şekilde kabul edeceksiniz?

Pratik bir desen: IdP’den kimlik ve yüksek‑seviyede grup üyeliğini kabul edin; sonra bu grupları tenant bazlı rol şablonlarına eşleyin (örn. IdP grubu Acme-App-Admins tenant acme için Workspace Admin rolüne eşlensin). Bu eşlemeyi tenant yöneticilerinin düzenleyebilmesini sağlayın; sert kodlamayın.

IdP gruplarını doğrudan izin olarak kullanmaktan kaçının. Gruplar organizasyonel nedenlerle değişir; uygulamanızın rolleri sabit kalmalı.

SCIM ile otomatik kullanıcı yaşam döngüsü

SCIM müşterilerin hesap yaşam döngüsünü otomatikleştirir: kullanıcı oluşturma, devre dışı bırakma ve grup senkronizasyonu. Bu manuel davetleri azaltır ve ayrılma durumlarında güvenlik açıklarını kapatır.

Uygulama ipuçları:

  • Deaktivasyon birinci sınıf bir olay olsun (oturumları/tokenleri hemen iptal edin ve ürün erişimini kaldırın).
  • Grup senkronizasyonunu idempotent ve denetlenebilir yapın: SCIM güncellemeleri deterministik olarak rol atamalarına dönüşsün.

Çok‑tenant desteği: izolasyon ve yönetici sınırları

Çok‑tenant erişim kontrolü her yerde tenant izolasyonu sağlamalı: tokenlerde kimlikler, veritabanı satır seviyesinde filtreler, cache anahtarları ve denetim logları.

Temiz yönetici sınırları tanımlayın: tenant yöneticileri yalnızca kendi tenant’ları içinde kullanıcı ve rol yönetebilir; platform yöneticileri ise varsayılan olarak ürün erişimi vermeden troubleshoot edebilsin.

Daha derin uygulama rehberleri ve paketleme seçenekleri için referansınız: /blog. Özelliklerin hangi plana ait olduğunu kararlaştırırken /pricing ile hizalayın.

SSS

What’s the best way to scope a permissions management app for day one?

Başlangıç için entegre edeceğiniz 1–3 ürünü listeleyerek ve her bir ürün için şunları belgeleyerek başlayın:

  • Mevcut yetkilendirme yapısı (roller/gruplar/varlığa özel izinler/flag’ler)
  • Kapsam (global mı yoksa workspace/project/account bazlı mı)
  • Kontrollerin bugün nerede yapıldığı (frontend, backend, her ikisi)

Modeler çok farklıysa, hemen tek bir modele zorlamak yerine bir çeviri katmanı planlayın.

Should authorization be centralized, federated, or hybrid across products?

Kararı, politika değerlendirmelerinin nerede yapılmasını istediğinize göre verin:

  • Centralized: Tek bir authz servisi tüm ürünler için karar verir (tutarlılık yüksek; runtime bağımlılığı daha fazla).
  • Federated: Her ürün kendi kararlarını alır; yönetici uygulama yalnızca atama/senkronizasyon yapar (özerklik yüksek; drift riski daha fazla).
  • Hybrid: Ortak bir kontrol düzlemi (katalog + yönetim) ile ürünlerin yerel olarak uyguladığı model (legacy ve büyüme için genellikle en güvenli başlangıç).

Birden çok ürün ve sık değişim bekliyorsanız, genellikle hibrit varsayılan olarak en güvenli yoldur.

What data model should I start with for cross-product permissions?

Başlangıç için pratik bir temel RBAC modeliyle başlayın ve şu varlıkları açıkça modelleyin:

  • Kullanıcılar (ve servis hesapları)
  • Gruplar
  • Ürünler
  • Kaynaklar (workspace/project/account)
  • İzinler (atomik eylemler, ör. billing.manage)
  • Roller (izin setleri)

Daha sonra şu şekilde saklayın: — böylece “kim nerede neye sahip” sorusunu rahatça yanıtlayabilirsiniz.

When should I add ABAC (attributes) instead of only RBAC?

RBAC'i insanın anladığı arayüz olarak tutun ve sadece RBAC'in ifade edemeyeceği kısıtlamalar için ABAC ekleyin.

ABAC şunlar için uygundur:

  • “Kullanıcı yalnızca kendi bölgesindeki ticket’ları görebilir”
  • “Sadece staging’e deploy edebilir”

Özellikleri sınırlı tutun (ör. region, environment, data classification) ve belgelerini iyi tutun; roller hâlâ erişim atamanın ana yolu olmalı.

How do role templates and bundles help manage permissions across multiple products?

Tek bir mega-rol yerine katmanlı yaklaşımlar kullanın:

  • Ürün rolleri: her ürünün net, ürün-spesifik sözcükçesi.
  • Rol şablonları: tenant/ortamlar arası tekrar kullanılabilir roller.
  • Paketler (bundles): bir işle ilgili birden fazla üründe atanacak rollerin bir arada paketlenmesi (ör. Support bundle).

Bu, yöneticilerin iş yükünü azaltır ama ürünler arasındaki önemli farkları gizlemez.

What token strategy works best for permissions checks (JWT vs introspection)?

İki ortak desen vardır:

  • JWT (claim'lerle): hızlı ve çevrimdışı doğrulama sağlar ama izinler token süresine kadar eski kalabilir.
  • Introspection / lookup: güncel bilgi verir ve iptal etmeyi kolaylaştırır ama gecikme ekler ve yüksek erişilebilirlik gerektirir.

Pratik bir hibrit: JWT kimlik + tenant + roller içerir; yüksek riskli veya ince taneli işlemler için ürünler yetki kontrol endpoint’ine (introspection) çağrı yapar. Token sürelerini kısa tutun ve acil iptaller için bir strateji belirleyin.

What are the minimum APIs a multi-product permissions system should expose?

Her ürünün uygulaması gereken küçük, kararlı bir çekirdek tutun:

  • POST /authz/check (hot path)
  • Kullanıcının yetkilerinin listelenmesi (ürün başına roller/izinler)
  • Grant/revoke (admin + otomasyon)
  • Audit export

Kelimeleri standartlaştırın: , , , (tenant/org/workspace) ve opsiyonel . Çekirdek endpoint’lerde ürün‑özel mantıklardan kaçının.

How should products stay in sync when roles or policies change?

Ürünlerin sürekli poll yapmasını önlemek için olay tabanlı senaryo kullanın. Yayınlanacak tipik olaylar:

  • role.granted / role.revoked
  • membership.changed
  • policy.updated

Olaylar , mümkünse ve ya (a) yerel durumu güncelleyecek kadar açıklayıcı ya da (b) uzlaşma için kullanılabilecek bir “fetch current state” endpoint’i ile birlikte olmalıdır.

What should the admin and self-service UX include to prevent over-permissioning?

Yanlış yetki vermeyi azaltacak ekranlar ve korumalar ekleyin:

  • Kullanıcı arama: net “etkili erişim” özeti ve “son değişikliği yapan” bilgisi
  • Ürünler arası tutarlı rol atama akışı, opsiyonel zaman sınırlı erişim desteği
  • Gruplar aracılığıyla kullanıcı bazlı atamalardan kaçınma
  • CSV ile toplu işlem: diff/onay adımı, “dry run” ve sıkı doğrulama

Roller için düz‑konuşma açıklamalar ve hassas erişimler (PII, faturalama) için uyarılar ekleyin.

What must an audit log include for a permissions management app?

Her hassas değişikliği append‑only olay olarak kaydedin; denetim kaydı “kim, neyi, ne zaman, nereden ve neden” sorularını yanıtlayabilmeli.

En azından şunları yakalayın:

  • Aktör (impersonation varsa dahil)
  • Eylem + nesne, önce/sonra değerleriyle
  • UTC zaman damgası (yüksek hassasiyet)
  • Kaynak (IP, user agent, session/device, UI/API)
  • Hassas işlemler için zorunlu “değişiklik nedeni” alanı

Arşivleme, SIEM'e aktarma (newline-delimited JSON) ve stabil ID'lerle de-dup destekleyin.

İçindekiler
Çözülmesi Gereken Problem ve Başarının Nasıl GörüneceğiGereksinimler ve Kapsam Kontrol ListesiBir Mimari Seçin: Merkezi, Federated veya Hibritİzin Modelini Tasarla (Önce RBAC, Sonra ABAC)Kimlik, Doğrulama ve Token StratejisiAPI’ler ve Çoklu Ürün Entegrasyon DeseniYönetici ve Self‑Servis UX’i İnşa EdinDenetim, Raporlama ve Uyumluluk TemelleriGüvenlik Kontrolleri ve Yaygın Hata ModlarıYayılma Planı: Pilot, Göç ve GenişlemeUygulama Notları: Teknoloji Yığını ve Operasyonİleri Özellikler: SSO, SCIM ve Çok‑Tenant DesteğiSSS
Paylaş
Koder.ai
Build your own app with Koder today!

The best way to understand the power of Koder is to see it for yourself.

Start FreeBook a Demo
rol atamalarını
(principal=user/group) + (role) + (scope=tenant/product/resource)
subject
action
resource
scope
context
idempotent
subject+tenant bazında sıralı