Bir nesne oluşturulduğunda ona bir sahip atanır. Sahip, normalde oluşturma(create) sorgusunu yürüten roldür. Çoğu nesne türü için, ilk durum, yalnızca sahibin (veya bir süper kullanıcının) nesne ile her şeyi yapabilmesidir. Diğer rollerin onu kullanmasına izin vermek için, ayrıcalıkların(privilege lerin) verilmesi gerekir.

Farklı ayrıcalık türleri vardır; SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER, CREATE, CONNECT, TEMPORARY, EXECUTE ve USAGE. Belirli bir nesne için geçerli olan ayrıcalıklar, nesnenin türüne (tablo, işlev, vb.) bağlı olarak değişir.

Bir nesneyi değiştirme veya silme hakkı her zaman yalnızca sahibinin ayrıcalığına sahiptir. Nesne sahibinin özel ayrıcalıkları (DROP,GRANT,REVOKE vb.) her zaman sahibine aittir başkasına verilemez veya veya iptal edilemez. Ancak nesne için istenirse ALTER komutu ile sahibi değiştirilebilir, örneğin;

 ALTER TABLE table_name OWNER TO new_owner; 

Privilege leri atamak için GRANT komutu kullanılır. Örneğin, mustafa mevcut bir rolse ve hesaplar mevcut bir tablodaysa, tabloyu güncelleme yetkisi şunla verilebilir;

GRANT UPDATE ON hesaplar TO mustafa; 

ALL sözcüğünü kullanırsak bu nesne ile ilgili tüm ayrıcalıkları role verir.

GRANT ALL ON hesaplar TO mustafa; 

PUBLIC özel “rol” adı, sistemdeki her role bir ayrıcalık tanımak için kullanılabilir. Ayrıca, bir veritabanının birçok kullanıcısı olduğunda ayrıcalıkların yönetilmesine yardımcı olmak için “grup” rolleri ayarlanabilir. Aşağıdaki örnekle hesaplar tablosu için bütün rol lere SELECT yetkilesi verilmiştir.

GRANT SELECT ON hesaplar TO PUBLIC; 

Ayrıcalığı iptal etmek yani almak için aşağıdaki gibi REVOKE kelimesini kullanırız;

REVOKE SELECT ON hesaplar FROM PUBLIC; 

Normalde sadece nesnenin sahibi veya superuser nesne üzerinde ayrıcalıklar verebilir veya iptal edebilir. Ancak, istenirse bunu diğerlerine de verme hakkı veren “with grant option” bir ayrıcalık vermek mümkündür.

Mevcut ayrıcalıklar şunlardır:

  • SELECT : Nesnenin herhangi bir sütunundan veya belirli sütunlarından veri okumaya izin verir. COPY TO kullanımınada izin verir. SELECT yetkisi UPDATE ve DELETE içinde gereklidir.
  • INSERT : Yeni bir satırın bir nesneye eklenmesine izin verir. COPY FROM kullanımınada izin verir.
  • UPDATE : Bu yetki ile verilerin güncellemesi yetkisi kazanmış oluruz.
  • DELETE : Verilerin silinmesine izin verir.
  • TRUNCATE : Nesne üzerinde truncate’e izin verir. Yani nesneyi boşaltmaya izinli oluruz.
  • REFERENCES : Bir tabloya veya bir tablonun belirli sütunlarına referans foreign key constraint oluşturulmasına izin verir.
  • TRIGGER : Tablo veya view üzerinde trigger oluşturmaya izin verir.
  • CREATE : Veritabanları için, veritabanı içerisinde yeni schema oluşturulmasına izin verir. Schemalar için, schema içinde yeni nesnelerin oluşturulmasına izin verir. Tablespace için tablolar, indeksler ve geçici dosyaların tablespace içinde oluşturulmasına izin verir
  • CONNECT : Yetki alan kişinin veritabanına bağlanmasına izin verir. Bu ayrıcalık bağlantı başlangıcında kontrol edilir (pg_hba.conf tarafından getirilen kısıtlamaların kontrol edilmesine ek olarak).
  • TEMPORARY : Veritabanı kullanılırken geçici tabloların oluşturulmasına izin verir.
  • EXECUTE : Fonksiyonda kullanılan herhangi bir operatörün kullanımı dahil olmak üzere fonksiyon veya prosedürü çalıştırmaya izin verir.
  • USAGE : Şemalar için, şemada bulunan nesnelere erişime izin verir. Prosedürel diller için, o dilde işlevlerin oluşturulması için dilin kullanılmasına izin verir. Foreign-data wrapper kullanılarak yeni sunucuların oluşturulmasına izin verir. Sequence için currval ve nextval işlevlerinin kullanımına izin verir.

(continue reading…)

 1,167 total views