Alıştırma - Veritabanınıza erişebilen kullanıcıları denetleme
Veritabanına ağ üzerinden bağlanabiliyor olsanız bile bu, verilere gerçekten erişim kazanabileceğiniz anlamına gelmez. Katmanlı bir yaklaşımın ardından yalnızca verilere erişmesi gereken kullanıcıların verilere gerçekten erişebildiğinden emin olmak istiyorsunuz. Bu erişim, kimlik doğrulaması ve yetkilendirmenin oynatıldığı yerdir.
Kimlik Doğrulaması
Kimlik doğrulaması, belirli bir kimliği doğrulama sürecidir. Bu kimlik bir kullanıcı, bir sistemde çalışan bir hizmet veya sanal makine gibi bir sistemin kendisi olabilir. Kimlik doğrulama işlemi aracılığıyla, kişinin veya sistemin iddia ettikleri kişi olduğundan emin olursunuz. SQL Veritabanı iki kimlik doğrulama türünü destekler: SQL kimlik doğrulaması ve Microsoft Entra kimlik doğrulaması.
SQL kimlik doğrulaması
SQL kimlik doğrulama yöntemi bir kullanıcı adı ve parola kullanır. Kullanıcı hesapları ana veritabanında oluşturulabilir ve sunucudaki tüm veritabanlarında izinler verilebilir. Ayrıca, veritabanında bağımsız kullanıcılar olarak adlandırılan kullanıcılar oluşturabilir ve yalnızca bu veritabanına erişim verebilirsiniz. Veritabanınız için mantıksal sunucuyu oluşturduğunuzda, kullanıcı adı ve parolayla bir sunucu yöneticisi oturum açması belirttiniz. Bu kimlik bilgilerini kullanarak, bu sunucudaki herhangi bir veritabanında veritabanı sahibi veya dbo olarak kimlik doğrulaması yapabilirsiniz.
Microsoft Entra doğrulaması
Bu kimlik doğrulama yöntemi, Microsoft Entra Id tarafından yönetilen kimlikleri kullanır ve yönetilen ve tümleşik etki alanları için desteklenir. Mümkün olduğunda Microsoft Entra kimlik doğrulamayı (tümleşik güvenlik) kullanın. Microsoft Entra kimlik doğrulaması ile veritabanı kullanıcılarının ve diğer Microsoft hizmetleri kimliklerini tek bir merkezi konumda yönetebilirsiniz. Merkezi kimlik yönetimi, tüm veritabanı kullanıcılarını aynı yerden yönetmenizi sağlar ve izin yönetimini kolaylaştırır. Microsoft Entra kimlik doğrulamasını kullanmak istiyorsanız, Microsoft Entra kullanıcılarını ve gruplarını yönetmesine izin verilen Microsoft Entra yöneticisi adlı başka bir sunucu yöneticisi oluşturmanız gerekir. Bu yönetici normal bir sunucu yöneticisinin gerçekleştirebileceği tüm işlemleri yapabilir.
Yetkilendirme
Yetkilendirme, bir kimliğin bir Azure SQL Veritabanında gerçekleştirebileceği işlemleri belirler. Bu yetkilendirme, doğrudan kullanıcı hesabına ve veritabanı rolü üyeliklerine verilen izinlerle denetlenmektedir. Veritabanı rolü, yönetimi kolaylaştırmak için izinleri birlikte gruplandırmak için kullanılır. Rolün sahip olduğu izinleri vermek için role kullanıcı ekleyin. Bu izinler arasında veritabanında oturum açabilme, tablo okuma ve veritabanından sütun ekleme ve kaldırma özellikleri yer alabilir. En iyi uygulama olarak, kullanıcılarınıza gerekli olan en düşük ayrıcalıkları tanımanız gerekir. Hem SQL hem de Microsoft Entra kullanıcılarına yetkilendirme verme işlemi aynıdır.
Buradaki örnekte, bağlandığınız sunucu yöneticisi hesabı, veritabanı içinde herhangi bir şey yapma yetkisi olan db_owner rolünün bir üyesidir.
Kimlik doğrulama ve yetkilendirme uygulaması
İyi bir yöntem olarak uygulamanız kimlik doğrulaması için ayrılmış bir hesap kullanmalıdır. Bu şekilde uygulamaya verilen izinleri sınırlayabilir ve uygulama kodunun SQL ekleme saldırısına açık olması durumunda kötü niyetli etkinlik risklerini azaltabilirsiniz. Uygulamanızın doğrudan veritabanında kimlik doğrulaması yapmasına olanak tanıyan bir bağımsız veritabanı kullanıcısı oluşturmanızı öneririz. Daha fazla bilgi için bkz. Bağımsız Veritabanı Kullanıcıları - Veritabanınızı Taşınabilir Hale Getirme.
Veritabanı kullanıcılarının kimliklerini merkezi olarak yönetmek ve SQL Server kimlik doğrulamasına alternatif olarak Microsoft Entra kimlik doğrulamasını kullanın.
Bir kullanıcının nasıl ayarlanacağına göz atın ve veritabanına erişim izni verin. Bu durumda, kullanıcınız için SQL kimlik doğrulamasını kullanırsınız, ancak Microsoft Entra kimlik doğrulamasını kullanırsanız işlem temelde aynı olacaktır.
Veritabanı kullanıcısı oluşturma
Erişim vermek için kullanabileceğiniz yeni bir kullanıcı oluşturun.
Cloud Shell'de appServer VM'nizde veritabanınıza yeniden olarak bağlanın
ADMINUSER
.sqlcmd -S tcp:[server-name].database.windows.net,1433 -d marketplaceDb -U '[username]' -P '[password]' -N -l 30
Aşağıdaki komutu çalıştırarak yeni bir kullanıcı oluşturun. Bu kullanıcı, yalnızca market veritabanına erişim izni olan bağımsız bir kullanıcıdır. Parolayı gerektiği gibi ayarlamaktan çekinmeyin, ancak gelecekteki bir adım için ihtiyacınız olduğundan emin olun ve not edin.
CREATE USER ApplicationUser WITH PASSWORD = 'YourStrongPassword1'; GO
Bu kimlik bilgileriyle, kullanıcı veritabanında kimlik doğrulaması yapabilir, ancak herhangi bir veriye erişme yetkisine sahip değildir. Bu kullanıcıya erişim verin.
Kullanıcıya izin verme
Kullanıcıyı ve db_datawriter
rollerinin db_datareader
bir üyesi yapın ve veritabanına sırasıyla okuma ve yazma erişimi verin. Ayrıca, bu kullanıcının adresleri olan bir tabloya erişmesini de engellemek istiyorsunuz.
appServer'a
sqlcmd
bağlıyken, oluşturduğunuz kullanıcıya vedb_datawriter
rollerini vermekdb_datareader
için aşağıdaki T-SQL'i çalıştırın.ALTER ROLE db_datareader ADD MEMBER ApplicationUser; ALTER ROLE db_datawriter ADD MEMBER ApplicationUser; GO
Erişim kapsamını daha da daraltabilirsiniz. DENY işlecini kullanarak kullanıcının veritabanındaki diğer öğelere erişimini reddedebilirsiniz. Aşağıdaki T-SQL komutunu çalıştırarak ApplicationUser adlı kullanıcının
SalesLT.Address
tablosundan veri seçmesini engelleyin.DENY SELECT ON SalesLT.Address TO ApplicationUser; GO
Şimdi bu kullanıcı olarak oturum açın ve bu yapılandırmayı uygulamada inceleyin.
T-SQL istemindeyken oturumunuzdan çıkmak için girin
exit
.Şimdi veritabanında yeniden oturum açın, ancak oluşturduğunuz kullanıcı olarak.
sqlcmd -S tcp:[server-name].database.windows.net,1433 -d marketplaceDb -U 'ApplicationUser' -P '[password]' -N -l 30
Aşağıdaki sorguyu çalıştırın. Bu sorgu, kullanıcının erişim yetkisine sahip olduğu bir tablodan veri çeker.
SELECT FirstName, LastName, EmailAddress, Phone FROM SalesLT.Customer; GO
Sonuç olarak müşteri listesinin gösterilmesi gerekir.
FirstName LastName EmailAddress Phone -------------- -------------- ------------------------------- ------------ Orlando Gee orlando0@adventure-works.com 245-555-0173 Keith Harris keith0@adventure-works.com 170-555-0127 Donna Carreras donna0@adventure-works.com 279-555-0130 Janet Gates janet1@adventure-works.com 710-555-0173 ...
Erişiminiz olmayan bir tabloyu sorgulamaya çalıştığınızda ne olduğunu görün.
SELECT * FROM SalesLT.Address; GO
Bu tabloya erişiminizin olmadığını belirten bir ileti görmeniz gerekir.
Msg 229, Level 14, State 5, Server server-22942, Line 1 The SELECT permission was denied on the object 'Address', database 'marketplace', schema 'SalesLT'.
Burada görebileceğiniz gibi, veritabanına okuma/yazma erişimi vermiş olsanız bile tablolara erişimi açıkça reddederek verilere erişimi daha da güvenli hale getirebilirsiniz. Benzer erişime sahip olan birden fazla kullanıcınız olursa uygun izinlere sahip özel roller oluşturarak yönetim sürecinizi basitleştirebilirsiniz.
Veritabanınızın güvenliğini sağlamak ve yalnızca gerektiğinde erişim izni vermek önemlidir. Azure SQL Veritabanı, veritabanınızdaki verilere erişim elde edebilecek kimlikleri doğrulama ve yetkilendirme üzerinde tam denetim sağlamanızı mümkün kılacak yerleşik özelliklere sahiptir.