Önceki yazılarda Dynamics AX 2012’ nin yetkilendirme mimarisinde yer alan kavramlar detaylı olarak anlatılmıştı. Bu yazımızda ise yetkilendirme sürecinde izlenmesi gereken best practiceler hakkında bilgi vermeye çalışacağım.

Rol tabanlı güvenlik mimarisinin en güçlü yönlerinden birisi de ayrıcalık ve görev gibi yetkilendirme nesnelerinin farklı görev ve rollerde tekrar tekrar kullanılabilmesidir. AX’ ın standartlarına göre hareket edip ayrıcalık ve görev tanımları doğru kapsamda yapılırsa ciddi anlamda iş gücü ve zaman tasarrufu sağlanacaktır. Aksi taktirde tek rol, tek görev ve tek ayrıcalık tanımlanarak kolaya kaçılırsa her yeni rol ihtiyacında tekrar bütün nesnelere yetki verilecek olan ayrıcalık ve görev tanımlaması yapılmak zorunda kalınacaktır. Aynı zamanda fonksiyon ve ekran bazlı farklı ayrıcalıkların tanımlanması ve bunların mantıksal olarak gruplanarak anlamlı görevlerin oluşturulması yetki atama işlerinin kolayca sistem yönetimi ekiplerine aktarılmasını sağlayacaktır. Bununla birlikte denetim faaliyetlerinde de şeffaflık ve hesap verilebilirlik yönünden tatmin edici sonuçlar ortaya çıkaracaktır.

AX’ ta yetkilendirme sürecinde best practiceleri anlama noktasında standartta gelen rol, görev ve ayrıcalıkları incelemek işleri ciddi anlamda kolaylaştırmaktadır. Standart bir rol ve altındaki görev ve ayrıcalıklar incelenirse AX’ ın nasıl bir yapıda yetkilendirme ile verimli olacağı kolayca anlaşılabilir. Bu yüzden zorlanılan noktalarda standartı incelemek her zaman çözüm hakkında fikir verecektir.

Örneğin standartta yer alan “Maliyet muhasebeci” rolü altında yer alan görevler incelenirse görevlerin nasıl tanımlanması ve ayrıştırması gerektiği anlaşılabilir.

Maliyet_muhasebeci

Yine bu rolün altında yer alan “Maliyet muhasebesi hesaplama durumunu sorgula” görevinin altında yer alan ayrıcalıklar incelenirse ayrıcalık tanımlarının nasıl yapılacağı ve hangi detayda ayrıştırılacağı görülebilir.

görev

Yetkilendirme sürecinde best practiceler açısından dikkat edilmesi gereken en önemli husus standartta yer alan rol, görev ve ayrıcalıkların mümkün olan her yerde kullanılmasıdır. Mümkün olduğu halde standart nesneleri kullanmayıp yeni nesneler oluşturmak gereksiz efor ve nesne kirliliğine yol açacaktır.

İş birimleri tarafından yetkilendirme ile ilgili bir ihtiyaç iletildiğinde ya da bir ekran ya da fonksiyona yetki talebi iletildiğinde izlenmesi gereken adımlar şu şekilde olmalıdır:

1. Bir Nesneye Yetkili Olan Rolleri Bulma

Yetkilendirme nesnelerini oluşturmaya başlamadan önce mevcutta ilgili nesneye yetkili olan bir rol var mı mutlaka kontrol edilmelidir. Mevcutta ihtiyacı karşılayan bir rol var ve rolün o kullanıcıya atanmasında bir sakınca yoksa mevcut rol kullanılmalıdır.

Herhangi bir nesneye yetkili olan rolleri, görev ve ayrıcalık detayında görüntülemek için AOT üzerinde ilgili nesne üzerine sağ tıklanarak Add-Ins > Güvenlik Araçları > İlgili güvenlik rollerini görüntüleme tıklanır.

rolbulma

Açılan formda sorgulanan menu itema hangi yetki nesnelerinin erişebildiği rol, alt rol, görev, ayrıcalık ve erişim tipi detayında listelenir.

sorgulama

Bu sorgulama formu sayesinde kullanıcılardan gelen yetki taleplerinde ilgili nesneye yetkili olan roller görüntülenerek uygun olan bir rol seçip ataması yapılabilir. Aynı şekilde herhangi bir form ya da fonksiyon özellikle bazı kullanıcılar haricinde kısıtlanmak istendiğinde yine bu sorgulama formundan faydalanılarak hangi rollerin erişim yetkisine sahip olduğu görüntülenir ve olmaması gereken bir erişim yetkisi tespit edilirse ilgili güvenlik nesnesi güncellenerek istenen kısıtlama yapılabilir.

2. Mevcut Rol İlgili Kullanıcıya Atanabilir mi Kontrolü

