31 Ocak 2011 Pazartesi

Linked Server ile Oracle tablolarını sorgulama


--öncelikler sunucumuzun oracle''a erişim bilgisini alacağı oracle TNS name bilgilerini alacağı
-- dosyayı düzenliyoruz...

/*
 
# TNSNAMES.ORA Network Configuration File: F:\oracle\ora92\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.

 ORAKIL.DOMAIN.ORG =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = SRVORAKL)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ORAKIL)
    )
  )



*/


-- sonra SQL tarafında ya arayüzü kullarak  Server Objects --> Linked Servers kısmında ya da aşağıdaki T-SQL cümleleri ile
-- linked sunucuyu tanımlıyoruz...


EXEC master.dbo.sp_addlinkedserver @server = N'OracleSunucu'
, @srvproduct=N'Oracle 9i', @provider=N'MSDAORA', @datasrc=N'ORAKIL'

-- sonrada bu sunucuya bağlantı için kullanılacak remoteuser=uzak kullanıcıyı tanımlıyoruz...

T-SQL ile Active Directorydeki kullanıcı bilgilerini sorgulama

Active Directorydeki (aktif dizin = AD) kullanıcı bilgilerini sorgulama

lokal portal yapılarında belli kullanıcı bilgilerini AD ye yazmak ve portale giriş yapan kullanıcının
AD kullanıcı adından diğer bilgilerine erişmek oldukça pratik bir yoldur.
bunun için active directorye .net kodları ile erişebiliriz ancak olayı sql tarafından yaparak
sql tarafındaki  prosedürlerimizdende kullanabilmek istersek bunun için linked server ve openquery yapılarını
kullanacağız..


-- öncelikle AD sorgusu yapabilecek şekilde bir linked server ekliyoruz...

sp_addlinkedserver 'ADSI', 'Active Directory Service Interfaces', 'ADSDSOObject', 'adsdatasource'

-- sonra AD ldap sorgusu yapmaya yetkili bir kullanıcı adı ve şifre girirek login ekliyoruz

EXEC sp_addlinkedsrvlogin @rmtsrvname = N'ADSI', @locallogin = NULL , @useself = N'False',@rmtuser = N'domain\user1', @rmtpassword = N'şifre'

--- daha sonra openQuery  kullanabilmek varsayılan olarak kapalı olduğu için bunu açmak için
-- aşağıdaki gibi konfigurasyonda bazı değişiklikler yapıyoruz...

sp_configure 'show advanced options', 1
reconfigure with override

sp_configure 'Ad Hoc Distributed Queries', 1
reconfigure


varsayalım ki  inovasyon.org  diye bir domain  adımız var AD kısmında..

aşağıdaki gibi bir sorgu ile AD den belli bilgileri çekebiliriz..

MSSQLSERVER veri güvenliği - 4

Microsoft  SQL  Veritabanı sunucusu (MSSQLSERVER) veri kriptolama ve veri dosyası kriptolama
Bölüm 4 -  Son
TDE - Transparent Data Encription

(instancedan bağımsıs      arkaplan veri dosyası kriptolama)


CREATE DATABASE TDESifrelemeTestDB

GO

use TDESifrelemeTestDB
go

Create Table tblPersonel

(

      Id INT Primary Key IDENTITY,

      Ad VARCHAR(20)   
      ,Soyad varchar(20)
      ,TCKimlikNo bigint
      
)


INSERT INTO [tblPersonel]   VALUES ('Fatih','ÜNAL',12345678901)

INSERT INTO [tblPersonel]  VALUES ('Mehmet','ÜNAL',12345678902)

go



 -- master veritabanını seçerek önce master key oluşturup sonra 
 -- bir sunucu sertifikası oluşturuyoruz

MSSQLSERVER veri güvenliği - 2

Microsoft  SQL  Veritabanı sunucusu (MSSQLSERVER) veri kriptolama ve veri dosyası kriptolama
Bölüm 2

HASHBYTES ile veri kriptolama

sql2005 ile birlikte gelen bir fonksiyon.
Bu yöntemde kriptolanan verinin orjinal haline artık ulaşamayız, ancak sadece
verdiğimiz değeride aynı yöntemle kriptolayarak karşılaştırma yapabiliriz.

 HASHBYTES(<KRIPTO METODU>,<VERI>)

