Site icon IT Tutorial

Oracle Data Redaction -2

Merhaba Arkadaşlar,

Bu yazımda Oracle ın Advanced Security Optionlarından olan Data Redactionla alakalı yazıyor olacağım. Daha önce bu konuyla alakalı bu yazıyı yazmıştım. Bu yazıyı okumadan önce önceki yazıyı okumanızı tavsiye ederim.

Oracle Data Redaction özellikle yetkisiz kullanıcıların veriyi yanlış görmesi yönüyle çok güçlü bir özelliktir. Şirketlerde son yıllarda güvenlik zaafiyetlerinden ötürü çok sorun çıkmakta bazen bu konunun sonu mahkemede bitmektedir.

Bu yüzdendir ki hepimiz yaşamışızdır Çağrı merkezleri aradığında Anne kızlık soyadınızın sadece 1 ve 3.karakteri yada 4 ve 5.karakteri nedir diye sorarlar. Çoğu kimse bunu saçma bulur ve tamamını söyler yada bir kısım insan aslında Çağrı merkezi yetkilisinin bunu gördüğünü ve bilerek birkaç karakteri sorduğunu düşünür. Yada beni niye o an düşünmeye itiyosun soyadın 1.ve 3.karakteri yada 2.ve 4.karakteri hangisidir diye uğraştırıyorsun diye düşünür. Ancak gerçek öyle değildir, çünkü çağrı merkezindeki çalışan gerçektende o verinin sadece bir kaç karakterini görür geri kalan kısım x yada * karakteriyle kapatılmıştır. Doğru olanda budur, çünkü Çağrı merkezi yetkilisi dahil olmak üzere Hiç kimsenin müşterinin anne kızlık soyadı, Kredi kartı bilgileri yada banka bilgileri gibi mahrem bilgileri bilmesine hakkıda yok gerekte yoktur.

Veride fiziksel değişiklik yapmadan, wallet yönetimi gibi karmaşık konulara girmeden veriyi yetkisiz kullanıcılara karşı güvenilir hale getirebilmenin tek yolu da Oracle Data Redactiondır.  Bunun için Oracle ın DBMS_REDACT paketiyle Redaction yapabilirsiniz.

Redaction yaparken Full, Partial, Regular Expression ve Random olarak aşağıdaki gibi farklı seçenekleri kullanabilirsiniz.

Yukarda bahsetmiş olduğum kredi kartı ve Çağrı merkezindeki senaryoyu aşağıda örneklendirmeyle yapıp konuyu kapatıyor olacağım. Öncellikle aşağıdaki gibi örnek bir veri seti oluşturuyorum.

CREATE TABLE mehmet.kart_bilgileri (
id NUMBER NOT NULL,
musteri_id NUMBER NOT NULL,
kart_no NUMBER NOT NULL,
kart_string VARCHAR2(19) NOT NULL,
bitis_tarihi DATE NOT NULL,
guvenlik_no NUMBER NOT NULL,
gecerlilik_tarihi DATE,
CONSTRAINT mehmet.kart_bilgileri_pk PRIMARY KEY (id)
);

INSERT INTO mehmet.kart_bilgileri VALUES (1, 1000, 2013201320132013, '2013-2013-2013-2013', TRUNC(ADD_MONTHS(SYSDATE,12)), 123, NULL);
INSERT INTO mehmet.kart_bilgileri VALUES (2, 1001, 1989198919891989, '1989-1989-1989-1989', TRUNC(ADD_MONTHS(SYSDATE,12)), 234, NULL);
INSERT INTO mehmet.kart_bilgileri VALUES (3, 1002, 2018201820182018, '2018-2018-2018-2018', TRUNC(ADD_MONTHS(SYSDATE,12)), 345, NULL);
INSERT INTO mehmet.kart_bilgileri VALUES (4, 1003, 1453145314531453, '1453-1453-1453-1453', TRUNC(ADD_MONTHS(SYSDATE,12)), 456, NULL);
INSERT INTO mehmet.kart_bilgileri VALUES (5, 1004, 5710571057105710, '5710-5710-5710-5710', TRUNC(ADD_MONTHS(SYSDATE,12)), 567, NULL);
COMMIT;

Bu örnek tabloyu sorguladığımızda aşağıdaki gibi gelecektir.

Kart_no kolonuna aşağıdaki gibi Full redaction yapıyoruz.

BEGIN
DBMS_REDACT.add_policy(
object_schema => 'mehmet',
object_name => 'mehmet.kart_bilgileri',
column_name => 'kart_no',
policy_name => 'redact_kart_info',
function_type => DBMS_REDACT.full,
expression => '1=1'
);
END;
/

Redaction sonrası Mehmet ve Salih kullanıcısıyla ayrı ayrı sorguladığımızda aşağıda görüldüğü gibi Mehmet kullanıcısı Kart_noyu doğru görürken,

