Gerekli en az yetki ilkesinin SQL Server 2005’te yansımaları


Microsoft, 2002’den itibaren güvenlik konusunda en fazla yatırım yapan IT vendorlarından biri haline geldi. Güvenlikle ilgili ortaya konulan inisiyatif o boyutlara geldi ki, Bill Gates’in tüm Microsoft’a yayınlanan bir epostasıyla, Windows Server’ın o anki versiyonu üzerindeki tüm çalışmalar durduruldu, geliştirme ve teste katkısı olan tüm yazılımcılar özel bir eğitimden geçirildi ve bunun ardından kod tabanı tekrar incelenerek, daha güvenli bir versiyon oluşturuldu.

Üretime ara verilmesi ve binlerce kişinin eğitilmesi, büyük bir maliyet gibi gözüküyor. Ama belki daha büyük maliyet, Windows Server’ın üzerinde çalışılan versiyonunun Windows Server 2002 değil, Windows Server 2003 olarak çıkması oldu. Bu yeniden ele almanın etkisi, Microsoft’un ana ürünlerinden birinin bir sene daha geç çıkması anlamına geldi ki, bu da Microsoft için önemli bir gelir kaybı oldu.

Ama gerekliydi! Microsoft, 2002’den beri güvenlik açısından çok daha az sorgulanır ve daha saygı duyulur bir firma haline geldi.

Güvenlikle ilgili bu inisiyatifte, önemli ilkelerden biri, “Gerekli en az yetki” idi. Özetle, herhangi bir iş için, kullanıcının sahip olması gereken minimum haklar ne ise, sadece o kadar hakkın verilmesi. IT yönetimi görevleri olanlar, bu kavramı iyi bilir. Adminlerin normal işleri için admin hesaplarıyla giriş yapmamaları senelerdir vurgulanıyor. Ama işin bir de yazılım geliştiricileri etkileyen boyutu var: Geliştiridiğiniz yazılım, yaptığı her işte, gerekli en minimal yetkiler nelerse sadece onları istemeli ve sadece onlarla işini görebilmeli. İşte bu ilke doğrultusunda SQL 2005’te yapılmış bazı düzenlemeler var. Bunlara şöyle bir göz atalım:

Daha Tanecikli İzin Şeması: SQL Server’ın önceki versiyonlarında, SQL Profiler’dan trace oluşturmak gibi basit görevler için bile yönetsel haklar gerekiyordu. SQL Server 2005 çok daha tanecikli bir izin şeması sunar, böylelikle belirli bir görev için gerekli izinler neyse sadece onları atama şansınız olur.

Metadata Güvenliği: SQL Server’ın eski sürümlerinde metadata güvenliği seviyesi düşüktür. Bir veritabanına herhangi bir tür erişimi olan bir kullanıcı tüm veritabanı yapısını görebilir. (Data değil, metadata seviyesinde). SQL Server 2005’te bir kullanıcı, sys.tables gibi bir katalog görünümünü sorguladığında, veritabanı motoru kullanıcı izinlerini sorgular ve sadece kullanıcının üzerinde hak sahibi olduğu nesnelerin metadatasını gösterir.

Belirli Kullanıcılara Şema Atanması: SQL Server’ın önceki versiyonlarında şema kavramı ve kullanıcı kavramı karışık olduğu için, genelde dbo şemasının kullanılması tavsiye edilir ve bu şema kullanılırdı. Bu durum, kullanıcının gereğinde fazla hakka sahip olması gerekliliğini doğuruyordu. SQL Server 2005’te veritabanı nesnelerini şemalar halinde gruplayıp, her şemaya ilgili kullanıcıları sahip olarak atayabilirsiniz. Böylelikle veritabanı seviyesinde oluşan birtakım haklar yerine şema seviyesinde daha kısıtlı haklarla çalışma ortamı sağlamış olursunuz.

Güvenlik Bağlamı Değiştirme (Context Switching): Veritabanı kodunda gerekli en az yetki ilkesini uygulayabilmenizi sağlayan bir özelliktir. Windows tarafındaki run as komutu gibi, SQL Server stored procedure’lerinde özel hak gerektiren kısımları Execute As kullanarak başka bir güvenlik bağlamında çalıştırabilirsiniz. Bu kısım dışında bu daha yüksek seviyede hak kullanılmıyor olacaktır.

Bu yazı SQL Server içinde yayınlandı. Kalıcı bağlantıyı yer imlerinize ekleyin.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s