bu fonksiyonda <KRIPTO METODU> alanına  md5,sha,sha1 gibi değerler gelebilir.
bunlar bilinen kriptolama metodlarıdır.  md5 çok güvenli olmayan bir yöntemdir.
çünkü kaydedilmiş hash''li veri bilinince internetten kolayca bulunabilecek hash tabloları
yardımı ile gerçek veri oluşturulabilir. o yüzden burada daha güçlü olan sha1 gibi
bir metodu kullanılması tavsiye edilir.

  hashlenendeger= hashbytes(sha1,'gizli veri')
  bizimhasdegeri=hashbytes(sha1,'denenen değer')
 
  evet yukarıdaki gibi gerçek veri hashli duruyor sistemde, bu değer ile
  bizim girdiğimiz değerin aynı metod ile hash''lenmesi sonucu oluşan hash''
  değeri aynı ise 2 değer birbirine eşittir. yukarıdaki hash değerleri farklı çıkacaktır tabi.
 

 gelelim demomuza...

MSSQLSERVER veri güvenliği - 3

Microsoft  SQL  Veritabanı sunucusu (MSSQLSERVER) veri kriptolama ve veri dosyası kriptolama
Bölüm 3

ENCRYPTBYPASSPHRASE  fonksiyonu ile Triple-DES  (3DES) kriptolama

evet bu yöntemde bizim tarafımızdan verilen bir değer kriptolama anahtarı
olarak kullanılır. hashbytes yöntemine göre daha sağlamdır. ancak kriptolama
sırasında kullandığımız gizli kelimeyi unutursak verilerimizi bir daha çözemeyiz.



daha önceki örneğimizde olduğu gibi yine bir kullanıcı tablosu kullancağız.
bu sefer şifrelerimizi  encryptbypassphrase ile kriptolayıp
decryptbypassphrase ile de-kripto edeceğiz.

28 Ocak 2011 Cuma

MSSQLSERVER veri güvenliği - 1

Microsoft  SQL  Veritabanı sunucusu (MSSQLSERVER) veri kriptolama ve veri dosyası kriptolama
Bölüm 1

SQLServer 2005 ile birlikte hassas verilerimizi sql sunucuda tutabilmemiz için gerekli kriptolama mekanizmaları gelmeye başladı.  Sql2005 ile birlikte gelen   MASTER KEY, SYMMETRIC KEY ,  HASHBYTES , ENCRYPTBYPASSPHRASE DECRYPTBYPASSPHRASE, ENCRYPTBYKEY, DECRYPTBYKEY gibi ifadeler  bizim verilerimizi kriptolu bir şekilde saklamamız için gerekli imkanları verdi.   Ancak mdf ve ldf dosyalarımızın taşınıp kolayca başka bir  sunucuda  attach edilebilmesi, backup dosyalarımızın yine başka sunuculara kolayca restore edilebilmesi yinede çok güvenli olmadığımızın göstergesi idi. 
SQL2008 ile birlikte transparent veri  kriptolama (TDE) geldi. Böylece biz sql instance’ında verilerimizi kriptolamasak bile. Gerekli ayarlamaları yaptıktan sonra veri dosyalarımızı (mdf,ldf)  ve yedekleme dosyalarımız (backup) artık kriptolu bir şekilde diskte tutulabilmekyiz.  Böylece bu dosyalarımızı alıp giden birisi sertifikamız ve şifresini bilmediği sürece dosyalarımızı  atach veya restore ile kendi sistemine takıp kullanamayacaktır.

Şimdi bu bahsettiğimiz  kriptolama yöntemlerini tek tek demolar üzerinden inceleyelim.

27 Ocak 2011 Perşembe

interfaceler i nasıl kullanırız..

bir class yazalım  3 tane sık kullanılan interface'i inherit etsin.. IComparable,ICloneable,IDisposable.
  Bu interfacelerin zorunlu kıldığı birer methodu implement etmek zorunda kalıyoruz bu durumda....  CompareTo , Clone  ve Dispose


class Personel:IComparable,ICloneable,IDisposable
    {

        public string Ad { get; set; }
        public string Soyad { get; set; }
        public int Yas { get; set; }


        public int CompareTo(object obj)
        {

            Personel p = (Personel)obj;

            return this.Ad.CompareTo(p.Ad);

        }

        public object Clone()
        {
            return this.MemberwiseClone();
        }

        public void Dispose()
        {
            GC.SuppressFinalize(this);
        }
 }




sonra ICompare'in zorunlu kıldığı CompareTo  sayesinde sınıfımızdan türettiğimiz objemizi  Sort edebiliyoruz.
 

26 Ocak 2011 Çarşamba

kolay not tutucu uygulama

 (1 satır kod ama faydalı)

bir yandan bir nota bakarken bir taraftanda başka bir uygulamaya o şeyleri yazmaya çalıştığınız olmuştur. bu işi pratik ve kolay yapmanızı sağlayan basit ama faydalı bir uygulama. aşağıdaki linkten indirin kullanın.

NotTutucuPencere

Vbscript popup takvim


Vbscript ile hazırlanmış bir tarih ekleme (takvim popup) uygulaması


aşağıdaki linkdeki rar dosyada örnek kullanımı da gösterir şekilde uygulamayı bulabilirsiniz.

 jqOyun