Oracle Label Security

Posted by | Aralık 03, 2013 | Database, Security | No Comments

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.

 

image003

image004

image005

image006

NOT: Bu noktada ayrı bir hesap yöneticisi ( Seperate Account Manager ) oluşturmanızı öneririm.

image007

image008

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.

image009

Server tabına gelin ve Security kısmından Oracle Label Security’yi seçin

image010

Create butonuna tıklayın.

image011

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.

image012

Levels kısmında aşağıdaki şekilde değerleri girin.

Long Name                 Short Name            Numeric Tag
CONFIDETIAL             C                                  1000
SENSITIVE                   S                                   2000

image013

Compartements kısmında aşağıdaki değerleri girin ve sayfanın sağ üst köşesindeki OK butonuna tıklayın.

image014

Kuralınızın başarıyla oluştuğuna dair bir mesaj alacaksınız.

image015

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.

image016

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.

image017

Add Users butonuna tıklayın.

image018

Non Database Users kısmında Add 5 Rows butonuna tıklayın.

image019

Name alanına HR_MANAGER girin ve Next’e tıklayın.

image020

Add Users : Levels, Compartments And Groups sayfasında Minimum Level için C,
Maksimum, Default ve Row Level için S değerlerini girin.

image021

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.

image022

image023

Default kutucuğunu işaretleyin ve Next’e tıklayın.

image024

Privileges sayfasında bir değişiklik yapmadan Next e tıklatın.

image025

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.

image026

Başarıyla tamamlandığına ilişkin bir mesaj alacaksınız.

image027

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ı.

image028

Girişi tamamladığınızda görünüm aşağıdaki şekilde olacaktır.

image029

Tekrar Add Users butonuna tıklayalım ve bu sefer Database Users kısmından  HR_APP kullanıcısını seçerek ekleyelim.

image030

image031

HR_APP kullanıcısını seçelim ve Select butonuna tıklayalım.

image032

HR_APP’yi seçelim ve Next’e tıklayalım.

image033

Add Users Privileges sayfasında Assume profile of another user through set_access_profile (PROFILE_ACCESS)” seçelim ve Next’ e tıklayalım.

image034

Sonraki tüm sayfaları Next ile geçerek Finish butonuna tıklayalım.

image035

Son durumda Authorization sayfanız aşağıdaki gibi olacaktır.

image036

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.

image037

Enterprise Manager’e geri dönelim ve Server sayfasında Virtual Private Database Policies’i seçelim.

image038

Create butonuna tıklayalım.

image039

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.

image040

Policy Function bölümünde Policy Function alanına F_PROTECT_PII girelim.

image041

Enforcement kısmında SELECT seçeneğini işaretleyelim.

image042

Security Relevant Columns kısmında Add butonuna tıklayalım.

image043

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.

image044

Enable Column Masking Behavior kutucuğunu işaretleyelim ve OK butonuna tıklayalım.

image045

Nesnenin başarıyla oluşturulduğu mesajını alacaksınız.

image046

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.

image047

Şimdi de olsvpd_query_clerk.sql scriptini çalıştıralım.

image048

Görüleceği üzere HR_MANAGER SALARY sütunundaki verileri görebilirken, HR_CLERK bu alanı null olarak görmektedir.

 

Leave a comment

Your email address will not be published. Required fields are marked.