Veritabanı Tasarımı Kullanıcı Erişimini Kontrol Etme Kullanıcı Erişimini Kontrol Etme Konular • Nesne ayrıcalıkları ve sistem ayrıcalıkları arasındaki farkı karşılaştırma • Bir kullanıcının bir veritabanına erişimini etkinleştirmek için gerekli iki komutu oluşturma • Nesnelere kendi şemalarında diğer kullanıcılar için ya da genel ayrıcalıklar atamak için GRANT… ON …TO komutunu oluşturma ve çalıştırma • Verilen ayrıcalıkları onaylamak için veri sözlüğünü sorgulama 2 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Kullanıcı Erişimini Kontrol Etme Amaç Bir bilgisayarı evde ya da iş yerinizde başka kişilerle paylaşıyorsanız muhtemelen üstünde çalıştığınız ya da kaydettiğiniz şeyler başkası tarafından görülebilir, değiştirilebilir ya da silinebilir. Kişisel dosyalarınıza erişimde başkalarının sahip olduğu ayrıcalıkları kontrol edebilmek güzel olmaz mıydı? Veritabanları için evde ya da iş yerinde veri güvenliği çok önemlidir. Bu derste veritabanındaki nesneleriniz üzerinde değişiklik, silme, güncelleme, ekleme gibi işlemlere erişim için nasıl yetki vereceğimizi öğreneceğiz. 3 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Kullanıcı Erişimini Kontrol Etme Kullanıcı Erişimini Kontrol Etme Çoklu kullanıcı ortamlarında veritabanı kullanımı ve erişiminin güvenliğini sağlamak istersiniz. Oracle sunucu veri güvenliği ile şunları yapabilirsiniz: • Veritabanı erişimini kontrol etme • Veritabanındaki belirli nesnelere erişim yetkisi verme • Oracle veri sözlüğü ile verilen ve alınan yetkileri onaylama • Veritabanı nesneleri için eşanlamlar oluşturma 4 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Kullanıcı Erişimini Kontrol Etme Veritabanı Güvenliği Veritabanı güvenliği iki kategoriye ayrılır: • Sistem güvenliği • Veri güvenliği Sistem güvenliği sistem seviyesinde kullanıcı, kullanıcı adı ve şifre oluşturma, disk alanını kullanıcılara ayırma ve tablo, görünüm ve seri oluşturma gibi sistem yetkilerini verme gibi veritabanı kullanımı ve erişimini kapsar. 100’den fazla farklı sistem ayrıcalığı bulunmaktadır. Veri güvenliği veritabanı nesnelerini kullanma ve erişimini içeren nesne ayrıcalığı ve bunların kullanıcılarının sahip olduğu nesneler üzerindeki hareketler ile ilgilidir. Bu ayrıcalıklar DML komutlarının çalıştırılabilmesini içerir. 5 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Kullanıcı Erişimini Kontrol Etme Yetkiler ve Şemalar Yetkiler belirli SQL komutlarını çalıştırma hakkıdır. Veritabanı yöneticisi kullanıcılara veritabanı ve nesneleri ile ilgili erişim verme yeteneğine sahip yüksek seviye kullanıcıdır. Kullanıcıların veritabanına erişmesi için sistem ayrıcalıkları gerekir. Veritabanında nesnelerin içeriğini düzenlemek için nesne ayrıcalıklarına ihtiyaç duyarlar. Kullanıcılara diğer kullanıcılara ilgili ayrıcalıkları gruplama olarak adlandırılan ek ayrıcalıklar vermek için ayrıca ayrıcalıklar verilebilir. 6 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Kullanıcı Erişimini Kontrol Etme Yetkiler ve Şemalar Bir şema tablo, görünüm ve seri gibi nesnelerin birleşimidir. Şema bir veritabanı kullanıcısı tarafından sahip olunabilir ve kullanıcı ile aynı ada sahiptir. Bu derste şemanızın adı ülkeniz, okulunuz, dersiniz ve öğrenci numaranızın birleşimi olacaktır. Örneğin: uswa_skhs_sql01_s22 7 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Kullanıcı Erişimini Kontrol Etme Sistem Güvenliği Bu seviye güvenlik sistem seviyesinde veritabanı erişimi ve kullanımını içerir. 100’den fazla farklı sistem ayrıcalığı bulunmaktadır. Kullanıcı ekleme silme, tablo kaldırma, tablo yedekleme gibi sistem yetkileri genellikle sadece veritabanı yöneticisi tarafından tutulur. 8 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Kullanıcı Erişimini Kontrol Etme Sistem Güvenliği Aşağıdaki tabloda veritabanı yöneticisinin normal olarak diğer kullanıcılara veremeyeceği bazı sistem yetkileri listelenmektedir. Başka bir kullanıcının sizin tablolarınızı silebilmesini ister misiniz? Sistem Yetkisi CREATE USER DROP USER İzin Verilen İşlemler Yetki verilen diğer Oracle kullanıcıları oluşturabilir Yetki verilen başka bir kullanıcıyı silebilir DROP ANY TABLE BACKUP ANY TABLE Yetki verilen herhangi bir şemadaki bir tabloyu silebilir Yetki verilen dışa aktarma özelliği ile herhangi bir şemadaki herhangi bir tabloyu yedekleyebilir SELECT ANY TABLE Yetki verilen tabloları, görünümleri ya da herhangi bir anlık görüntüyü sorgulayabilir Yetki verilen herhangi bir şemada tablo oluşturabilir CREATE ANY TABLE 9 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Kullanıcı Erişimini Kontrol Etme Sistem Yetkileri Veritabanı yöneticisi CREATE USER komutu kullanarak kullanıcı oluşturabilir. Bu noktada kullanıcı herhangi bir yetkiye sahip değildir. Veritabanı yöneticisi daha sonra bu kullanıcıya gerekli olan ayrıcalıkları verir. 10 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Kullanıcı Erişimini Kontrol Etme Sistem Yetkileri ALTER USER komutu kullanılarak bir kullanıcı şifresini değiştirebilir. 11 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Kullanıcı Erişimini Kontrol Etme Kullanıcı Sistem Yetkileri Veritabanı yöneticisi kullanıcıya sistem yetkilerini ayırmak için GRANT komutunu kullanır. Sistem yetkileri kullanıcının veritabanı seviyesinde ne yapabileceğini belirler. Kullanıcıya ilk defa yetkiler verilince kullanıcı hemen bu yetkileri kullanabilir. 12 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Kullanıcı Erişimini Kontrol Etme Kullanıcı Sistem Yetkileri Sistem Yetkisi İzin Verilen İşlemler CREATE SESSION CREATE TABLE CREATE SEQUENCE Veritabanına bağlanma Kullanıcıların şemasında tablo oluşturma Kullanıcıların şemasında seri oluşturma CREATE VIEW CREATE PROCEDURE Kullanıcıların şemasında görünüm oluşturma Kullanıcıların şemasında prosedür, fonksiyon ya da paket oluşturma 13 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Kullanıcı Erişimini Kontrol Etme Kullanıcı Sistem Yetkileri Bir kullanıcının veritabanına erişebilmesi için ‘CREATE SESSION’ yetkisine ve kullanıcı kimliğine sahip olmalıdır. Oracle Application Express’te ‘CREATE SESSION’ komutunu çalıştıramazsınız; bu otomatik olarak sahne arkasında gerçekleşir. 14 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Kullanıcı Erişimini Kontrol Etme Nesne Güvenliği Bu seviye güvenlik veritabanı nesnelerine erişmeyi ve kullanımı ile kullanıcının bu nesneler üzerinde sahip olduğu eylemleri içerir. 15 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Kullanıcı Erişimini Kontrol Etme Nesne Yetkileri Her nesne verilebilen yetkiler kümesine sahiptir. Aşağıdaki tablo farklı nesneler için yetkileri listelemektedir. Nesne Yetkisi Tablo Görünüm ALTER x DELETE EXECUTE x INDEX INSERT x x x x REFERENCES SELECT x x x UPDATE x x Seri Prosedür x x x 16 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. x Kullanıcı Erişimini Kontrol Etme Nesne Yetkileri Nesne ayrıcalıkları ile ilgili aşağıdaki dört noktaya dikkat etmek önemlidir: 1. Bir seriye uygulanan yetkiler sadece SELECT ve ALTER ifadeleridir. Hatırlayın, bir seri ALTER ifadesi INCREMENT, MAXVALUE, CACHE/NOCACHE ya da CYCLE/NOCYCLE seçeneklerini değiştirmek için kullanılır. START WITH seçeneği ALTER kullanılarak değiştirilemez. 17 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Kullanıcı Erişimini Kontrol Etme Nesne Yetkileri 2. Bir tablodaki bireysel sütunlarda UPDATE, REFERENCES ve INSERT yetkilerini verebilirsiniz. Örneğin: GRANT UPDATE (auth_expense) ON d_partners TO allison_plumb 3. Bir SELECT yetkisi sütunların alt kümesi ile oluşturulan bir görünüm ve SELECT yetkisini bu görünüme vererek kısıtlanabilir. Bireysel sütunlarda SELECT yetkisini veremezsiniz. 18 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Kullanıcı Erişimini Kontrol Etme Nesne Yetkileri 4. Eşanlamda verilen bir yetki, eşanlam ile belirtilen ana tabloda bir yetkiye dönüştürülerek verilebilir. Diğer bir ifadeyle, bir eşanlam sadece yeni, daha kolay kullanımlı addır. Bu adı kullanarak yetkileri verme tablonun kendisinde yetki verme ile aynıdır. 19 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Kullanıcı Erişimini Kontrol Etme PUBLIC Anahtar Kelimesi Bir tablonun sahibi PUBLIC anahtar kelimesi kullanarak tüm kullanıcılara erişim hakkı verebilir. Aşağıda gösterilen örnekte sistemdeki tüm kullanıcıların ‘Alice’s DEPARTMENTS’ tablosundan veri sorgulamasına izin verilmektedir. 20 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Kullanıcı Erişimini Kontrol Etme PUBLIC Anahtar Kelimesi Eğer bir ifade bir nesnenin tam adını kullanmazsa Oracle sunucu geçerli kullanıcı adının önüne nesne adını dolaylı olarak ekler. Şayet kullanıcı ‘Scott’ ‘DEPARTMENTS’ tablosunu sorgularsa örneğin sistem ‘SCOTT.DEPARTMENTS’ tablosundan seçim yapar. Şayet bir ifade bir nesnenin tam adını kullanmazsa ve geçerli kullanıcı bu isimde bir nesneye sahip değilse sistem nesnenin adına PUBLIC ekler. 21 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Kullanıcı Erişimini Kontrol Etme PUBLIC Anahtar Kelimesi Örneğin, şayet kullanıcı ‘Scott’, ‘USER_OBJECTS’ tablosunu sorgularsa ve Scott böyle bir tablonun sahibi değilse sistem veri sözlüğü görünümünden ‘PUBLIC.USER_OBJECTS’ genel eşanlamı ile seçim yapar. 22 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Kullanıcı Erişimini Kontrol Etme Verilen Yetkileri Onaylama Eğer SİLME yetkisine sahip dolmadığınız bir tablodan satır silme gibi yetkisiz bir işlem gerçekleştirmeye çalışırsanız, Oracle sunucu işlemin gerçekleşmesine izin vermez. Oracle sunucu hata mesajı olan “table or view does not exist,” alırsanız şunlardan birini yapmışsınızdır: • Var olmayan tabloyu ya da görünümü adlandırmışsınızdır. • Uygun yetkiniz olmayan bir tablo veya görünüm üzerinde bir işlem gerçekleştirmeye çalışmışsınızdır. 23 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Kullanıcı Erişimini Kontrol Etme Görünüm Yetkileri Sahip olduğunuz yetkileri görmek için veri sözlüğüne erişebilirsiniz. Verilen tablo farklı veri sözlüğü görünümlerini açıklamaktadır. ‘Oracle Application Express Developer’ kullanarak ‘USER_ROLE_PRIVS’ girin, büyüteci seçin, ardından örnek ile sorgulamak için bir öğeyi seçin. Kullanıcının yetkileri iade edilecektir. 24 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Kullanıcı Erişimini Kontrol Etme Görünüm Yetkileri Veri Sözlüğü Görünümü ROLE_SYS_PRIVS Açıklama Rollere verilen sistem yetkileri ROLE_TAB_PRIVS USER_ROLE_PRIVS Rollere verilen tablo yetkileri Kullanıcılar tarafından erişilebilen roller USER_TAB_PRIVS_MADE USER_TAB_PRIVS_RECD Kullanıcı nesnelerinde verilen nesne yetkileri Kullanıcılara verilen nesne yetkileri USER_COL_PRIVS_MADE Kullanıcı nesneleri sütunlarında verilen nesne yetkileri USER_COL_PRIVS_RECD USER_SYS_PRIVS Kullanıcılara belirli sütunlarda verilen nesne yetkileri Kullanıcıya verilen sistem yetkilerini listeleme 25 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur.