Her Veritabanı Yöneticisinin Bilmesi Gereken 6 SQL Server Güvenliği Temelleri
Çok fazla veri ihlali, zayıf güvenlikli veritabanı sunucularından kaynaklanmaktadır. Microsoft SQL Server popüler bir kurumsal çözümdür ancak anlaşılması ve yapılandırılması da karmaşıktır. Sunucu verilerinizi koruma altında tutmak için bilmeniz gereken 6 SQL Server güvenlik özelliği.
1. SQL Server Kimlik Doğrulaması ve Windows Kimlik Doğrulaması
Microsoft SQL Server iki kimlik doğrulama seçeneğini destekler:
- Windows Kimlik Doğrulaması, kullanıcıların SQL'e bağlanmadan önce kimliklerini doğrulamak için Active Directory'yi (AD) kullanır. Önerilen kimlik doğrulama modudur çünkü AD, kuruluşunuzdaki uygulamalara şifre politikalarını ve kullanıcı ve grup erişimini yönetmenin en iyi yoludur. .
- SQL Server Kimlik Doğrulaması, kullanıcı adlarını ve şifreleri veritabanı sunucusunda depolayarak çalışır. Active Directory'nin bulunmadığı durumlarda kullanılabilir.
SQL Server ve Windows Kimlik Doğrulamasını aynı anda kullanabilirsiniz (karma mod), ancak mümkün olduğunda yalnızca Windows Kimlik Doğrulamasını kullanın.
SQL Server Kimlik Doğrulamasını kullanmanız gerekiyorsa, varsayılan sa hesabının devre dışı bırakıldığından veya bu hesap genellikle bilgisayar korsanları tarafından hedeflendiğinden, sık sık değiştirilen güçlü bir parolaya sahip olduğundan emin olun. Sa (etkinleştirilmişse) dahil olmak üzere SQL Server hesapları, SQL Server Management Studio hizmeti veya ALTER LOGIN Transact-SQL (T-SQL) komutu kullanılarak yönetilebilir.
2. Sunucu Girişleri ve Rolleri
Seçtiğiniz kimlik doğrulama yönteminden bağımsız olarak, SQL örneklerine yapılandıracağınız iki tür oturum açma vardır: kullanıcı oturum açma bilgileri ve sunucu oturum açma bilgileri. Bir sonraki bölümde kullanıcı oturum açma bilgilerini tartışacağım. Sunucu oturum açma işlemleri, kullanıcıların bir SQL Server örneğiyle bağlantı kurmasına olanak tanır. Her sunucu oturum açma işlemine, örnek üzerinde belirli eylemleri gerçekleştirmesine olanak tanıyan bir veya daha fazla sunucu rolü atanır. Varsayılan olarak, sunucu oturum açma işlemlerine, örneğe temel erişim sağlayan genel sunucu rolü atanır. Mevcut diğer roller arasında toplu yönetici, sercurityadmin, dbcreator ve sunucu yöneticisi yer alır.
Sunucu oturum açma bilgileri T-SQL veya SQL Server Management Studio kullanılarak oluşturulabilir. Sunucu oturumu oluştururken varsayılan bir veritabanı belirtmeniz gerekir. Sunucu oturum açma işlemleri, varsayılan veritabanındaki kullanıcı oturum açma bilgileri ile ilişkilendirilir. Bir sunucu oturum açma adı ile ilişkili kullanıcı oturum açma adının eşleşmesinin gerekmediğini belirtmekte fayda var. Varsayılan veritabanında ilişkili bir kullanıcı nesnesi yoksa, oturum açma bilgilerine atanan sunucu rolünün tüm veritabanlarına erişimi olmadığı sürece, sunucu oturum açma bilgilerinin erişimi reddedilecektir. Sunucu oturum açma bilgileri bir veya daha fazla veritabanındaki bir kullanıcıyla eşlenebilir ve sunucu oturum açma bilgilerini ayarlarken kullanıcılar oluşturabilirsiniz.
3. Veritabanı Kullanıcıları, Şema ve Roller
Kullanıcı girişi oluştururken, ilişkilendirileceği veritabanını, kullanıcı adını ve başka bir şema belirtilmediği takdirde kullanıcının oluşturacağı tüm nesnelere uygulanacak varsayılan şemayı belirtmeniz gerekir. SQL Server şemaları, diğer veritabanı nesnelerinden mantıksal olarak ayrılmış, tablolar ve görünümler gibi nesnelerin koleksiyonlarıdır; bu, erişimi yönetmeyi kolaylaştırır ve bir veritabanında T-SQL komutlarını çalıştırırken şema adını kullanmaya gerek olmadığı anlamına gelir.
Kullanıcı tanımlı nesneler için varsayılan şema dbo'dur. Diğer varsayılan şema sys'dir; tüm sistem nesnelerinin sahibidir.
Sunucu oturum açma işlemlerine sunucu rolleri atandığı gibi, kullanıcı oturum açma işlemlerine de veritabanlarındaki hakları atayan veritabanı rolleri atanır. Sunucu veritabanı rolleri arasında public, db accessadmin, db sahibi ve db güvenlik yöneticisi bulunur.
4. Güvenli Öğeler ve İzinler
Sunucu veya veritabanı rolleri kullanıcıya çok fazla veya çok az erişim sağladığında, bunun yerine bir veya daha fazla güvenliği atayabilirsiniz. Güvenli hale getirilebilir öğeler sunucu, şema ve veritabanı düzeylerinde bulunur; bunlar sunucu ve kullanıcı oturum açma işlemleriyle erişilebilen SQL Server kaynaklarıdır. Örneğin, güvenli hale getirilebilir öğeleri kullanarak, yalnızca belirli bir tabloya veya işleve sunucu oturum açma erişimi verebilirsiniz; bu, oturum açma işlemine bir rol atayarak mümkün olmayan bir ayrıntı düzeyidir.
İzinler, SQL Server güvenliğine erişim izni vermek için kullanılır. Yalnızca verileri görüntüleme veya yalnızca verileri değiştirme izni verebilirsiniz. GRANT, DENY ve REVOKE T-SQL ifadeleri izinleri yapılandırmak için kullanılır.
Ancak izinler karmaşık olabilir. Örneğin, güvenli bir öğe üzerinde DENY izinlerinin ayarlanması, daha düşük düzeyli nesnelerde izin devralınmasını önler. Ancak sütun düzeyindeki GRANT izni, nesne düzeyinde DENY'yi geçersiz kılar; dolayısıyla, bir tablodaki DENY izni, bir sütundaki GRANT izni tarafından geçersiz kılınır. İzinler karmaşık olabileceğinden, etkili izinleri her zaman T-SQL kullanarak kontrol etmeye değer. Aşağıdaki komut, JoeB'nin bir nesneye, bu durumda 'çalışanlar' adı verilen bir tabloya verilen izinlerini belirler.
fn_my_permissions('joeb', çalışanlar)'DAN * SEÇİN;
GİT
5. Veri Şifreleme
SQL Server birden fazla şifreleme seçeneğini destekler:
- Güvenli Yuva Katmanı (SSL) , tarayıcı ile sunucu arasındaki internet trafiğinin güvenliğinin sağlanmasına benzer şekilde, sunucu örneği ile istemci uygulaması arasında dolaşan trafiği şifreler. Ayrıca istemci, sunucunun sertifikasını kullanarak sunucunun kimliğini doğrulayabilir.
- Şeffaf Veri Şifreleme (TDE), diskteki verileri şifreler. Daha spesifik olarak, tüm verileri ve günlük dosyalarını şifreler. TDE etkinleştirildiğinde istemci uygulamalarının değiştirilmesi gerekmez
- Yedek Şifreleme, TDE'ye benzer ancak etkin veriler ve günlük dosyaları yerine SQL yedeklerini şifreler.
- Sütun/Hücre Düzeyinde Şifreleme, belirli verilerin veritabanında şifrelenmesini ve bellekte depolandığında bile bu şekilde kalmasını sağlar. Verilerin şifresi bir işlev kullanılarak çözülür ve istemci uygulamalarında değişiklik yapılması gerekir.
- Always Encrypted, istemci uygulamalarında herhangi bir değişiklik gerektirmediği için Sütun/Hücre Düzeyinde Şifrelemede yapılan bir iyileştirmedir; veriler ağ üzerinden, bellekte ve diskte şifrelenmiş olarak kalır. Ayrıca hassas verileri ayrıcalıklı SQL Server kullanıcılarının meraklı gözlerinden de korur. Ancak bu şifreleme seçeneğiyle bazı sorunlarla karşılaşabilirsiniz; SQL Server verileri okuyamadığı için bazı indeksleme ve işlevler çalışmaz.
6. Satır Düzeyinde Güvenlik
Satır Düzeyinde Güvenlik (RLS), kuruluşların bir veritabanındaki satırları kimlerin görebileceğini kontrol etmesine olanak tanır. Örneğin, kullanıcıları yalnızca müşterileri hakkında bilgi içeren satırları görecek şekilde kısıtlayabilirsiniz.
RLS üç ana bölümden oluşur: yüklem işlevi, güvenlik yüklemi ve güvenlik politikası. Yüklem işlevi, veritabanı sorgusunu yürüten kullanıcının mantığa dayalı bir satıra erişip erişemeyeceğini kontrol eder. Örneğin, sorguyu çalıştıran kullanıcının kullanıcı adının satırın sütunlarından birindeki alanla eşleşip eşleşmediğini kontrol edebilirsiniz. Bir yüklem işlevi ve güvenlik yüklemi, bir sorgunun sonuçlarını hatalara yol açmadan sessizce filtrelemek veya satır erişimi reddedilirse bir hatayla engellemek için bir işlevde birlikte tanımlanır. Son olarak, bir güvenlik politikası işlevi bir tabloya bağlar.