Yetki istenen nesneye erişebilen güvenlik rollerini görüntüledikten sonra ilk olarak mevcutta olan bir rol seçilmeli ve bu rol Security development tool üzerinden test workspaceinde açılarak ya da test ortamında rol kendi kullanıcınıza atanarak açılmalıdır. Rolün erişebildiği menuler, formlar, fonksiyonlar kontrol edilerek yetki talep eden kullanıcıya atanmasında bir sakınca var mı değerlendirilmelidir. Eğer rol kullanıcıya atamak için uygunsa atanmalı ve yeni nesne geliştirilmemelidir. Eğer rolün kullanıcıya atanmasında sakınca var ise bir sonraki kontrol adımına geçilmelidir.

3. Mevcut Görev Mevcut Bir Role Ya da Yeni Bir Role Atanabilir mi Kontrolü

Yetki talep edilen nesneye mevcutta erişebilen bir rol tespit edildi ancak bu rolün kullanıcıya verilmesi uygun görülmediyse rolün altındaki görevler incelenmelidir. Seçilen bir görev kullanıcının hali hazırda sahip olduğu bir role eklenebilir mi kontrol edilmelidir. Görevin içerisinde kullanıcının erişmemesi gereken bir ayrıcalık, form, tablo var mı detaylı olarak analiz edilmelidir. Eğer bir olumsuzluk tespit edilmediyse ve halihazırda sahip olduğu bir role eklenmesi de uygunsa herhangi yeni bir nesne geliştirilmemeli mevcut görev istenen role eklenmelidir.

Tespit edilen görevin mevcut role atanmasında sakınca görülürse yeni bir rol tanımlanmalı ve mevcut görev yeni role atanmalıdır.

Eğer ilgili nesneye erişebilen görevilerin kullanılmasında sakınca var ise bir sonraki kontrol adımında geçilmelidir.

4. Mevcut Ayrıcalık Mevcut Bir Göreve Ya da Yeni Bir Göreve Atanabilir mi Kontrolü

Yetki talep edilen nesneye mevcutta erişebilen bir görev tespit edildi ancak bu görevin mevcut ya da yeni bir role eklenmesi uygun görülmediyse görevin altındaki ayrıcalıklar incelenmelidir. Seçilen bir ayrıcalık kullanıcının hali hazırda sahip olduğu rollerin altındaki görevlerden birine eklenebilir mi kontrol edilmelidir. Ayrıcalıkların içerisinde kullanıcının erişmemesi gereken bir form, tablo var mı detaylı olarak analiz edilmelidir. Eğer bir olumsuzluk tespit edilmediyse ve halihazırda sahip olduğu bir rolün altında yer alan göreve eklenmesi de uygunsa herhangi yeni bir nesne geliştirilmemeli mevcut ayrıcalık mevcut bir göreve ya da yeni bir göreve eklenmelidir.

Tespit edilen ayrıcalığın mevcut göreve atanmasında sakınca görülürse yeni bir görev tanımlanmalı ve mevcut ayrıcalık yeni göreve atanmalıdır.

Eğer ilgili nesneye erişebilen ayrıcalıkların kullanılmasında sakınca var ise yeni bir ayrıcalık geliştirilmeldir. Ancak bu noktada yeni bir ayrıcalık oluşturulmadan önce önceki adımlar iyice kontrol edilmelidir. Çünkü AX’ ta yer alan neredeyse her form ve fonksiyon için en az bir ayrıcalık standart pakette sunulmuştur. Birçok formda ise hem görme hem de silme için ayrı ayrı ayrıcalık tanımlanmıştır. Standart nesneler için bu kadar ayrıcalık tanımlanmışken ihtiyaç duyulan nesneye uygun bir ayrıcalık bulunamadıysa tekrar kontrol edilmelidir.

5. Yeni Yetki Nesneleri Oluşturmak

Yetki talep edilen nesneye mevcutta erişebilen rol, görev ya da ayrıcalık bulunamadıysa yeni bir ayrıcalık oluşturulmalıdır. Bu noktada standart ayrıcalıklar referans alınarak best practicelere uygun hareket edilmelidir. Ayrıcalık oluştururken kişi bazlı düşünüp o kişinin ihtiyaç duyduğu tüm nesneleri tek bir ayrıcalığa vermek doğru değildir. Ayrıcalık oluştururken ekran, form ya da fonksiyon bazlı düşünülmelidir. Mümkün mertebe her form, ekran, rapor, fonksiyon için en az bir ayrıcalık oluşturulmalıdır. Görüntüleme ve tam kontrolün ayrılabileceği yerlerde iki ayrı ayrıcalık oluşturulmalıdır. Bu sayede custom nesnelere yetki verilmek istendiğinde her seferinde yeniden geliştirme yapılmasına gerek kalmayacaktır. Custom nesne için yapılan ayrıcalık ve görevler tekrar tekrar kullanılabilecektir. Ayrıcalık, görev ve rol oluşturulurken de her birinin ayrı ayrı anlamlı ve kullanılabilir olmasına dikkat edilmelidir.