Veritabanında yer alan kayıtların belli kriterlere göre sınıflandırılması ve bu sınıflandırılmış verilerin sadece izin verilen roller tarafından erişilebilir hale getirilmesi için kullanılır.
Daha iyi anlaşılabilmesi için aşağıdaki örnek üzerinden konuyu biraz da açabiliriz.
Örneğimize başlamadan önce;
1- Veritabanında Oracle Label Security opsiyonunun yüklü olduğundan emin olunuz.
(select * from v$option where parameter like ‘%Oracle Label Security%’;)
Sonuç FALSE ise aşağıdaki ekranlardaki yönergeler yardımıyla kurulumu yapın.
Komut satırından dbca girerek ‘Database Configuration Assistant’ ‘ ı başlatın.
NOT: Bu noktada ayrı bir hesap yöneticisi ( Seperate Account Manager ) oluşturmanızı öneririm.
2- Buradan olsvpd.zip dosyasını indirin ve açın.
3- LBACSYS kullanıcısına SELECT ANY DICTIONARY yetkisini verin.
Tüm bu işlemlerden sonra Label Security üzerinde bir kural oluşturabiliriz.
Enterprise Manager’i açın ve LBACSYS ile login olun.
Server tabına gelin ve Security kısmından Oracle Label Security’yi seçin
Create butonuna tıklayın.
Name alanına PROTECT_PII ismini verin, Enabled işaretli kutucuktan onayı kaldırın.
Default Policy Enforcement Options kısmında Apply No Policy Enforcements (NO_CONTROL) seçin.
Levels kısmında aşağıdaki şekilde değerleri girin.
Long Name Short Name Numeric Tag
CONFIDETIAL C 1000
SENSITIVE S 2000
Compartements kısmında aşağıdaki değerleri girin ve sayfanın sağ üst köşesindeki OK butonuna tıklayın.
Kuralınızın başarıyla oluştuğuna dair bir mesaj alacaksınız.
Güvenlik İzinlerinin Ayarlanması :
SQL*Plus’a SYSTEM kullanıcısı ile bağlanın ve olsvpd_cr_hrapp.sql dosyasındaki işlemleri yapın.
Enterprise Manager’a geri dönün. Label Security Policies sayfasında oluşturdunuz.
PROTECT_PII kuralını seçin. Actions kısmından Authorization seçerek Go butonuna tıklayın.
Add Users butonuna tıklayın.
Non Database Users kısmında Add 5 Rows butonuna tıklayın.
Name alanına HR_MANAGER girin ve Next’e tıklayın.
Add Users : Levels, Compartments And Groups sayfasında Minimum Level için C,
Maksimum, Default ve Row Level için S değerlerini girin.
Compartments bölümünde Add butonuna basın ve Short Name PII Long Name PERS_INFO değerlerini girin ve Select butonuna tıklayın.
Default kutucuğunu işaretleyin ve Next’e tıklayın.
Privileges sayfasında bir değişiklik yapmadan Next e tıklatın.
Audit sayfasında bir değişiklik yapmadan Next‘e tıklayın.
Review sayfasında giriş ve düzenlemeleriniz aşağıdaki gibi olacaktır. Finish’e tıklayın.
Başarıyla tamamlandığına ilişkin bir mesaj alacaksınız.
Add Users butonuna tıklayarak Non Database Users altına HR_CLERK’i ekleyin.
Diğerinden tek farkı Levels bölümündeki tüm değerlerin C olması ve Compartments içerisinde bir giriş olmaması.
Girişi tamamladığınızda görünüm aşağıdaki şekilde olacaktır.
Tekrar Add Users butonuna tıklayalım ve bu sefer Database Users kısmından HR_APP kullanıcısını seçerek ekleyelim.
HR_APP kullanıcısını seçelim ve Select butonuna tıklayalım.
HR_APP’yi seçelim ve Next’e tıklayalım.
Add Users Privileges sayfasında Assume profile of another user through set_access_profile (PROFILE_ACCESS)” seçelim ve Next’ e tıklayalım.
Sonraki tüm sayfaları Next ile geçerek Finish butonuna tıklayalım.
Son durumda Authorization sayfanız aşağıdaki gibi olacaktır.
Virtual Private Database Kuralı Oluşturma :
Daha önceki kısımda kullanıcı izinlerine yönelik etiketlemeyi yapmıştık. Bu kısımda da kullanıcıların geçerli etiketlerinden sayısal etikenlerini, ‘S:PII’ etiketinden sayısal etiketleri alacağız ve Kullanıcı etiketleri ≥ ‘S:PII’ olanlar hassas kolonlardaki tüm kayıtları görürlerken diğerleri bu kolonları boş görecekler.
SQL*Plus’ a LBACSYS ile bağlanalım ve olsvpd_cr_protpii_fcn.sql scriptini çalıştıralım.
Enterprise Manager’e geri dönelim ve Server sayfasında Virtual Private Database Policies’i seçelim.
Create butonuna tıklayalım.
General kısmında Policy Name alanına vpd_protect_pii, Object Name alanına hr_app.hr_info değerlerini girelim ve Policy Type bölümünden CONTEXT_SENSITIVE seçelim.
Policy Function bölümünde Policy Function alanına F_PROTECT_PII girelim.
Enforcement kısmında SELECT seçeneğini işaretleyelim.
Security Relevant Columns kısmında Add butonuna tıklayalım.
SALARY kolonunu seçelim ve Select butonuna tıklayalım.
( Bu kolon bizim hassas veri olarak değerlendirdiğimiz bilgileri içeren kolonumuzdur.
Bölümün başında belirtilen gizleme/gösterme işlemini bu kolon üzerinde gerçekleştireceğiz.
Enable Column Masking Behavior kutucuğunu işaretleyelim ve OK butonuna tıklayalım.
Nesnenin başarıyla oluşturulduğu mesajını alacaksınız.
Bu noktada HR_INFO tablosu üzerinde farklı kullanıcılarla sorgular yaparak SALARY alanındaki değişiklikleri görebiliriz. Bunun için ;
SQL*Plus’a HR_APP/welcome1 ile bağlanarak olsvpd_query_manager.sql scriptini çalıştıralım.
Şimdi de olsvpd_query_clerk.sql scriptini çalıştıralım.
Görüleceği üzere HR_MANAGER SALARY sütunundaki verileri görebilirken, HR_CLERK bu alanı null olarak görmektedir.