Role policy'yi sıkıştırır ama context kaybeder
RBAC çok sayıda user stable permission set paylaştığında etkilidir. Policy accessed object veya request environment'a bağlı olduğunda problem başlar. Finance role bir legal entity için refund yapabilir ama diğeri için yapamayabilir; belirli approval threshold altında yetkili olabilir ama üstünde olmayabilir.
Tenant isolation authorization'ın parçası olmalı
Multi-tenant system'de 'bu role refund yapabilir mi?' check'i eksiktir. Payment'ın actor'ün operate edebileceği tenant ve account'a ait olduğu da doğrulanmalıdır. Tenant context client-provided identifier'dan kör biçimde türetilmemeli, server-side enforce edilmelidir.
Attribute ve relationship precision ekler
NIST ABAC modelinde subject, object, operation ve environmental attribute policy'ye karşı evaluate edilir. Financial system bu modeli role ile birlikte kullanabilir: role baseline sağlar, entity, amount, channel, ownership veya risk state gibi attribute decision'ı refine eder.
Authorization decision açıklanabilir olmalı
Complex policy ancak ekip neden allow veya deny olduğunu anlayabiliyorsa değerlidir. Policy version ve relevant decision context audit evidence'a kaydedilmeli; sensitive internal rule client'a sızdırılmamalıdır.
Role assignment ile authorization evaluation'ı ayırın
Role finance operator, support agent veya administrator gibi broad capability atamak için kullanışlıdır. Authorization engine daha sonra specific request'i bu role'larla birlikte resource ve environment context kullanarak değerlendirmelidir. Böylece tenant, amount threshold, region ve ownership kombinasyonlarının her biri için yeni role yaratma ihtiyacı azalır.
Role explosion RBAC'in ifade etmek için tasarlanmadığı policy'yi taşımaya başladığının işaretidir. Yüzlerce near-duplicate role review etmesi zor ve yanlış assign edilmesi kolaydır. Role'ları anlaşılır tutun, gerektiğinde contextual policy ekleyin.
Tenant boundary'yi accidental bypass edilemez hale getirin
Tenant context yalnız request içinde gelen tenant ID'den değil authenticated server-side relationship'ten gelmelidir. Query scope, policy check ve service boundary cross-tenant access'i default olarak fail ettirmelidir. Doğru role check ile yanlış tenant scope yine authorization failure'dır.
Bu background job ve service account için de geçerlidir. Machine identity de human user kadar scoped authority gerektirir; service-to-service access explicit modellenmezse broad internal credential dikkatle tasarlanmış user permission'ı bypass edebilir.
Financial constraint için attribute kullanın
Financial action sıkça attribute'a bağlıdır: payment amount, legal entity, currency, country, risk state, ownership, account status veya second approval varlığı. ABAC-style policy bu fact'leri role ile birleştirerek aynı finance operator'ın routine work yapmasına, high-value veya cross-entity action'ın additional authority istemesine izin verir.
Security decision'da authoritative ve yeterince stable attribute kullanın. Client-supplied label veya stale cached value sessizce policy input olmamalıdır. Authorization kullanılan data kadar güvenilirdir.
Ownership önemliyse relationship modelleyin
Bazı policy'ler relationship ile daha kolay ifade edilir: user organization'a bağlı, organization merchant account'a sahip, merchant account payment'a sahip. Relationship-based check role ve attribute'u tamamlayarak actor'ın resource'a allowed path üzerinden bağlı olup olmadığını cevaplar.
Pratik design model'leri birleştirebilir. RBAC anlaşılır job-level permission sağlar; relationship ownership enforce eder; attribute financial context enforce eder. Amaç tek authorization modelinde ideolojik saflık değil, business'a uyan ve review edilebilir policy'dir.
Yalnız action'ı değil decision'ı audit edin
Sensitive action allow veya deny edildiğinde authorization decision'ı sonra açıklamak için yeterli context koruyun: actor, resource, tenant, ilgili policy version ve key attribute. Policy zamanla değiştiğinde bu özellikle değerlidir; investigator bugünkü rule'u dünün event'ine uygulamak yerine o sırada aktif rule'u bilmelidir.
User-facing denial message policy detail sızdırmamak için sınırlı tutulabilir. Internal audit evidence caller'a dönen response'dan daha zengin olabilir.
Stable coarse permission set için RBAC kullan.
Tenant ve resource relationship'i server-side enforce et.
Financial policy gerektiğinde contextual attribute ekle.
Authorization decision'ı auditable ve explainable tut.
