Oracle Database Vault ile verileri güvenlik altına almak

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

Bu yazımızda Oracle Database 11gR2’nin Database Vault özelliğini kullanarak bir tabloyu nasıl güvenlik aldığımızı göreceğiz.

Not: Bu çalışmamızda makinenizde Oracle Database 11gR2’nin ve Database Vault opsiyonunun yüklü ve aktif olduğunu kabul ediyorum.

Browser’a aşağıdaki adrese girin.

https://host_name:port/dva

image002

Username alanına uygun rollere sahip kullanıcı ile giriş yapın.
Host,port,sid/service bilgilerini veritabanınızda belirlediğiniz şekilde girin.

Database Vault politikalarını yaratmak veya yönetmek için: DV_OWNER veya DV_ADMIN
Database Vault raporları için: DV_OWNERDV_ADMIN, veya DV_SECANALYST
Kullanıcı/rol yaratmak veya yönetmek için: DV_ACCTMGR

“Oracle Database Vault Rolleri” ile ilgili daha fazla bilgi için…

SYSTEM Kullanıcısını Data Dictionary Realm’ e eklemek :

Bu çalışmada SYSTEM kullanıcısı TEST isimli yeni kullanıcıya ANY Yetkisi verecektir.
Bunu yapabilmek için SYSTEM kullanıcısını Oracle Data Dictionary Realm’e dahil etmeliyiz.

Administration sayfasındaki Realms’ e tıklayın.

image003

Oracle Data Dictionary seçin ve Edit butonuna tıklayın.

image004

Sayfanın altlarındaki Realm Authorizations bölümünde , Create butonuna tıklayın.

 

image005

Grantee : SYSTEM [USER] seçin.
Authorization Type: Owner seçin.
Authorization Rule Set : <Non Selected> olarak bırakın ve OK butonuna tıklayın.

 

 

image006

İşlem tamamlandığında aşağıdaki gibi görünecektir.

image007

OK tuşuna tıklayarak Realms sayfasına dönün.

Administration sayfasına dönmek için Database Instance instance_adı linkine tıklayın.

SYSTEM kullanıcısı ile HR Şemasına erişmek :

SYSTEM kullanıcısı ile SQL*Plus üzerinden HR Şemasına erişelim.

sqlplus system
Enter password: password

SELECT FIRST_NAME,LAST_NAME,SALARY
FROM HR.EMPLOYEES WHERE ROWNUM<10;

Sonuç aşağıdaki gibi olacaktır.

FIRST_NAME           LAST_NAME                     SALARY
-------------------- ------------------------- ----------
Donald               OConnell                        2600
Douglas              Grant                           2600
Jennifer             Whalen                          4400
Michael              Hartstein                      13000
Pat                  Fay                             6000
Susan                Mavris                          6500
Hermann              Baer                           10000
Shelley              Higgins                        12000
William              Gietz                           8300

9 rows selected.

Eğer HR şemanız locked veya expired modda ise SQL*Plus yardımıyla ve Database Vault Account Manager ile kullanıcıyı aktive edin.

sqlplus dvacctmgr
Enter password: password

ALTER USER HR ACCOUNT UNLOCK IDENTIFIED BY WELCOME1;

SYSTEM kullanıcısının HR şemasındaki EMPLOYEES tablosuna eribildiğini ve SALARY sütununu sorgulayabildiğini görüyoruz. Bunun nedeni SYSTEM kullanıcına otomatik olarak verilen DBA rolü ile gelen SELECT ANY TABLE yetkisi.

Bir Realm Yaratalım : 

Realms sayfasında Create butonuna tıklayalım.

 

image008

Aşağıdaki bilgileri ilgili alanlara girin ya da seçin ve OK butonuna tıklayın.

Name : HR Realm
Status : Enabled
Audit Options : Audit on Failure

 

image009

HR şemasındaki EMPLOYEES tablosunu güvenlik altına almak : 

Realms sayfasında listeden HR Realm’ı seçelim ve Edit butonuna tıklayalım.

 

image010

Realm Secured Objects bölümüne gelelim ve Create butonuna tıklayalım.

image011

Aşağıdaki bilgileri ilgili alanlara girelim ve OK tuşuna tıklayalım.

Object Owner: HR
Object Type: TABLE
Object Name: EMPLOYEES

image012

İşlem tamamlandığında sayfanız aşağıdaki gibi olacaktır.

image013

Realm için bir otorizasyon oluşturalım : 

Bu aşamada öncelikle test kullanısını yaratalım.

CONNECT dvacctmgr
Enter password: password

CREATE USER TEST IDENTIFIED BY WELCOME1;

Daha sonra dvacctmgr kullanıcısı ile bağlanarak gereken yetkileri verelim.

sqlplus dvacctmgr
Enter password: passwordGRANT CREATE SESSION, SELECT ANY TABLE TO SEBASTIAN;

Bu aşamada TEST kullanıcısı dahil kimse HR.EMPLOYEES tablosuna erişemez, çünkü realm tarafından korunmaktadır.

Şimdi TEST kullanıcısına bu tabloya erişebilmesi için gerekli izni verelim.

  1. Database Vault Administrator, Realms sayfasında, HR Realm’ı seçelim ve Edit butonuna tıklayalım.

image014

Sayfanın en altındaki Realm Authorizations kısmına gelelim ve Create butonuna tıklayalım.

image015

Aşağıdaki bilgileri girelim ve OK butonuna tıklayalım.

Grantee : TEST [USER]
Authorization Type : Participant
Authorization Rule Set : <Not Assigned>

image016

Bu noktada artık TEST kullanıcısı HR.EMPLOYEES tablosunu sorgulayabilmekte, diğer kullanıcılar tabloya erişememektedir.

Bunu test etmek için;

Önce SYSTEM kullanıcısı ile bağlanalım ve sorgumuzu çalıştıralım.

sqlplus system
Enter password: password
SELECT FIRST_NAME,LAST_NAME,SALARY 
  FROM HR.EMPLOYEES WHERE ROWNUM<10;

sonuç aşağıdaki şekilde olacaktır.

Error at line 1:
ORA-01031: insufficient privileges

Bu kez de TEST kullanıcısı ile bağlanıp sorgumuzu çalıştıralım.

sqlplus TEST
Enter password: password
SELECT FIRST_NAME,LAST_NAME,SALARY 
   FROM HR.EMPLOYEES WHERE ROWNUM<10;

sonuç aşağıdaki şekilde olacaktır.

FIRST_NAME           LAST_NAME                     SALARY
-------------------- ------------------------- ----------
Donald               OConnell                        2600
Douglas              Grant                           2600
Jennifer             Whalen                          4400
Michael              Hartstein                      13000
Pat                  Fay                             6000
Susan                Mavris                          6500
Hermann              Baer                           10000
Shelley              Higgins                        12000
William              Gietz                           8300
9 rows selected.

Leave a comment

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