Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
SQL Server ve Azure SQL Veritabanı bağlantılarının kimliğini veritabanı düzeyinde doğrulamak için bağımsız veritabanı kullanıcılarını kullanın. Kapsanan veritabanı, diğer veritabanlarından ve veritabanını barındıran SQL Server veya SQL Veritabanı örneğinden (ve master veritabanı) yalıtılmış bir veritabanıdır.
SQL Server, hem Windows hem de SQL Server kimlik doğrulaması için bağımsız veritabanı kullanıcılarını destekler. SQL Veritabanı'nı kullanırken, kapsanan veritabanı kullanıcılarını veritabanı düzeyinde güvenlik duvarı kurallarıyla birleştirin.
Bu makalede, geleneksel oturum açma/kullanıcı modeli ve Windows veya sunucu düzeyinde güvenlik duvarı kurallarıyla karşılaştırıldığında, kapsanan veritabanı modelini kullanmanın avantajları incelenmiştir. Belirli senaryolar, yönetilebilirlik veya uygulama iş mantığı hala geleneksel oturum açma/kullanıcı modeli ve sunucu düzeyinde güvenlik duvarı kurallarının kullanılmasını gerektirebilir.
Geleneksel oturum açma ve kullanıcı modeli
Geleneksel bağlantı modelinde, Windows kullanıcıları veya Windows gruplarının üyeleri, Windows tarafından kimliği doğrulanmış kullanıcı veya grup kimlik bilgilerini sağlayarak Veritabanı Altyapısı'na bağlanır. Veya kullanıcılar hem ad hem de parola sağlayabilir ve SQL Server kimlik doğrulamasını kullanarak bağlanabilir. Her iki durumda da, master veritabanında bağlantı kimlik bilgileriyle eşleşen bir oturum açma bilgisi olmalıdır.
Veritabanı Altyapısı Windows kimlik doğrulaması kimlik bilgilerini onayladıktan veya SQL Server kimlik doğrulaması kimlik bilgilerini doğruladıktan sonra, bağlantı genellikle bir kullanıcı veritabanına bağlanmayı dener. Kullanıcı veritabanına bağlanmak için oturum açma bilgilerinin kullanıcı veritabanındaki bir veritabanı kullanıcısıyla eşlenmesi (diğer bir ifadeyle ilişkili) gerekir. Bağlantı dizesi, SQL Server'da isteğe bağlı ancak SQL Veritabanı'nda gerekli olan belirli bir veritabanına bağlanmayı da belirtebilir.
Önemli ilke, hem oturum açma ( master veritabanında) hem de kullanıcının (kullanıcı veritabanında) mevcut olması ve birbiriyle ilişkili olması gerektiğidir. Kullanıcı veritabanı bağlantısı, veritabanındaki oturum açma bilgilerine master bağımlıdır. Bu bağımlılık, veritabanının farklı bir barındırma SQL Server örneğine veya Azure SQL Veritabanı sunucusuna taşınma becerisini sınırlar.
Bağlantı master veritabanına mevcut değilse (örneğin, bir yük devretme işlemi henüz tamamlanmadıysa), genel bağlantı süresi uzayabilir veya bağlantı zaman aşımına uğrayabilir. Mevcut olmayan bir bağlantı, bağlantı ölçeklenebilirliğini azaltabilir.
Kapsanan veritabanı kullanıcı modeli
İçerilen veritabanı kullanıcı modelinde, master veritabanında oturum açma mevcut değildir. Bunun yerine, kimlik doğrulama işlemi kullanıcı veritabanında gerçekleşir. Kullanıcı veritabanındaki veritabanı kullanıcısının master veritabanında ilişkili bir giriş bilgisi yok.
Kapsanan veritabanı kullanıcı modeli hem Windows kimlik doğrulamasını hem de SQL Server kimlik doğrulamasını destekler. Hem SQL Server hem de SQL Veritabanı'nda kullanabilirsiniz.
Bağımsız veritabanı kullanıcısı olarak bağlanmak için, bağlantı dizesi her zaman kullanıcı veritabanı için bir parametre içermelidir. Veritabanı Altyapısı, kimlik doğrulama işlemini yönetmek için hangi veritabanının sorumlu olduğunu bilmek için bu parametreyi kullanır.
Kapsanan veritabanı kullanıcısının etkinliği, kimlik doğrulama veritabanıyla sınırlıdır. Veritabanı kullanıcı hesabı, kullanıcının ihtiyaç duyduğu her veritabanında bağımsız olarak oluşturulmalıdır. Veritabanlarını değiştirmek için SQL Veritabanı kullanıcılarının yeni bir bağlantı oluşturması gerekir. SQL Server'daki bağımsız veritabanı kullanıcıları, başka bir veritabanında aynı kullanıcı varsa veritabanlarını değiştirebilir.
Azure'da SQL Veritabanı ve Azure Synapse Analytics, Microsoft Entra ID'yi (eski adıyla Azure Active Directory) kapsayıcı veritabanı kullanıcıları olarak kimlikleri destekler. SQL Veritabanı, SQL Server kimlik doğrulaması kullanan bağımsız veritabanı kullanıcılarını destekler, ancak Azure Synapse Analytics desteklemez. Daha fazla bilgi için bkz. Microsoft Entra kimlik doğrulamasını kullanarak SQL Veritabanına bağlanma.
Microsoft Entra kimlik doğrulamayı kullanırken, kullanıcılar Microsoft Entra evrensel kimlik doğrulamayı kullanarak SQL Server Management Studio'dan bağlantı oluşturabilir. Yöneticiler, evrensel kimlik doğrulamasını çok faktörlü kimlik doğrulaması gerektirecek şekilde yapılandırabilir. Bu kimlik, telefon araması, kısa mesaj, PIN ile akıllı kart veya mobil uygulama bildirimi kullanarak kimliği doğrular. Daha fazla bilgi için bkz . Microsoft Entra çok faktörlü kimlik doğrulamasını kullanma.
SQL Veritabanı ve Azure Synapse Analytics için veritabanı adı her zaman bağlantı dizesinde gereklidir. Bu nedenle, geleneksel modelden kapsanan veritabanı kullanıcı modeline geçiş yaparken bağlantı dizesini değiştirmeniz gerekmez. SQL Server bağlantıları için, veritabanı adı henüz yoksa bağlantı dizesine eklenmelidir.
Important
Geleneksel modeli kullanırken sunucu düzeyindeki roller ve sunucu düzeyindeki izinler tüm veritabanlarına erişimi sınırlayabilir. Kapsanan veritabanı modelini kullanırken, HERHANGİ Bİr KULLANICI iznine sahip ALTER veritabanı sahipleri ve veritabanı kullanıcıları veritabanına erişim izni verebilir. Bu izin, yüksek ayrıcalıklı sunucu oturum açma bilgilerinin erişim denetimini azaltır ve erişim denetimini yüksek ayrıcalıklı veritabanı kullanıcılarını içerecek şekilde genişletir.
Firewalls
SQL Server
SQL Server için, Windows Güvenlik Duvarı kuralları tüm bağlantılar için geçerlidir ve oturum açma bilgileri (geleneksel model bağlantıları) ve kapsanan veritabanı kullanıcıları üzerinde aynı etkilere sahiptir. Windows Güvenlik Duvarı hakkında daha fazla bilgi için bkz. Windows Güvenlik Duvarı'nı Veritabanı Altyapısı erişimi için yapılandırma.
SQL Veritabanı güvenlik duvarları
SQL Veritabanı, sunucu düzeyinde bağlantılar (oturum açma bilgileri) ve veritabanı düzeyindeki bağlantılar (kapsanan veritabanı kullanıcıları) için ayrı güvenlik duvarı kuralları sağlar. SQL Veritabanı bir kullanıcı veritabanına bağlandığında, önce veritabanı güvenlik duvarı kurallarını denetler. Veritabanına erişime izin veren bir kural yoksa, SQL Veritabanı sunucu düzeyinde güvenlik duvarı kurallarını denetler. Sunucu düzeyinde güvenlik duvarı kurallarını denetlemek için SQL Veritabanı sunucusunun master veritabanına erişim gerekir.
Veritabanı düzeyinde güvenlik duvarı kuralları, kapsanan veritabanı kullanıcıları ile birlikte bağlantı sırasında sunucunun veritabanına erişme master gereksinimini ortadan kaldırabilir. Sonuçta bağlantı ölçeklenebilirliği iyileştirildi.
SQL Veritabanı güvenlik duvarı kuralları hakkında daha fazla bilgi için aşağıdaki makalelere bakın:
- güvenlik duvarını Azure SQL Veritabanı
- Güvenlik duvarı ayarlarını yapılandırma (Azure SQL Veritabanı)
- Sp_set_firewall_rule (Azure SQL Veritabanı)
- Sp_set_database_firewall_rule (Azure SQL Veritabanı)
Söz dizimi farklılıkları
| Geleneksel model | Kapsanan veritabanı kullanıcı modeli |
|---|---|
Veritabanına bağlandığınızda master :CREATE LOGIN login_name WITH PASSWORD = 'strong_password';Ardından, bir kullanıcı veritabanına bağlandığınızda: CREATE USER 'user_name' FOR LOGIN 'login_name'; |
Bir kullanıcı veritabanına bağlandığınızda:CREATE USER user_name WITH PASSWORD = 'strong_password'; |
| Geleneksel model | Kapsanan veritabanı kullanıcı modeli |
|---|---|
Veritabanının bağlamında master parolayı değiştirmek için:ALTER LOGIN login_name WITH PASSWORD = 'strong_password'; |
Kullanıcı veritabanı bağlamında parolayı değiştirmek için:ALTER USER user_name WITH PASSWORD = 'strong_password'; |
SQL Yönetilen Birim
Azure SQL Yönetilen Örneği, kapsanan veritabanları bağlamında şirket içi SQL Server gibi davranır. İçerilen kullanıcınızı oluştururken, veritabanı bağlamınızı master veritabanından kullanıcı veritabanına değiştirdiğinizden emin olun. Ayrıca, kapsama seçeneğini ayarlarken kullanıcı veritabanına etkin bağlantı olmamalıdır. Kılavuz olarak aşağıdaki kodu kullanın.
Warning
Aşağıdaki örnek betik, veritabanındaki tüm kullanıcı işlemlerini kapatmak için bir kill deyimini kullanır. Bu betiği çalıştırmadan önce bu betiğin sonuçlarını anladığınızdan ve işletmenize uyduğundan emin olun. Ayrıca, betik veritabanında çalışan diğer işlemleri kesintiye uğratacağından SQL Yönetilen Örneği veritabanınızda başka hiçbir bağlantının etkin olmadığından emin olun.
USE master;
SELECT * FROM sys.dm_exec_sessions
WHERE database_id = db_id('Test')
DECLARE @kill_string varchar(8000) = '';
SELECT @kill_string = @kill_string + 'KILL ' + str(session_id) + '; '
FROM sys.dm_exec_sessions
WHERE database_id = db_id('Test') and is_user_process = 1;
EXEC(@kill_string);
GO
sp_configure 'contained database authentication', 1;
GO
RECONFIGURE;
GO
SELECT * FROM sys.dm_exec_sessions
WHERE database_id = db_id('Test')
ALTER DATABASE Test
SET containment=partial
USE Test;
GO
CREATE USER Carlo
WITH PASSWORD='Enterpwdhere*'
SELECT containment_desc FROM sys.databases
WHERE name='Test'
Remarks
- SQL Server'ın her örneği için içerisindeki veritabanı kullanıcılarının etkinleştirilmesi zorunludur. Daha fazla bilgi için bkz. Kapsanan veritabanı kimlik doğrulaması (sunucu yapılandırma seçeneği).
- Kapsanan veritabanı kullanıcıları ve eşlenmeyen adlara sahip oturum açma bilgileri uygulamalarınızda birlikte bulunabilir.
- Veritabanındaki
masteroturum açma bilgilerinin adı1 olduğunu varsayalım. name1 adlı bir bağımsız veritabanı kullanıcısı oluşturursanız, bağlantı dizesinde bir veritabanı adı sağlandığında, veritabanına bağlanmak için oturum açma bağlamı üzerinden veritabanı kullanıcısının bağlamı seçilir. Başka bir deyişle, içsel veritabanı kullanıcısı, aynı ada sahip oturum açmalara göre önceliklidir. - SQL Veritabanı'nda, kapsanan veritabanı kullanıcısının adı sunucu yönetici hesabının adıyla aynı olamaz.
- SQL Veritabanı sunucusu yönetici hesabı hiçbir zaman bağımsız veritabanı kullanıcısı olamaz. Sunucu yöneticisi, bağımsız veritabanı kullanıcılarını oluşturmak ve yönetmek için yeterli izinlere sahiptir. Sunucu yöneticisi, kullanıcı veritabanlarında kapsanan veritabanı kullanıcılarına izin verebilir.
- İçerikli veritabanı kullanıcıları, veritabanı düzeyinde birer yetkili olduğu için, onları kullanacağınız her veritabanında içerikli veritabanı kullanıcıları oluşturmanız gerekir. Kimlik veritabanıyla sınırlı. Kimlik, aynı sunucudaki başka bir veritabanında aynı ada ve aynı parolaya sahip bir kullanıcıdan bağımsızdır (her açıdan).
- Normalde oturum açmada kullandığınız parolaların gücünü kullanın.