İçindekiler
BookStack, sınıf notlarından atölye belgelerine kadar pek çok içeriği düzenli biçimde paylaşmayı sağlar. Ancak öğrenci, eğitmen, mentor ve misafirlerin aynı sistemde bulunduğu senaryolarda yalnızca hesap açmak yeterli değildir. Kimin hangi kitabı görebileceği, sayfaları kimin değiştirebileceği ve içerikleri kimin silebileceği önceden tasarlanmalıdır.
``
Yetkilendirmenin temel mantığı
BookStack erişim modeli iki katmanlı düşünülebilir: rol tabanlı genel izinler ve içeriğe özel izinler. Genel rol, kullanıcının sistem çapında neler yapabileceğini belirler. İçerik izinleri ise belirli bir raf, kitap, bölüm veya sayfa üzerinde bu davranışı daraltır ya da genişletir.
Bir kullanıcının kaynak üzerindeki etkin iznini basitleştirilmiş biçimde şöyle ifade edebiliriz:
\[P_{etkin}(u, r)=P_{rol}(u) \cap P_{icerik}(u,r)\]Burada $u$ kullanıcıyı, $r$ erişilmek istenen kaynağı temsil eder. Gerçek değerlendirme; atanmış roller, içerik seviyesindeki geçersiz kılmalar ve üst kaynaklardan devralınan kurallarla birlikte yapılır. Güvenli yaklaşım, varsayılan olarak en az yetkiyi vermektir.
| Katman | Örnek | Kullanım amacı |
|---|---|---|
| Sistem rolü | Öğrenci | Genel görüntüleme ve sınırlı düzenleme |
| Raf | Yazılım Sınıfı | İlgili kitapları mantıksal olarak gruplama |
| Kitap | Python 101 | Belirli bir grubun erişimini yönetme |
| Bölüm | Eğitmen Notları | Kitap içindeki hassas alanı ayırma |
| Sayfa | Cevap Anahtarı | En ayrıntılı erişim kontrolünü uygulama |
Rol tasarımını sade tutun
Her öğrenci için ayrı rol oluşturmak kısa sürede yönetim kabusuna dönüşür. Bunun yerine görev temelli roller tanımlayın:
- Yönetici: Sistem ayarlarını, kullanıcıları ve rolleri yönetir.
- İçerik yöneticisi: Kitap oluşturur, taşır ve düzenler; sistem ayarlarına erişmez.
- Eğitmen: Kendi eğitim alanındaki içerikleri hazırlar ve yayımlar.
- Öğrenci: İzin verilen kitapları görüntüler, gerekiyorsa belirli sayfaları düzenler.
- Misafir: Yalnızca herkese açık materyalleri okur.
Örneğin “Öğrenci” rolüne sistem genelinde kitap silme yetkisi vermek yerine yalnızca görüntüleme izni verilebilir. Grup çalışması kitabında içerik izinleri açılarak bu role oluşturma ve düzenleme hakkı tanınabilir. Böylece istisna, tüm platforma yayılmaz.
Kitap ve sayfa bazlı mimari
Bir kurs için ayrı raf, her ders için ayrı kitap kullanmak anlaşılır bir sınır oluşturur. “Web Geliştirme” rafında ders kitabı, proje belgeleri ve eğitmen rehberi bulunabilir. Öğrenciler ilk iki kitabı görebilirken eğitmen rehberi yalnızca eğitmen rolüne açılır.
Sayfa bazlı izinler güçlüdür fakat çok sayıda istisna üretir. Yüzlerce sayfayı tek tek yönetmek yerine ortak kuralları kitap seviyesinde uygulayın; cevap anahtarı veya değerlendirme formu gibi gerçekten hassas sayfalarda özel izin kullanın.
| Yaklaşım | Avantaj | Risk |
|---|---|---|
| Kitap bazlı izin | Kolay denetlenir | Bazı özel sayfalar için yetersiz kalabilir |
| Sayfa bazlı izin | Hassas kontrol sağlar | İzin karmaşası ve unutulmuş istisnalar üretir |
| Kişiye özel izin | Geçici ihtiyaçları çözer | Kullanıcı sayısı arttıkça ölçeklenmez |
| Rol bazlı izin | Tutarlı ve ölçeklenebilir | Kötü tasarlanmış roller fazla yetki verebilir |
Yapılandırma ve operasyon
Kimlik doğrulamasını LDAP veya OIDC ile merkezileştirmek, kullanıcı yaşam döngüsünü kolaylaştırır. Aşağıdaki Docker Compose kesiti OIDC bağlantısının çevresel değişkenlerle tanımlanmasını gösterir:
environment:
- AUTH_METHOD=oidc
- OIDC_NAME=Kampus Girisi
- OIDC_ISSUER=https://kimlik.example.edu
- OIDC_CLIENT_ID=bookstack
- OIDC_CLIENT_SECRET=${OIDC_SECRET}
- OIDC_ISSUER_DISCOVER=true
Bu yapı tek oturum açmayı sağlar; fakat BookStack içindeki içerik izinlerinin yerini almaz. Kimlik sağlayıcı “kimsin?” sorusunu, BookStack rolleri ise “ne yapabilirsin?” sorusunu cevaplar.
Son olarak dönem başlarında ve sonlarında izin denetimi yapın. Ayrılan katılımcıları pasifleştirin, geçici rolleri kaldırın ve bir test öğrencisi hesabıyla erişimleri doğrulayın. Yönetici hesabıyla yapılan kontrol yanıltıcı olabilir; çünkü yönetici, sıradan kullanıcının karşılaşacağı kısıtları görmez. İyi mimari, en fazla rolü değil, en az istisnayla anlaşılabilir güvenliği hedefler.
Yorumlar