Oracle Ders 15 – Kullanici Olusturma ve Yonetimi – 01

Merhaba Arkadaslar,
Bir kac dersimiz boyunca Oracle 11G de yeni bir kullanici olusturma ve haklarinin yonetilmesi konusundan bahsedecegim. ( Grant Privileges ,Roles)

Oncelikle verinin guvenligi icin gereken 2 kavramdan bahsetmek istiyorum, authentication (kimlik dogrulama) ve authorization (yetkilendirme).

Kimlik dogrulama, sisteme kayitli kisilerin ulasabilmesidir.
Yetkilendirme kavrami ise adi uzerinde hangi islemleri yapabilecegi , database de hangi objelere ulasabilcegi ile ilgilidir.
Burada bir nevi yeni bir kullanici olusturma ve siteme girisinin saglanmasi authentication cesitli yetkilerin verilmesi authorization olarak degerlendirebiliriz.

Bu kisa kavramlardan sonra Oracle SQL Developer programiza donelim ve yeni bir baglanti olusturalim. Buradaki kodlarin calismasi icin yetkili bir abi olmamiz gerekmektedir 🙂  U
Username —- > SYSTEM
Password ——> Oracle 11 G yi kurarken basta belirlemistik.

01 oracle ders 15 system connection

SYSTEM kullanicisi ile giris yaptigimiza gore artik devam edebiliriz.

Yeni Bir Kullanici Olusturma

Kullanici ismi ve sifre belirledikten sonra yeni bir kullanici olusturabiliriz. Varsayilan olarak kullanici ismi en fazla 30 karakter uzunlugunda olabilir, _ ,$ , # , sayi ve harf icerebilir.

CREATE USER yenikullanici IDENTIFIED BY 123456;

Yeni bir kullanici olusturduk , simdi bu yeni kullanici uzerinden giris yapmaya calisalim.

02 oracle ders 15 connection

lacks CREATE SESSION privilege ; logon denied hatasini yedik hemen. privilege izin ayricalik hak demektir. Demekki yetkili bir abi degiliz

Sifre Degistirme

Alter islemi ile sifre degisikligi yapabiliriz. Genel form :

alter user username
identified by newpassword;


Kullanicilara Haklar (Privileges) Verilmesi

Privileges , 2 turdur. Bunlar ;
System Privileges : Oracle 11 G veritabanina ulasilmasi ve DDL (Database Definition Language) islemlerinin yapilabilmesi icin gereklidir (CREATE, ALTER, DROP)
Object Privileges : DML (Database Manipulation Language) islemlerinin yapilabilmesi icin gereklidir. (INSERT , UPDATE )

System Privileges

Oracle 11 g’de 200 uzerinde system privileges vardir. Ornek olarak , veritabani objeleri uzerinde Create , Alter , Drop islemleri icin gerekli izinler. Daha onceki derslerde inceledigimiz gibi  veritabani objesine (database object) ornek olarak sequence, index, table verebiliriz.

Oracle 11 G ye baglanabilmek icin CREATE SESSION hakki olmasi gerekmektedir. Bir kullanicinin yeni bir kullanici olusturabilmesi icin de CREATE USER hakki olmalidir.

select name from system_privilege_map;

Su sorguyu calistirarak system_privilege_map , veri sozlugunden system privileges isimlerine ulasilabiliriz.
Sorgu sonucu gelen veriyi inceledigimizde ANY anahtar kelimesini iceren kayitlar oldugunu gorebiliriz. ANY kelimesini iceren izinlerin verilmesi tum sistemi etkiler.
DROP ANY TABLE izni ,  veritabanindan herhangi bir tablonun silinebilecegi anlamina gelir.
Ayrica  INSERT ve DELETE yani DML islemlerinin de listede oldugunu gorebiliriz.
INSERT ANY TABLE izni , veritabaninda herhani bir tabloya insert islemi yapilabilecegi anlamina gelir.

Grant System Privileges

Sistem haklari , GRANT anahtar kelimesi ile tanimlanir.  System Privileges , spesifik olarak bir veritabani objesi (database object) icin tanimlanamaz.

