Serdar Kurtoğlu

Sırılsıklam bir gökyüzü çıktı ağlardan

Masmavi bütün balıkçılar...

Can Yücel










Kullanıcı Adı
Şifre

SQL Server 2005 : Lock, Blocking
Yazdir Yazdir

Veritabanları transaction işlemini gerçekleştirirken locking kullanır. Bu işlemin gerşekleşme süresince ilgili tabalolarda işlem yapılamaz. Bu süre transaction süresi kadardır. Bu süre zarfında işlemler kuyrukta bekler. Bu bekleme sürcine Blocking denir.

Açıklayıcı olması açısından öncelikli olarak blocking sürecinin nasıl oluştuğu ile ilgili bir örnek verelim.

Database üzerinde bir tablomuz olsun. Personel
 
SQL üzerinde bloke olmuş kayıtları çekmek için aşağıdaki sorguyu kullanabiliriz.
 
SELECT pro.spid
,convert(char(12), db.name) db_name
, program_name
, convert(char(12), lg.name) login_name
, convert(char(12), hostname) hostname
, cmd
, pro.status
, pro.blocked
, login_time
, last_batch
, pro.spid
FROM      master..sysprocesses pro
JOIN      master..sysdatabases db ON pro.dbid = db.dbid
JOIN      master..syslogins Lg ON pro.sid = lg.sid
WHERE     pro.blocked <> 0 and pro.dbid = DB_ID('DatabaseAdı')
 

BULK INSERT (OPENROWSET)
Yazdir Yazdir

SQL server 2005 ile birlikte yeni gelen bir özellik olan dosyayı okuma ve onu rowset haline getirip databasede saklama ile ilgili iki örnek ekledim. İlki xml dosya yapısı ikincisi bmp resim dosyası için. Nerelerde mi kullanırız? Günlük döviz kurlarını xml olarak database aktarmada. Isı, ses, tireşim vb cihazların uyarı xml değer dosyalarını database aktarımda, her türlü resim dosyasını databasede saklamak gerektiğinde kullanabilirsiniz. Gerisi hayal gücünüze kalmış.

DECLARE @xml XML;
CREATE TABLE Products(xmlCol XML)

INSERT Products
SELECT
CONVERT(XML, BulkColumn, 2)
FROM OPENROWSET (BULK 'C:\stok.xml', SINGLE_BLOB)Product
SELECT * FROM Products

--------------------------------------------------

CREATE TABLE dbo.Resimlerim
(ResimID int NOT NULL,
bmp varbinary(max) NOT NULL)
GO
INSERT dbo.Resimlerim
(ResimID, bmp)
SELECT 1,
BulkColumn FROM OPENROWSET(BULK'C:\test.bmp', SINGLE_BLOB) AS x
SELECT bmp
FROM Resimlerim

 

SQL 2005 Güvenlik/Veri Şifreleme
Yazdir Yazdir

Başlarken çok bişey yazmaya gerek yok. SQL 2005 ile gelen veri şifreleme işlem basamaklarını anlatacağım.

Not: Şifreleme deyip geçmeyin geri dönüşü olmayan yola girmeyin. Aman dikkat, yedekli çalışın.
. Database Alan Şifreleme işlem basamakları
 
a.     Şifrelencek alan VARBINARY(256) veri tipinde oluşturulur.
 
Örn:
CreateTable MusteriTest
(
 MusId INTPrimaryKeyIDENTITY,
 TelNo VARBINARY(256)   
)
 
b.     Database seviyesinde sertifika oluşturulur.
create master key encryption by password ='password';
c.     Master key kullanılmak üzere açılır.
OPEN MASTER KEY DECRYPTION BY PASSWORD ='password’
 
d.     Sertifika create edilir.
CREATECERTIFICATE Sertifika_Test
      WITH SUBJECT ='Ozel Sifreleme Algoritmasi.',
START_DATE ='07/07/2009'
 
e.     Simetrik Key create edilir.
 
CREATESYMMETRICKEY Key_Test
      WITH ALGORITHM = triple_des,
            identity_value ='password',
            key_source ='password'
            ENCRYPTION BYCERTIFICATE Sertifika_Test
go
 
 
      f.      Sertifikaların backupları alınabilmektedir. Sertifika backup alınırken bir şifre ile alınır. Aynı şifre sertifikayı create edilirken kullanılacaktır.
 
      Örn:
backupcertificate Sertifika_Test tofile='\\ortak\CertificatesBackup.cer'
 with private key(file='\\ortak\CertificatesBackup.pvk',
 encryption by password ='password')
 
g.     Her işlem öncesi (insert, update , select)opensymmetrickey deyimi ile key açılır.
 
opensymmetrickey Key_Test decryption byCERTIFICATE [Sertifika_Test]
 
h.     Her işlem sonrası (insert, update , select) CLOSESYMMETRICKEYdeyimi ile key kapatılır.
 
CLOSESYMMETRICKEY [Key_Test]
 
