14-03-2008, 14:22
KULLANICILAR VE YETKİLENDİRME:
1 - ) KULLANICI HESAPLARI:
Yetkilendirme dışında kullanıcı hesapları ekleme, silme, güncelleme işlemleri Firebird araçlarından
“gsec.exe” ile yapacağız. Bu işlemi yapma hakkı admine aittir. Varsayılan admin hesabı “SYSDBA” dır.
Ve bu ayarlar “security2.fdb” içinde saklandığı gibi bu dosyaya erişim hakkı yoktur.
Firebird, şifrenin soldan 8 karakterini dikkate alır. Yani “masterkey” 9 olduğu halde, “masterke” i dikkate
alır. Yazmanın anlamı yoksa bile “masterket”, “masterkef”, “masterkez” vb. hepsi geçerli olur.
Ayrıca büyük-küçük harf duyarlılığı yoktur.
Syntax:
GSEC -user SYSDBA -password masterkey <command> <options>
Commands
Options
a - ) Yeni Kullanıcı Hesabı Ekleme:
“anemos” kullanıcı hesabı ekleyelim ve şifresi “excel” olsun.
Ekleme anahtarı “-add” dir. Kısaca, “-a” kullanabilirsiniz.
Ek option olarak, adı, ikinci adı(varsa) ve soyadı da eklemek mümkün. Bilgi amaçlıdır.
b - ) Mevcut Kullanıcı Hesabını Silme:
Silme anahtarı “-delete” dir. Kısaca “-de” de kullanabilirsiniz.
c - ) Mevcut Kullanıcı Hesabını Güncelleme:
Şifre değiştirme işlemi bu yolla gerçekleştirirsiniz. Güvenlik için “SYSDBA” nın şifresini de değiştirin.
Güncelleme anahtarı “-modify” dir. Kısaca, “-mo” olarak kullanabilirsiniz.
SYSDBA’ nın şifresini “excel” olarak değiştirelim.
İpucu:
Role oluşturmak için,(ayrıntı aşağıdadır)
2 - ) KULLANICI HAKLARI (GRANT & REVOKE ):
Bir kullanıcı hesabı eklemek, ona veritabanında istediği her şeyi yapabileceği anlamına gelmez. Neleri
yapacağını (GRANT) neleri yapamayacağını (REVOKE) tanımlamak gerekir. Varsayılan, yetkisizdir.
Her tablo(nesne) için ayrı ayrı SELECT, INSERT, UPDATE, DELETE, EXECUTE (procedure) işlem
hakkı verilir.*
Bu haklar SQL ile verilir ya da alınır.
*Muhtemel hata: GRANT INSERT, SELECT ON Tablo1, Tablo2 TO anemos;
Kullanıcıya Verebileceğiniz Haklar:
a - ) Kullanıcı Hesabına Yetki Verme (GRANT):
Örnek 1:
“anemos” kullanıcısına “Tablo1” üzerinde kayıt girme ve okuma hakkı verelim.
Örnek 2:
“anemos1” ve “anemos2” kullanıcılarına “Tablo1” üzerinde kayıt girme ve okuma hakkı verelim.
PUBLIC ??
Public, kullanıcıların tamamını (Admin hariç) ifade eder. Eğer Public’e yetki verildiyse kullanıcıların
hiçbir yetki verilmese bile tablo veya diğer nesneler üzerinde işlem yapabilme hakkı olur.
Örnek 3:
Her bağlanacak kullanıcıya (PUBLIC) “Tablo1” üzerinde kayıt girme
ve okuma hakkı verelim.
Örnek 4:
Her bağlanacak kullanıcıya (PUBLIC) “Tablo1” üzerinde hakların hepsini vermekle birlikte, onlara hak verme yetkisi de verelim.
ADO ile;
Interactive SQL (isql.exe) ile;
ROLE ??
Role, kullanıcılara tek tek yetki verme işlemini kısaltır. Örneğin bir veritabanındaki tüm tablolara
veya diğer nesnelere erişim hakları tek bir Role’e atanır. Yeni kullanıcı eklendiğinde de kullanıcıya
bu Role atanarak işlem biter. Farklı hakları içeren birden fazla Role tanımlamanız da mümkündür.
Role’ün faydasını büyük veritabanında görebilirsiniz. Örneğin 70 tablodan oluşan bir veritabanı ve
300 kullanın bağlanacağını düşünün. Bu da, en fazla 300 x 50 = 15.000 hak verme işlemi demektir.
Bunun yerine ör: 10 Role tanımlanabilse en fazla 300 x 10 = 3.000 işlemde tamamlanır.
Yeni Role;
Role Silme;
Role’e Yetki Verme;
Role’ü Kullanıya Atama;
b - ) Kullanıcı Hesabından Yetkiyi Alma (REVOKE):
Küçük ayrıntılar dışında GRANT ile kullanımı aynıdır. Kullanıcı isimlerini belirtirken “TO”
kullanılırken, yerini “FROM” alacaktır.
Yukarıdaki örnekleri REVOKE olarak uygulayalım.
Örnek 1:
“anemos” kullanıcısından “Tablo1” üzerinde kayıt girme ve okuma hakkını alalım.
Örnek 2:
“anemos1” ve “anemos2” kullanıcılarından “Tablo1” üzerinde kayıt girme ve okuma hakkını alalım.
Örnek 3:
Her bağlanacak kullanıcıdan (PUBLIC) “Tablo1” üzerinde kayıt girme
ve okuma hakkını alalım.
Örnek 4:
Her bağlanacak kullanıcıdan (PUBLIC) “Tablo1” üzerinde hakların hepsini geri alalım.
Örnek 5:
“anemos1” ve “anemos2” kullanıcılarından INSERT ve SELECT işlemlerine ait
yetki verme yetkisini geri alalım.
Örnek 6:
“anemos1” ve “anemos2” kullanıcılarından tüm işlemlerin yetki verme yetkisini geri alalım.
ADO ile;
Interactive SQL (isql.exe) ile;
1 - ) KULLANICI HESAPLARI:
Yetkilendirme dışında kullanıcı hesapları ekleme, silme, güncelleme işlemleri Firebird araçlarından
“gsec.exe” ile yapacağız. Bu işlemi yapma hakkı admine aittir. Varsayılan admin hesabı “SYSDBA” dır.
Ve bu ayarlar “security2.fdb” içinde saklandığı gibi bu dosyaya erişim hakkı yoktur.
Firebird, şifrenin soldan 8 karakterini dikkate alır. Yani “masterkey” 9 olduğu halde, “masterke” i dikkate
alır. Yazmanın anlamı yoksa bile “masterket”, “masterkef”, “masterkez” vb. hepsi geçerli olur.
Ayrıca büyük-küçük harf duyarlılığı yoktur.
Syntax:
GSEC -user SYSDBA -password masterkey <command> <options>
Commands
Kod:
di[splay] Displays all users
di[splay] <username> Displays all information for the given user
a[dd] <username> -pw <password> [options] Add a new user
mo[dify] <username> [options] Modify user
de[lete] <username> Delete user
h[elp] Display help
? Display Help
q[uit] Quit interactive mode
z Display GSEC version numberOptions
Kod:
-pa[ssword] <password> Password of the user who is performing the change
-user <username> User name of the user who is performing the change
-pw <password> Password of target user (or new password)
-fname <first name> Target user's first name
-mname <middle name> Target user's middle name
-lname <last name> Target user's last name“anemos” kullanıcı hesabı ekleyelim ve şifresi “excel” olsun.
Ekleme anahtarı “-add” dir. Kısaca, “-a” kullanabilirsiniz.
Kod:
Sub Kullanici_Ekle()
Dim GSEC As String
GSEC = "C:\Program Files\Firebird\Firebird_2_0\bin\gsec.exe "
Shell GSEC & "-user SYSDBA -password masterkey -add anemos -pw excel"
End SubEk option olarak, adı, ikinci adı(varsa) ve soyadı da eklemek mümkün. Bilgi amaçlıdır.
Kod:
Sub Kullanici_Ekle()
Dim GSEC As String
GSEC = "C:\Program Files\Firebird\Firebird_2_0\bin\gsec.exe "
Shell GSEC & "-user SYSDBA -password masterkey -add anemos -pw excel " & _
"-fname Yusuf -mname Ziya -lname Ozturk"
End Subb - ) Mevcut Kullanıcı Hesabını Silme:
Silme anahtarı “-delete” dir. Kısaca “-de” de kullanabilirsiniz.
Kod:
Sub Kullanici_Sil()
Dim GSEC As String
GSEC = "C:\Program Files\Firebird\Firebird_2_0\bin\gsec.exe "
Shell GSEC & "-user SYSDBA -password masterkey -delete anemos"
End Subc - ) Mevcut Kullanıcı Hesabını Güncelleme:
Şifre değiştirme işlemi bu yolla gerçekleştirirsiniz. Güvenlik için “SYSDBA” nın şifresini de değiştirin.
Güncelleme anahtarı “-modify” dir. Kısaca, “-mo” olarak kullanabilirsiniz.
SYSDBA’ nın şifresini “excel” olarak değiştirelim.
Kod:
Sub Kullanici_Guncelle()
Dim GSEC As String
GSEC = "C:\Program Files\Firebird\Firebird_2_0\bin\gsec.exe "
Shell GSEC & "-user SYSDBA -password masterkey -modify SYSDBA -pw excel"
End SubAlıntı: Veritabanını ‘SYSDBA’ oturumundan korumak için, yeni bir hesap eklenir. ArdındanAlıntı kaynağı : http://www.delphiturkiye.com/
bu yeni hesap ile oluşturulan veritabanına yine bu hesap ile oturum açtıktan sonra
‘SYSDBA’ adında yetkisiz bir ‘Role’ eklenir.
Bu işlemden sonra veritabanından ‘Role’ silinene kadar ‘SYSDBA’ ile oturum açılamayacaktır.
Role oluşturmak için,(ayrıntı aşağıdadır)
Kod:
Cn.Execute "CREATE ROLE role_adı;"2 - ) KULLANICI HAKLARI (GRANT & REVOKE ):
Bir kullanıcı hesabı eklemek, ona veritabanında istediği her şeyi yapabileceği anlamına gelmez. Neleri
yapacağını (GRANT) neleri yapamayacağını (REVOKE) tanımlamak gerekir. Varsayılan, yetkisizdir.
Her tablo(nesne) için ayrı ayrı SELECT, INSERT, UPDATE, DELETE, EXECUTE (procedure) işlem
hakkı verilir.*
Bu haklar SQL ile verilir ya da alınır.
*Muhtemel hata: GRANT INSERT, SELECT ON Tablo1, Tablo2 TO anemos;
Kullanıcıya Verebileceğiniz Haklar:
Kod:
Insert = Kayıt ekleme hakkı
Update = Kayıtları güncelleme hakkı
Delete = Kayıtları silme hakkı
Select = Kayıtları seçme hakkı
Execute = Stored Procedureleri çalıştırma hakkı
References = Primary / Foreign key gibi özelliklere bakabilme hakkı.
All = Yukarıdaki hakların tümünü tek seferde vermenizi sağlara - ) Kullanıcı Hesabına Yetki Verme (GRANT):
Örnek 1:
“anemos” kullanıcısına “Tablo1” üzerinde kayıt girme ve okuma hakkı verelim.
Kod:
GRANT INSERT, SELECT ON Tablo1 TO anemos;Örnek 2:
“anemos1” ve “anemos2” kullanıcılarına “Tablo1” üzerinde kayıt girme ve okuma hakkı verelim.
Kod:
GRANT INSERT, SELECT ON Tablo1 TO anemos1, anemos2;PUBLIC ??
Public, kullanıcıların tamamını (Admin hariç) ifade eder. Eğer Public’e yetki verildiyse kullanıcıların
hiçbir yetki verilmese bile tablo veya diğer nesneler üzerinde işlem yapabilme hakkı olur.
Örnek 3:
Her bağlanacak kullanıcıya (PUBLIC) “Tablo1” üzerinde kayıt girme
ve okuma hakkı verelim.
Kod:
GRANT INSERT, SELECT ON Tablo1 TO PUBLIC;Örnek 4:
Her bağlanacak kullanıcıya (PUBLIC) “Tablo1” üzerinde hakların hepsini vermekle birlikte, onlara hak verme yetkisi de verelim.
Kod:
GRANT ALL Tablo1 TO PUBLIC WITH GRANT OPTION;ADO ile;
Kod:
Cn.Execute "GRANT ALL Tablo1 TO PUBLIC WITH GRANT OPTION;"Interactive SQL (isql.exe) ile;
Kod:
Sub GRANT_Yetki_Ver()
Dim ISQL As String
ISQL = "C:\Program Files\Firebird\Firebird_2_0\bin\isql.exe "
Open "C:\Yetki.sql" For Output As #1
Print #1, "CONNECT 'C:\Test.fdb' USER 'sysdba' PASSWORD 'masterkey';"
Print #1, "GRANT ALL"
Print #1, "ON Tablo1"
Print #1, "TO anemos1, anemos2;"
Print #1, "DISCONNECT 'C:\Test.fdb';"
Close #1
Shell ISQL & "-i C:\Yetki.sql"
End SubROLE ??
Role, kullanıcılara tek tek yetki verme işlemini kısaltır. Örneğin bir veritabanındaki tüm tablolara
veya diğer nesnelere erişim hakları tek bir Role’e atanır. Yeni kullanıcı eklendiğinde de kullanıcıya
bu Role atanarak işlem biter. Farklı hakları içeren birden fazla Role tanımlamanız da mümkündür.
Role’ün faydasını büyük veritabanında görebilirsiniz. Örneğin 70 tablodan oluşan bir veritabanı ve
300 kullanın bağlanacağını düşünün. Bu da, en fazla 300 x 50 = 15.000 hak verme işlemi demektir.
Bunun yerine ör: 10 Role tanımlanabilse en fazla 300 x 10 = 3.000 işlemde tamamlanır.
Yeni Role;
Kod:
CREATE ROLE role1;Role Silme;
Kod:
DROP ROLE role1;Role’e Yetki Verme;
Kod:
GRANT ALL ON Tablo1 TO role1;Role’ü Kullanıya Atama;
Kod:
GRANT role1 TO anemos1, anemos2;b - ) Kullanıcı Hesabından Yetkiyi Alma (REVOKE):
Küçük ayrıntılar dışında GRANT ile kullanımı aynıdır. Kullanıcı isimlerini belirtirken “TO”
kullanılırken, yerini “FROM” alacaktır.
Yukarıdaki örnekleri REVOKE olarak uygulayalım.
Örnek 1:
“anemos” kullanıcısından “Tablo1” üzerinde kayıt girme ve okuma hakkını alalım.
Kod:
REVOKE INSERT, SELECT ON Tablo1 FROM anemos;Örnek 2:
“anemos1” ve “anemos2” kullanıcılarından “Tablo1” üzerinde kayıt girme ve okuma hakkını alalım.
Kod:
REVOKE INSERT, SELECT ON Tablo1 FROM anemos1, anemos2;Örnek 3:
Her bağlanacak kullanıcıdan (PUBLIC) “Tablo1” üzerinde kayıt girme
ve okuma hakkını alalım.
Kod:
REVOKE INSERT, SELECT ON Tablo1 FROM PUBLIC;Örnek 4:
Her bağlanacak kullanıcıdan (PUBLIC) “Tablo1” üzerinde hakların hepsini geri alalım.
Kod:
REVOKE ALL Tablo1 FROM PUBLIC;Örnek 5:
“anemos1” ve “anemos2” kullanıcılarından INSERT ve SELECT işlemlerine ait
yetki verme yetkisini geri alalım.
Kod:
REVOKE GRANT OPTION FOR INSERT, SELECT FROM anemos1,anemos2;Örnek 6:
“anemos1” ve “anemos2” kullanıcılarından tüm işlemlerin yetki verme yetkisini geri alalım.
Kod:
REVOKE GRANT OPTION FOR ALL FROM anemos1,anemos2;ADO ile;
Kod:
Cn.Execute "REVOKE ALL Tablo1 FROM PUBLIC;"Interactive SQL (isql.exe) ile;
Kod:
Sub REVOKE_Yetki_Gerial()
Dim ISQL As String
ISQL = "C:\Program Files\Firebird\Firebird_2_0\bin\isql.exe "
Open "C:\Yetki.sql" For Output As #1
Print #1, "CONNECT 'C:\Test.fdb' USER 'sysdba' PASSWORD 'masterkey';"
Print #1, "REVOKE ALL"
Print #1, "ON Tablo1"
Print #1, "FROM anemos1, anemos2;"
Print #1, "DISCONNECT 'C:\Test.fdb';"
Close #1
Shell ISQL & "-i C:\Yetki.sql"
End Sub