Salih kullanıcısı DBMS_REDACT.full un o anki default değeri olan 0 ı görmektedir.

Bu kolona Full yerine Partial olarak 12 karakterine 1 yazdıralım ve yetkisiz kullanıcılar bu kısmı sadece 1 görsün dersek aşağıdaki gibi Redaction yapmamız gerekiyor.

BEGIN
DBMS_REDACT.alter_policy (
object_schema => 'mehmet',
object_name => 'mehmet.kart_bilgileri',
policy_name => 'redact_kart_info',
action => DBMS_REDACT.modify_column,
column_name => 'kart_no',
function_type => DBMS_REDACT.partial,
function_parameters => '1,1,12'
);
END;
/

Redaction yaptıktan sonra Mehmet ve Salih Kullanıcılarında aynı sorguyu çekince gelen veriler aşağıdaki gibi olacaktır.

Mehmet Kullanicisi:

Salih Kullanıcısı:

Kart String kolonuna da aşağıdaki gibi Partial Redaction yapabiliriz. Bu yöntemde piyasada çok fazla kullanılır Kredi kartının son 4 hanesi dışındakilerin yetkisiz kullanıcılar tarafından görünmesi amacıyla çokça kullanılır.

BEGIN
DBMS_REDACT.alter_policy (
object_schema => 'mehmet',
object_name => 'mehmet.kart_bilgileri',
policy_name => 'redact_kart_info',
action => DBMS_REDACT.add_column,
column_name => 'kart_string',
function_type => DBMS_REDACT.partial,
function_parameters => 'VVVVFVVVVFVVVVFVVVV,VVVV-VVVV-VVVV-VVVV,#,1,12'
);
END;
/

Bu Redactionı yaptıktan sonra Mehmet ve Salih kullanıcısıyla ayrı ayrı sorguladığımızda Salih kullanıcısının kart_no ve kart_string kolonunu Redactiona tabi olmuş bir şekilde gördüğünü göreceğiz.

Ve son olarak Güvenlik no kolonuna da Random olarak Redaction yapmak için aşağıdaki scripti çalıştırıyoruz.

BEGIN
DBMS_REDACT.alter_policy (
object_schema => 'mehmet',
object_name => 'kart_bilgileri',
policy_name => 'redact_card_info',
action => DBMS_REDACT.add_column,
column_name => 'guvenlik_no',
function_type => DBMS_REDACT.RANDOM
);
END;
/

 

Mehmet ve Salih kullanıcısıyla ayrı ayrı sorguladığımızda aşağıdaki gibi Salih kullanıcısı kart no kart string ve Güvenlik no kolonlarının tamamını yanlış görüyor olacaktır.

 

Bu özelliği kullanmak için Lisansınızın Enterprise Edition olması ve ayrıca bunun üstüne de Advanced Security Option lisansınızın bulunması gerekiyor. Bunun da Core başına 15000$ olduğunu unutmadan kullanmanızı tavsiye ederim 🙂 Zalımsın Orakılllll 🙂

Böylece bir yazının daha sonuna gelmiş bulunmaktayım bir sonraki yazıda görüşmek dileğiyle Esen kalın…

 

Oracle Exadata SQL Server Goldengate Weblogic EBS ve Linux konusunda aşağıdaki konularda 7×24 Uzman Danışmanlara yada Eğitimlere mi İhtiyacınız var mehmet.deveci@gridgroup.com.tr adresine mail atarak Bizimle iletişime geçebilirsiniz.

– Oracle Veritabanı Danışmanlığı
– Oracle Veritabanı Bakım ve Destek
– Exadata Danışmanlığı
– Exadata Bakım ve Destek
– SQL Server Veritabanı Danışmanlığı
– SQL Server Veritabanı Bakım ve Destek
– Goldengate Danışmanlığı
– Goldengate Bakım ve Destek
– Linux Danışmanlığı
– Linux Bakım ve Destek
– Oracle EBS Danışmanlığı
– Oracle EBS Bakım ve Destek
– Weblogic Danışmanlığı
– Weblogic Bakım ve Destek
– Oracle Veritabanı Eğitimleri
– Oracle VM Server Danışmanlığı
– Oracle VM Server Bakım ve Destek
– Oracle EPPM Danışmanlığı
– Oracle EPPM Bakım ve Destek
– Oracle Primavera Danışmanlığı
– Oracle Primavera Bakım ve Destek
– Oracle Eğitimleri
– SQL Server Eğitimleri
– Goldengate Eğitimleri
– Exadata Eğitimleri
– Linux Eğitimleri
– Oracle EBS Eğitimleri
– Oracle VM Server Eğitimleri
– Weblogic Eğitimleri
– Oracle EPPM Eğitimleri
– Oracle Primavera Eğitimleri

Exit mobile version