Sistemlere dön

6GEN / Sistem Kaydı / Altyapı

Policy

Ürün, principal, rol, permission ve scope kayıtlarını kullanarak erişim kararları üreten Go tabanlı authorization servisi.

Tür
Altyapı
Durum
Aktif
Yayınlandı

Problem

Bir uygulamanın erişim kararları yalnızca bir kullanıcı kaydısına bağlandığında, ürün bağlamı, permission tanımı, rol ataması ve kaynak kapsamı aynı karar içinde görünür kalmaz. Policy bu kayıtları ayrı bir serviste tutar ve çağıranın verdiği bağlam için izin sonucunu üretir.

Domain modeli

Product, permission kayıtlarını, rolleri, scope type kayıtlarını ve isteğe bağlı policy set kayıtlarını bir araya getirir. Bir Permission, ürün içindeki code, resource ve action alanlarıyla tanımlanır. Principal kayıtları user, service, api_key veya external türünde bir dış kimlik taşır.

Bir Role, RolePermission kayıtları üzerinden permission'lara bağlanır. PrincipalRoleAssignment, bir principal ile rolü eşler; atama için geçerlilik başlangıç ve bitiş zamanları tanımlanabilir. Atama isteğe bağlı olarak bir ScopeInstance'a bağlanabilir.

Scope ve client bağlamı

ScopeType, ürün içinde kod, ad ve isteğe bağlı şema verisiyle tanımlanır. ScopeInstance, bir scope type'a ve client mirror kaydına bağlı external_ref değeri taşır. Bir check isteğinde scope anahtarı verildiğinde değerlendirme, eşleşen scope instance atamasını veya scope instance'ı olmayan genel atamayı arar. Scope anahtarı yoksa yalnız genel atamalar değerlendirilir.

Principal, scope instance, principal-role assignment ve policy set kayıtları client mirror ile ilişkilidir. Check transaction'ı istek bağlamındaki ClientId ile ilgili mirror kaydını yükler; principal ve scope instance sorgularını bu bağlamla sınırlar, assignment sorgusunda da bu client'a ait ya da client'ı olmayan atamaları dikkate alır. Bu, kaynakta görülen sorgu davranışıdır; profil bunun ötesinde bir tenant izolasyonu garantisi iddia etmez.

Değerlendirme akışı

AşamaKaynaktaki davranış
BağlamTransaction, client mirror bağlamını ClientId üzerinden yükler.
KimlikPrincipal, türü ve external ID'si ile client bağlamında bulunur.
PermissionProduct code ve permission code ile ilgili permission kaydı çözülür.
AtamaGeçerlilik zamanı dolmamış, silinmemiş; ilgili principal, ürün ve permission ile eşleşen role assignment aranır.
Scopeİstek scope'u varsa eşleşen scope instance veya genel atama; yoksa yalnız genel atama değerlendirilir.
KararEşleşme bulunursa allow, bulunmazsa deny sonucu; eşleşmede rol, scope ve assignment bilgisi döner.

CheckBulk birden fazla check isteğini sırayla değerlendirir. CheckChain, verilen scope zincirindeki ilk izinli sonucu döndürür. Ayrı bir role check transaction'ı da gerekli rol kodlarıyla aynı principal, ürün ve scope bağlamında eşleşme arar.

Proje durumu

Repository'de servis giriş noktası, veri modeli, repository sorguları ve yönetim ile policy transaction kayıtları birlikte bulunuyor. Policy department'ında check, bulk check, chain check ve role check transaction'ları kayıtlı; yönetim department'ları domain kayıtlarının yönetim yüzeylerini içeriyor. Bu nedenle profil aktif statüsündedir. Bu değerlendirme, üretim kullanımı, güvenlik seviyesi veya belirli bir erişim kontrolü garantisi anlamına gelmez.