SQL'de Kullanıcılar ve Roller için Erişim Denetimleri

tüm ilişkisel Veritabanı Yönetim Sistemleri veri kaybı, veri bozulması veya veri hırsızlığı tehditlerini en aza indirmek için tasarlanmış bir tür içsel güvenlik mekanizması sağlar. tarafından sunulan basit parola korumasına kadar uzanır. Microsoft Erişimi gibi gelişmiş ilişkisel veritabanları tarafından desteklenen karmaşık kullanıcı/rol yapısına kehanet veMicrosoft SQL'i Sunucu. Bazı güvenlik mekanizmaları, aşağıdakileri uygulayan tüm veritabanlarında ortaktır:Yapılandırılmış sorgu dili.

Kullanıcı Düzeyinde Güvenlik

Sunucu tabanlı veritabanları, bir kullanıcı bilgisayar işletim sistemlerinde kullanılana benzer bir kavramdır. içinde bulunan kullanıcı/grup hiyerarşisine aşina iseniz Microsoft Windows NT ve Windows 2000'de SQL Server ve Oracle tarafından desteklenen kullanıcı/rol gruplamalarının benzer olduğunu göreceksiniz.

Veritabanınıza erişimi olan her kişi için ayrı veritabanı kullanıcı hesapları oluşturun.

Birkaç farklı kişi tarafından erişilebilen genel hesaplar sağlamaktan kaçının. İlk olarak, bu uygulama bireysel sorumluluğu ortadan kaldırır - bir kullanıcı veritabanınızda bir değişiklik yaparsa (diyelim ki kendisine 5.000 dolarlık bir zam verirse), denetim kullanarak bunu belirli bir kişiye kadar takip edemezsiniz. kütükler. İkinci olarak, belirli bir kullanıcı kuruluşunuzdan ayrılırsa ve onun erişimini veritabanından kaldırmak isterseniz, tüm kullanıcıların güvendiği parolayı değiştirmelisiniz.

instagram viewer

Bir web geliştiricisi
OstapenkoOlena/Getty Resimleri

Kullanıcı hesapları oluşturma yöntemleri platformdan platforma değişir ve tam prosedür için DBMS'ye özel belgelerinize başvurmanız gerekir. Microsoft SQL Server kullanıcıları, aşağıdakilerin kullanımını araştırmalıdır. sp_adduser saklı yordam. Oracle veritabanı yöneticileri, KULLANICI OLUŞTUR komut kullanışlı. Alternatif kimlik doğrulama şemalarını da araştırmak isteyebilirsiniz. Örneğin, Microsoft SQL Server, Windows NT Integrated Security kullanımını destekler. Bu şema altında, kullanıcılar Windows NT kullanıcı hesapları tarafından veritabanına tanımlanır ve veritabanına erişmek için ek bir kullanıcı kimliği ve parola girmeleri gerekmez. Bu yaklaşım, veritabanı yöneticileri arasında popülerdir çünkü hesap yükünü değiştirir. ağ yönetim personeline yönetim ve tek oturum açma kolaylığı sağlar son kullanıcı.

Rol Düzeyinde Güvenlik

Az sayıda kullanıcıya sahip bir ortamdaysanız, muhtemelen kullanıcı hesapları oluşturmanın ve bunlara doğrudan izin atamanın ihtiyaçlarınız için yeterli olduğunu göreceksiniz. Ancak, çok sayıda kullanıcınız varsa, hesapları ve uygun izinleri sürdürmek sizi bunaltacaktır. Bu yükü hafifletmek için ilişkisel veritabanları roller. Veritabanı rolleri, Windows NT gruplarına benzer şekilde çalışır. Kullanıcı hesapları rollere atanır ve izinler, bireysel kullanıcı hesapları yerine bir bütün olarak role atanır. Örneğin, bir DBA rolü oluşturabilir ve ardından idari personelinizin kullanıcı hesaplarını bu role ekleyebilirsiniz. Bundan sonra, sadece role izin atayarak mevcut (ve gelecekteki) tüm yöneticilere belirli bir izin atayabilirsiniz. Bir kez daha, rol oluşturma prosedürleri platformdan platforma değişir. MS SQL Server yöneticileri şunları araştırmalıdır: sp_addrole Oracle DBA'ların kullanması gerekirken saklı yordam ROL OLUŞTUR sözdizimi.