i.        Her insertlerde ve updatelerde şifreleme aşağıdaki örnekte olduğu gibi kullanılmaktadır.
INSERTINTO [MusteriTest] VALUES(encryptbykey(key_guid('Key_Test'), N'05331234567'))
 
--Açılır
opensymmetrickey Key_Test decryption byCERTIFICATE [Sertifika_Test]
--İlgili kayıtlar çekilir...
SELECT TelNo,
       convert(NVARCHAR(100), decryptbykey( TelNo ))as'TelNo'
FROM   [Musteri]
--kapatılır..
CLOSESYMMETRICKEY [Key_Test]
Copy , paste, F5 (Yani SQL'de New Query açılır, alttaki blok kopyalanır yapıştırılır sonra F5'e basılır.)
 
--Database seviyesinde master key üretilir.
create master key encryption by password ='TEST1234567#TEST12345789';
 
--Sertifika oluşturmadan önce master key open işlemi ile hazır konuma getirilir.
OPEN MASTER KEY DECRYPTION BY PASSWORD ='TEST1234567#TEST12345789'
 
 
CREATECERTIFICATE New_Sertifika_Deneme
     WITH SUBJECT ='Ozel Sifreleme Algoritmasi.',
     START_DATE ='01/22/2010'
 
CREATESYMMETRICKEY New_Key_Deneme
 WITH ALGORITHM = triple_des,
      identity_value ='TEST1234567#TEST12345789',
      key_source ='TEST1234567#TEST12345789'
      ENCRYPTION BYCERTIFICATE New_Sertifika_Deneme
go
 

Veri Sınıflandırma
Yazdir Yazdir

1- Amaç : Veritabanında bulunan bilgiler erişebilirlik, güvenlik ve risk değerleri bazında ölçeklendirmek amaçlı veri sınıflandırma işlemine tabi tutulmalıdır.

2-  Sınıflandırma Tanımı : Sınıflandırma işleminde 5 ayrı kategori kullanılmıştır. Bu kategorilendirme işlemi, verinin ele geçirilmesi halinde olası doğacak riskler göze alınarak hazırlanmıştır. Hazırlanan bu kategorilere göre veritabanında bulunan veriler kategorize edilecektir.

Veri Sınıflandırma Derece
Tanım
Çok Gizli
Elde edilmesi ciddi zararlara sabebiyet verebilcek olan veridir. Çok gizili olarak tanımlanan bu veriler her zaman korunmalıdır ve gizlilik seviyesi çok yüksektir. Örn. kredi kartı, anne kızlık soyadı vb.
Yüksek Gizlilik
Açıklanması veya bilinmesi kritik bilgilerdir. Müşteri telefon, tckno vb.
Özel
Kişinin özlük bilgilerini içerir. Sadece gereki görüldüğünde yetkili kişilerce görüntülenebilinir. Doğum yeri, doğum tarihi, il, ilçe.
Sadece İç Kullanıcı
Sadece iç kullanıcı tarafından görüntülenebilen verilerdir. Ad, soyad, satın alınan ürün vb.
Genel Veri
Elde edilmesi risk teşkil etmeyen, istenildiğinde farklı kaynaklardan da ulaşılabilecek olan bilgilerdir. Duyuru, haber, ilan vb.

 
3- Veri Sınıflandırma Örnek Tablo

Veri Sınfılandırma Örnek Tablo
DB Alan
Derece
Zorunlu
Değiştirilebilirlik
Risk (1-10)
Adı
Sadece İç Kullanıcı
E
H
1
Soyadı
Sadece İç Kullanıcı
E
H
2
Telefon1
Yüksek Gizli
E
E
8
Telefon2
Yüksek Gizli
E
E
8
Faks
Özel
H
E
4
Email
Özel
H
E
5
D.Tarihi
Özel
E
H
5
Cinsiyet
Sadece İç Kullanıcı
E
H
1
Meslek
Sadece İç Kullanıcı
E
E
3
Adres
Özel
E
E
5
İl
Özel
E
E
4
İlçe
Özel
E
E
4
TckNo
Yüksek Gizli
E
H
8
PasaportNo
Yüksek Gizli
E
H
8

 
4- Veri Koruma  : Veri tabanında bulunan çok gizli ve yüksek gizli kategorisindeki veriler veri tabanı seviyesinde şifrelenmelidir. Sistem içinde bulunan kullanıclar hiç bir şekilde bu verilere erişememelidir.
Uygulama üzerindeki tüm işlemler yetki ve rol kısıtlaması ile yürütülmelidir, kullanıcı adı ve şifreler yine database seviyesinde MD5 şifreleme algoritması kullanılarak şifrelenmelidir. Ayrıca sistem üzerinde gerçekleştirilen tüm kullanıcı işlemleri loglanmalıdır.
5- Veri Tabanı BackUp : Veri tabanında bulunan veriler belirli aralıklarla yedeklenerek güvenli ortamlarda saklanmalıdır
 

Copyright © 2008 - Serdar Kurtoğlu