Firebird : Kullanıcılar ve Yetkilendirme
#1
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


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 number

Options


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
a - ) Yeni Kullanıcı Hesabı Ekleme:

“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 Sub



Ek 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 Sub

b - ) 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 Sub

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.



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 Sub
İpucu:


Alıntı: Veritabanını ‘SYSDBA’ oturumundan korumak için, yeni bir hesap eklenir. Ardından
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.
Alıntı kaynağı : http://www.delphiturkiye.com/

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ğlar

a - ) 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 Sub

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;

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



  Alıntı
Bu mesajı beğenenler:


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  Firebird Store procedure le Bul ve Değiştir AhmetNuri 2 3.309 26-06-2022, 00:20
Son Mesaj: Zeki Gürsoy
  Firebird : Kurulum ve Connection Zeki Gürsoy 9 16.031 21-04-2021, 15:13
Son Mesaj: sarsak
access-sql-14 Firebird : Yürüyen Bakiye Uygulaması Zeki Gürsoy 16 14.859 12-08-2015, 14:12
Son Mesaj: akuyumcu63
  Firebird Aynı Kayıtları bul ve sil AhmetNuri 0 3.198 12-10-2012, 20:52
Son Mesaj: AhmetNuri
  firebird ile listelenmiş verinin kaynak tablosunu değiştirme yardım! muratxx5 1 2.707 21-05-2012, 00:05
Son Mesaj: Zeki Gürsoy
  Firebird otmatik loglama (Trigger Level Loging) AhmetNuri 6 8.648 26-03-2012, 01:31
Son Mesaj: Zeki Gürsoy
  Firebird Veritabanında olan procedure lar nasıl gizlenir softdestek 8 6.737 19-03-2012, 21:40
Son Mesaj: softdestek
  Firebird : DateDiff (Excel ETARİHLİ fonk. birebir kopyası) Zeki Gürsoy 0 4.263 21-02-2012, 02:58
Son Mesaj: Zeki Gürsoy

Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 2 Ziyaretçi