VYS14
BSM211 Veritabanı Yönetim Sistemleri - Celal ÇEKEN, İsmail ÖZTEL, Veysel Harun ŞAHİN
Veritabanı Güvenliği, Yetkilendirme
psql Kullanımı
psql, postgresql sunucuya bağlanıp işlemler yapmamızı sağlayan konsol uygulamasıdır.
psql Uygulamasını Çalıştırma
psql ile veritabanlarını görüntüleme
psql ile veritabanına bağlanma
psql ile tabloları görüntüleme
psql ile sql sorgusu çalıştırma
psql - Kullanıcıları/Rolleri Listeleme
psql Çıkış Örneği
Yetki/Yetkilendirme
Nesnelerle ilgili sahip olunan haklara yetki denir.
Kullanıcıların/rollerin, veritabanı yönetim sistemi ve veritabanı nesneleri (tablo, görünüm, fonksiyon vb.) üzerinde hangi haklara sahip olacağının belirlenmesine yetkilendirme adı verilir.
İki tür yetki vardır:
Temel yetkiler (rol özellikleri)
Nesne yetkileri
Temel Yetkiler (Rol Özellikleri)
Kullanıcıların/rollerin veritabanı yönetim sistemi üzerindeki haklarını ifade eder.
SUPERUSER, CREATEDB, CREATEROLE, CREATEUSER, INHERIT, LOGIN, REPLICATION, BYPASSRLS, NOSUPERUSER, NOCREATEDB, NOCREATEROLE, NOCREATEUSER, NOINHERIT, NOLOGIN, NOREPLICATION, NOBYPASSRLS
Nesne Yetkileri
Kullanıcıların/rollerin veritabanı nesneleri (tablo, görünüm, fonksiyon vb.) üzerindeki haklarını ifade eder.
Nesnelerin türüne göre (tablo, görünüm, fonksiyon) aşağıdaki yetkiler verilir.
SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER,
CREATE, CONNECT, TEMPORARY, EXECUTE, USAGE ...
Kullanıcı/Rol Katalogları
Oturum yetkilendirmesini postgres rolü olarak ayarla (Bu işlemin yapılabilmesi için superuser yetkisi gereklidir).
Böylelikle işlemler, postgres rolünün yetkileriyle yapılabilecektir.
pg_authid ve pg_roles kataloğunu sorgula.
Bu kataloglarda roller hakkında bilgi mevcuttur.
pg_user kataloğunu sorgula.
Kullanıcı/Rol Oluşturma/Değiştirme İşlemleri
Hiç bir yetkisi olmayan rol oluştur.
Rolün aynı zamanda şifesi de mevcut değildir.
SUPERUSER yetkisi olan rol oluştur.
SUPERUSER, nesnelerle ilgili herseyi yapma yetkisine sahiptir.
Roller oluşturulduktan sonra düzenlenebilir.
abc şifresine sahip "kullanici1" adında bir kullanıcı oluştur.
abc şifresi MD5 algoritması ile kodlanır (Kullanılacak algoritma postgresql.conf içerisinde değiştirilebilir).
CREATE USER, CREATE ROLE ifadesinin bir takma isimdir.
Aralarındaki fark LOGIN seçeneğidir.
CREATE USER ifadesi varsayılan olarak LOGIN yetkili rol oluşturur.
CREATE ROLE ifadesi varsayılan olarak LOGIN yetkisi olmayan rol oluşturur.
8.1 ile birlikte user ve group kavramı yerine rol kavramı getirildi.
Bir rol, user olabilir, group olabilir veya ikisi birden olabilir.
Şifre kodlanarak saklanır.
Şifrenin son geçerlilik tarihi de belirtilir.
psql - Kullanıcı/Rol Oluşturma/Değiştirme İşlemleri
Örnek
Örnek
CREATE USER
ifadesi,CREATE ROLE
ifadesinin bir takma isimdir.Aralarındaki fark
LOGIN
seçeneğidir.
postgres=#
postgres=# CREATE ROLE testk3 WITH PASSWORD '111111' LOGIN; CREATE ROLE postgres=# \du List of roles Role name | Attributes | Member of -----------+------------------------------------------------------------+----------- postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {} testk1 | | {} testk2 | Cannot login | {} testk3 | | {}
postgres=#
postgres=# CREATE ROLE testk4 WITH PASSWORD '111111' LOGIN CREATEDB; CREATE ROLE postgres=# \du List of roles Role name | Attributes | Member of -----------+------------------------------------------------------------+----------- postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {} testk1 | | {} testk2 | Cannot login | {} testk3 | | {} testk4 | Create DB | {}
postgres=#
postgres=# ALTER ROLE testk2 WITH LOGIN; ALTER ROLE postgres=# \du List of roles Role name | Attributes | Member of -----------+------------------------------------------------------------+----------- postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {} testk1 | | {} testk2 | | {} testk3 | | {} testk4 | Create DB | {}
postgres=#
postgres=# DROP ROLE testk2; DROP ROLE postgres=# \du List of roles Role name | Attributes | Member of -----------+------------------------------------------------------------+----------- postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {} testk1 | | {} testk3 | | {} testk4 | Create DB | {}
postgres=#
Nesne oluşturulurken, CREATE komutunu çalıştıran rol, bu nesnenin sahibi olarak belirlenir.
Nesne sahibi (ya da SUPERUSER) nesne üzerindeki tüm haklara sahiptir.
Veritabanı sahibi olan bir rolü silmeden önce veritabanı sahipliğini başka bir role aktarmalıyız.
Bu işlemi ALTER DATABASE ile yapabiliriz.
Veritabanı sahibi olan bir rolü silmeden önce veritabanı sahipliğini başka bir role aktarmalıyız.
Bu işlemi REASSIGN ile de yapabiliriz.
"rol1" in sahibi olduğu tüm nesnelerin yeni sahibini "postgres" olarak belirle.
Bir rolü grup gibi kullanabiliriz.
Diğer rollerin bu rolden yetkilerini kalıtım olarak almasını temin edebiliriz.
rol1 isimli rolün yetkilerine gruprol isimli rolün yetkilerini de ekle.
Temel yetkiler kalıtım olarak alınmaz. Yalnızca grubun nesneler üzerindeki yetkileri kalıtım olarak alınır.
Bunun yapılabilmesi için rol1 isimli rolün kalıtım alma özelliğine sahip olması gerekir. (Postgresql in yeni sürümlerinde rol oluşturulduğunda INHERIT yetkisi veriliyor)
Diğer bir deyişle INHERIT yetkisine sahip olması gerekir.
Bu yetki yoksa, yetkiler kalıtım alınmaz.
rol1 isimli role verilmiş yetkilerin (gruprol yetkileri) geri alınması.
Yetkilendirme İşlemleri
PUBLIC: Tüm roller / kullanıcılar. kullaniciAdi: Tek bir kullanıcı. ALL: Tüm yetkiler.
rol1 isimli role customers tablosu üzerinde seçim yapma yetkisi ver.
Tüm rollere customers tablosu üzerinde kayıt ekleme yetkisi ver.
rol1 isimli kullanıcıya customers tablosu üzerinde tüm yetkileri ver.
rol1 isimli rolün customers tablosu üzerindeki güncelleme yetkisini geri al.
rol1 isimli rolün customers tablosu üzerindeki tüm yetkilerini geri al.
rol1 kullanicisinin Sema1 icerisindeki nesnelere ait tüm yetkileri geri alinir.
Herhangi bir nesne üzerinde yetkiye sahip olan bir rolü silemeyiz.
rol1 in sahibi olduğu tüm nesneleri sil (kısıtlar ihlal edilemez)
Örnek (Northwind Veri Tabanı)
rol1 seçme hakkına sahip olmadigi icin hata oluşur.
Yetkilendirme yapabilmek için oturum yetkilendirmesini "postgres" kullanıcısı şeklinde ayarla.
rol1, kullanıcısına "customers" tablosu üzerinde seçme yetisi ver.
Sorgu çalışır.
Fonksiyonlar ve Yetkilendirme
Aşağıdaki ifade çalışır. Fonksiyonlar PUBLIC grubu için varsayılan olarak çalıştırılırlar.
Aşağıdaki ifade çalışmaz.
Şifreleme
Kullanici şifreleri ve gizli bilgiler açık olarak saklanmamalıdır.
Linux
Kripto eklentisini oluştur.
"sifrem" şifresini sha512 algoritması ile kodla.
"sifrem" şifresini md5 algoritması ile kodla ve sonucu "md5" ifadesi ile birleştir.
Last updated