DBMS_PRIVILEGE_CAPTURE Paketi

Her kullanıcıya işini görebilmesi adına ihtiyacı olduğu kadar yetki verilmesi prensibini “Least Privilige” olarak tanımlıyor Oracle. Bu prensibin uygulayabilmesi için öncelikle iyi bir yetki sınırlandırılması yapılması gerekiyor. Örneğin “SELECT ANY TABLE” priviligine sahip bir kullanıcıların olduğu bir veritabanında O7_DICTIONARY_ACCESSIBILITY parametresi FALSE olarak set edilerek data dictionary altındaki tabloları görmesi engellebebilir. Özel bir şema olan Public şemasından gerekli olamayan yetki ve roller kaldırılabilir ve bunun gibi birçok işlem uygulanabilir. Least Privilige prensibinin uygulanması için yani kullanılmayan veya aşırı kullanılan yetkilerin analizi için 12c ile getirilmiş yeni bir paket olan DBMS_PRIVILEGE_CAPTURE çok iyi bir çözüm sunuyor.

Bu paketin içindeki prosedülere bakacak olursak;
2.png
Bu paketin kullanımını adım adım anlatacak olursak şu şekilde özetleyebiliriz. İlk olarak “CREATE_CAPTURE” prosedürünü kullanarak bir policy yaratmamız gerekiyor. Policy yaratıldıktan sonra default olarak disabled durumunda geliyor. “ENABLE_CAPTURE” prosedürünü kullanarak enable durumuna getiriyoruz. Bu noktadan itibaren oluşturduğumuz policy içersinde belirttiğimiz parametre ve tiplere göre analiz işlemi başlıyor. Analiz sonuçlarını alabilmek için ise enable modunda olan paketimizi “DISABLE_CAPTURE” prosedürünü kullanarak disable moduna getiriyoruz. Ardından da paketimizin sonuçlarını “GENERATE_RESULT” prosedürünü kullanarak alabiliriz.
11.png
CREATE_CAPTURE
CREATE_CAPTURE prosedürü bize yetki analizi poliçelerini oluşturmamızı sağlar. Bu policy’leri oluştururken bilmemiz gereken 4 parametre var.

G_DATABASE= Veritabanında SYS kullanıcı hariç bütün kullanıcıların yetki kullanımını analiz eder.
G_ROLE= Bir rol içersinde tanımlanmış yetki kullanımı için belirtiriz.”ROLE_NAME_LIST” fonksiyonunu kullanarak rolleri belirtiriz.
G_CONTEXT=Belli bir koşula göre analiz yapmamızı sağlar.
G_ROLE_AND_CONTEXT= Bir rol içersindeki yetkilerin veya koşul ile belirttiğimiz değerlerin, TRUE olması koşuluna göre capture işlemi grçekleştirilmek istendiğinde kullandığımız tiptir.

3.png
ENABLE_CAPTURE
Policy’imizi yaratıktan sonra disable moddan enable hale getirmek için “ENABLE_CAPTURE” prosedürünü execute etmemiz gerekiyor.
4.png
Artık bu noktadan sonra HR kullanıcısının sahip olduğu yetkiler DBMS_PRIVILEGES_CAPTURE paketi ile oluşturduğumuz policy sayesinde analiz edilmeye başlanıyor. Bu süre içersinde HR kullanıcısı ile bağlanıp birkaç SQL sorgusu çalıştırıyorum.
yedek2.png
Eğer yetki kullanım sonuçlarını görmek istiyorsak ilk yapmamız gereken capture işlemini durdurmak. Bunun için öncelikle “DISABLE_CAPTURE” prosedürünü çalıştırıyoruz.
6.png
Son olarak da sonuçları görebilmek için son prosedürümüz olan “GENERATE_RESULT” ile enable-disable süresi süresince HR kullanıcısının yetki kullanım sonuçlarını alabiliriz.
7.png
Raporlama işleminin sonuçları görebilmek için iki tür view’i sorgulamamız gerekiyor. Bunlardan ilki kullanıcının belirlenen süre zarfından kullanmış olduğu system ve object yetkilerin olduğu tablolar “DBA_USED_sysprivs” ve “DBA_USED_objprivs”.
8.png
9.png
İkincisi ise kullanıcıya atanmış olup fakat kullanmadığı system ve object yetkilerin tutulduğu tablolar “DBA_UNUSED_sysprivs” ve “DBA_UNUSED_objprivs”.
12.png

Yorum bırakın