İzin Verme

Veritabanımıza kullanıcıları eklediğimize göre, şimdi izinler ekleyerek güvenliği güçlendirmeye başlamanın zamanı geldi. İlk adımımız, kullanıcılarımıza uygun veritabanı izinlerini vermek olacaktır. Bunu SQL GRANT deyimini kullanarak başaracağız.

İşte ifadenin sözdizimi:

HİBE. 
[AÇIK. 
İÇİN. 
[HİBE SEÇENEĞİ İLE]

Şimdi bu açıklamaya satır satır bakalım. İlk satır, HİBE , verdiğimiz belirli tablo izinlerini belirtmemize olanak tanır. Bunlar, tablo düzeyinde izinler (SELECT, INSERT, UPDATE ve DELETE gibi) veya veritabanı izinleri (CREATE TABLE, ALTER DATABASE ve GRANT gibi) olabilir. Tek bir GRANT deyiminde birden fazla izin verilebilir, ancak tablo düzeyindeki izinler ve veritabanı düzeyindeki izinler tek bir deyimde birleştirilemez.

İkinci satır, AÇIK

Son olarak, dördüncü satır, HİBE SEÇENEĞİ İLE, İsteğe bağlı. Bu satır ifadeye dahil edilirse, etkilenen kullanıcının aynı izinleri diğer kullanıcılara vermesine de izin verilir. İLE GRANT SEÇENEĞİ, izinler bir role atandığında belirtilemez.

Örnek Veritabanı Hibeleri

Birkaç örneğe bakalım. İlk senaryomuzda, yakın zamanda müşteri kayıtlarını ekleyecek ve muhafaza edecek 42 veri giriş operatörü grubunu işe aldık. Müşteriler tablosundaki bilgilere erişmeleri, bu bilgileri değiştirmeleri ve tabloya yeni kayıtlar eklemeleri gerekir. Veritabanından bir kaydı tamamen silemezler.

Öncelikle her operatör için kullanıcı hesapları oluşturmalı ve ardından hepsini yeni bir role eklemeliyiz, Veri girişi. Ardından, onlara uygun izinleri vermek için aşağıdaki SQL ifadesini kullanmalıyız:

SEÇ, EKLE, GÜNCELLE. 
AÇIK Müşteriler. 
TO DataEntry. 

Şimdi veritabanı düzeyinde izinler atadığımız bir durumu inceleyelim. DBA rolünün üyelerinin veritabanımıza yeni tablolar eklemesine izin vermek istiyoruz. Ayrıca, diğer kullanıcılara da aynısını yapma izni verebilmelerini istiyoruz. İşte SQL ifadesi:

HİBE OLUŞTURMA TABLOSU. 
DBA'YA. 
HİBE SEÇENEĞİ İLE. 

DBA'larımızın bu izni diğer kullanıcılara atayabilmesini sağlamak için WITH GRANT OPTION satırını eklediğimize dikkat edin.

İzinleri Kaldırma

SQL, önceden verilmiş izinleri kaldırmak için REVOKE komutunu içerir. İşte sözdizimi:

İPTAL [HİBE SEÇENEĞİ]
AÇIK. 
DAN. 

Bu komutun sözdiziminin GRANT komutuna benzer olduğunu fark edeceksiniz. Tek fark, WITH GRANT OPTION öğesinin komutun sonunda değil, REVOKE komut satırında belirtilmesidir. Örnek olarak, Mary'nin daha önce Müşteriler veritabanından kayıtları kaldırma iznini iptal etmek istediğimizi düşünelim. Aşağıdaki komutu kullanırdık:

SİLMEYİ İPTAL EDİN. 
AÇIK Müşteriler. 
Mary'den. 

Microsoft SQL Server tarafından desteklenen ve bahsetmeye değer ek bir mekanizma daha vardır: DENY komutu. Bu komut, bir kullanıcının mevcut veya gelecekteki bir rol üyeliği aracılığıyla sahip olabileceği bir izni açıkça reddetmek için kullanılabilir. İşte sözdizimi:

REDDETMEK. 
AÇIK. 
İÇİN. 
instagram story viewer