Kullanıcıların sistemimde neler yapabileceğini veya yapamayacağını kısıtlamak için rol temelleri erişim kontrol modelini izlemeye çalışıyorum.
Şimdiye kadar aşağıdaki varlıklar var:
kullanıcılar - Sistemi kullanacak kişiler. Burada kullanıcı adları ve şifreler var. roller - Kullanıcıların sahip olabileceği rollerin toplanması. Yönetici, yönetici vb. Kaynaklar - Kullanıcıların manipüle edebileceği şeyler. Sözleşmeler, kullanıcılar, sözleşme taslakları vb. İşlemler gibi - Kullanıcıların kaynaklarla yapabileceği şeyler. Oluşturma, okuma, güncelleme veya silme gibi.
Şimdi, şüphe burada böyle bir ilişki var şemada yükselir:
işlemleri (0 .. *) , izinler olarak adlandırdığım ve işlemi ve kaynağı depolayacak bir tablo oluşturan kaynaklar (0 .. *) üzerinde yürütülür .
İzinler tablosu şöyle görünecektir (bir satırı): ID: 1, işlem: create, kaynak: contract.
Ki bu demektir izin için yaratmak bir sözleşme .
Bu şekilde yaptım çünkü bazı kaynakların her türlü operasyona sahip olmayabileceğini hissediyorum. Örneğin, sözleşmeleri kaydetmek için kullanıcılar dosya yükleyebilir , ancak bu işlem bir sağlayıcıyı kaydetmek için kullanılamaz .
Dolayısıyla, yönetici bir role izin verecek olduğunda , sistemde kayıtlı her bir işlemle kaynak listesi olmayacaktır.
Bence her kaynağın kendi üzerinde gerçekleştirilebilecek kendi operasyon koleksiyonu vardır .
Bir şey anlaşılabilir değilse açıklığa kavuşturabilirim.
Bu rbac'ı uygulamak için doğru yol mu?
DÜZENLE
Demek istediğim, operasyon ve kaynak olan bir izinler tablosuna sahip olarak, kaynakları işlemler ile ilişkilendirmek istediğim için fazladan iki tablom var . Ben de az önce yaptığı olabilirdi kaynaklar var izinleri izinleri masa izinlerini saklanacak.
Ama sonra ne olurdu, bazı kaynaklar için mevcut olmayan bazı izinler, yönetici bunları atadığında ortaya çıkacaktı.
Bu yüzden bir veritabanı işlemi açısından bir sütun işlemi ve başka bir kaynak olan bu tablo izni doğru olup olmadığını bilmek istiyorum? Böyle kalırsa sorunla karşılaşır mıyım?