kullanici-erisimini-kontrol-etme

advertisement
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.
Download