Olusturdugumuz “yenikullanici” isimli kullaniciya CREATE SESSION izni verelim ve SQL Developer ile tekrar baglanti kurmaya calisalim.
Burada GRANT komutlarini calistirirken SYSTEM kullanici olarak calistirmamiz gerekmektedir !!

GRANT CREATE SESSION TO yenikullanici;

01 oracle ders 15 privileges connection

Gordugunuz gibi Status : Success her sey yolunda 🙂 Baglantiyi saglayip bu kullanici uzerinden yeni bir tablo olusturmaya calisalim.

create table ders15 ( 
var1 varchar2(20)
);

SQL Error: ORA-01031: insufficient privileges
01031. 00000 – “insufficient privileges”
Hatasini aliriz, cunku yeni bir tablo olusturmak icin bir yetkimiz yok.

SYSTEM kullanicisi olarak su komutlari calistiralim.

GRANT CREATE TABLE TO yenikullanici;
GRANT UNLIMITED TABLESPACE TO yenikullanici;

Izinleri verip sorgumuzu tekrar calistiralim ve tablomuzu olusturalim.

Object Privileges

Bir kullanici bir obje olusturdugunda , bu kullanici bu obje uzerinde tum haklara sahiptir. Baska bir kullanici bu objeye ulasmak istediginde veya degisiklik yapmak istediginde izin gerekmektedir. Oracle 11 G , object privileges :

SELECT : Bu izin ; tablo, view, sequence ‘ teki verilerin sorgulanmasi iznidir.
INSERT : Tablo veya View ‘e kayit ekleme iznidir.
UPDATE : Tablo veya View modifiye izni.
DELETE : Tablo veya View kayit silme izni.
INDEX : Index olusturma izni.
ALTER : Bir tablo veya sequence uzerinde degisiklik yapilma iznidir.
REFERENCES : Foreign key iznidir.

Grant Object Privileges

GRANT {objectprivilege|ALL} [(columnname),
objectprivilege (columnname)]
ON objectname
TO {username|rolename|PUBLIC}
[WITH GRANT OPTION];

GRANT anahtar kelimesi ile Object Privileges tanimlanir.  INSERT, UPDATE, REFERENCES izinleri belirli kolon icin verilebilir. Izinleri listelemek yerine ALL anahtar kelimesi ile tum haklar verilebilir.
ON anahtar kelimesinden sonra objectname yani tablo, view , sequence gibi obje ismi.
TO anahtar kelimesinden sonra birden fazla kullanici icin ayni izin verilebilir. Eger izin tum kullanicilara verilecekse PUBLIC anahtar kelimesi ile verilebilir.

Ornek bir kac durumu inceleyelim.
Asagidaki ornekte sema ismi verilen tabloda ilgili user icin select ve insert izni su sekilde verilir.

GRANT select,insert
ON schema_name.table_name 
TO username;

Asagidaki ornekte select ve update islemi izni verilmektedir. Yalniz burada sadece lastname ve firstname alanlari icin update islemi verilmektedir.

GRANT select,update(lastname,firstname)
ON schema_name.table_name
TO username;

Asagidaki  ornekte tum yetkiler ilgili kullaniciya verilmektedir. Bununla birlikte WITH GRANT OPTION sayesinde verilen bu yetkiler diger tum kullanicilara da verilmektedir.

GRANT ALL 
ON schema_name.table_name
TO username
WITH GRANT OPTION;

SYSTEM kullanicisi olarak yeni bir tablo olusturdum , Tablo1;
yenikullanici isimdeki kullanicisi bu tabloya ulasmak istediginde hata alacaktir. Yani su sorgu hata verecektir.

ORA-00942: table or view does not exist
00942. 00000 – “table or view does not exist”

select * from system.tablo1;

SYSTEM kullanicisi olarak su izni verelim.

GRANT ALL 
ON tablo1
TO yenikullanici;

Select sorgumuzu tekrar calistirdigimizda tabloya ulasabildigimizi gorebiliriz.

Yazimi burada noktaliyorum 🙂

Herkese Bol Javali Gunler dilerim.
Be an oracle man , import java.*;
Levent Erguder
injavawetrust

Print Friendly, PDF & Email

Leave a Reply

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