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 ile Kerberos kimlik doğrulamasını kullanmak için aşağıdaki koşulların her ikisi de doğru olmalıdır:
İstemci ve sunucu bilgisayarları aynı Windows etki alanının parçası veya güvenilen etki alanlarında olmalıdır.
Bir Hizmet Asıl Adı (SPN), Bir Windows etki alanındaki Anahtar Dağıtım Merkezi rolünü üstlenen Active Directory'ye kaydedilmelidir. SPN kaydedildikten sonra SQL Server örnek hizmetini başlatan Windows hesabıyla eşler. SPN kaydı gerçekleştirilmezse veya başarısız olursa, Windows güvenlik katmanı SPN ile ilişkili hesabı belirleyemez ve Kerberos kimlik doğrulaması kullanılmaz.
Uyarı
Sunucu SPN'yi otomatik olarak kaydedemiyorsa SPN'nin el ile kaydedilmesi gerekir. Bkz. El ile SPN Kaydı.
Dinamik yönetim görünümünü sorgulayarak bir bağlantının sys.dm_exec_connections
Kerberos kullandığını doğrulayabilirsiniz. Aşağıdaki sorguyu çalıştırın ve sütunun auth_scheme
değerini (Kerberos etkinse) KERBEROS
denetleyin.
SELECT auth_scheme
FROM sys.dm_exec_connections
WHERE session_id = @@SPID;
Tavsiye
SQL Server için Microsoft Kerberos Configuration Manager, SQL Server ile ilgili Kerberos ile ilgili bağlantı sorunlarını gidermeye yardımcı olan bir tanılama aracıdır. Daha fazla bilgi için bkz. SQL Server için Microsoft Kerberos Configuration Manager.
Kimlik doğrulamasında SPN'nin rolü
Bir uygulama bir bağlantı açtığında ve Windows Kimlik Doğrulaması kullandığında, SQL Server Yerel İstemcisi SQL Server bilgisayar adını, örnek adını ve isteğe bağlı olarak bir SPN'yi geçirir. Bağlantı bir SPN'yi geçerse, herhangi bir değişiklik olmadan kullanılır.
Bağlantı bir SPN'yi geçmezse, kullanılan protokole, sunucu adına ve örnek adına göre varsayılan bir SPN oluşturulur.
Önceki senaryoların her ikisinde de SPN, bağlantının kimliğini doğrulamak için bir güvenlik belirteci almak üzere Anahtar Dağıtım Merkezi'ne gönderilir. Güvenlik belirteci alınamıyorsa, kimlik doğrulama NTLM kullanır.
SPN, istemcinin bir hizmet örneğini benzersiz olarak tanımladığı addır. Kerberos kimlik doğrulama hizmeti, bir hizmetin kimliğini doğrulamak için SPN kullanabilir. İstemci bir hizmete bağlanmak istediğinde hizmetin bir örneğini bulur, bu örnek için bir SPN oluşturur, hizmete bağlanır ve hizmetin kimlik doğrulaması için SPN'yi sunar.
Uyarı
Bu makaledeki bilgiler, kümeleme kullanan SQL Server yapılandırmaları için de geçerlidir.
Windows Kimlik Doğrulaması, kullanıcıların SQL Server'da kimlik doğrulaması için tercih edilen yöntemdir. Windows Kimlik Doğrulaması kullanan istemcilerin kimliği NTLM veya Kerberos tarafından doğrulanır. Bir Active Directory ortamında, kerberos kimlik doğrulaması her zaman önce denener.
İzinler
Veritabanı Altyapısı hizmeti başlatıldığında, Hizmet Asıl Adı'nı (SPN) kaydetmeye çalışır. SQL Server'ı başlatan hesabın Active Directory Etki Alanı Hizmetleri'ne SPN kaydetme izni olmadığını varsayalım. Bu durumda, bu çağrı başarısız olur ve hem Uygulama olay günlüğüne hem de SQL Server hata günlüğüne bir uyarı iletisi kaydedilir.
SPN kaydı yapmak için, Veritabanı Altyapısı'nın Local System
(önerilmez), NETWORK SERVICE
veya SPN kaydetme iznine sahip bir hesap gibi yerleşik bir hesap altında çalıştırılması gerekir. Etki alanı yöneticisi hesabı kullanarak SPN kaydedebilirsiniz, ancak bu bir üretim ortamında önerilmez. SQL Server'ı bir sanal hesap veya yönetilen hizmet hesabı (MSA) kullanarak çalıştırabilirsiniz. Hem sanal hesaplar hem de MSA'lar spn kaydedebilir. SQL Server bu hesaplardan birinin altında çalışmıyorsa SPN başlangıçta kaydedilmez ve etki alanı yöneticisi spn'yi el ile kaydetmelidir.
SPN biçimleri
SPN biçimi TCP/IP üzerinde Kerberos kimlik doğrulamasını, adlandırılmış kanalları ve paylaşılan belleği destekler. Adlandırılmış ve varsayılan örnekler için desteklenen SPN biçimleri aşağıdaki gibidir.
Adlandırılmış örnek
MSSQLSvc/<FQDN>:[<bağlantı noktası> | <instancename>], burada:
-
MSSQLSvc
, kayıtlı olan hizmettir. -
<FQDN>
sunucunun tam nitelikli alan adıdır. -
<port>
TCP bağlantı noktası numarasıdır. -
<instancename>
SQL Server örneğinin adıdır.
-
Varsayılan örnek
MSSQLSvc/<FQDN>:<bağlantı noktası> | MSSQLSvc/<FQDN>, burada:
-
MSSQLSvc
, kayıtlı olan hizmettir. -
<FQDN>
sunucunun tam nitelikli alan adıdır. -
<port>
TCP bağlantı noktası numarasıdır.
-
SPN biçimi | Açıklama |
---|---|
MSSQLSvc/<FQDN>:<port>
1 |
TCP kullanıldığında sağlayıcı tarafından oluşturulan varsayılan SPN.
<port> bir TCP bağlantı noktası numarasıdır. |
MSSQLSvc/<FQDN> |
TCP dışında bir protokol kullanıldığında varsayılan örnek için sağlayıcı tarafından oluşturulan varsayılan SPN.
<FQDN> tam nitelikli alan adıdır. |
MSSQLSvc/<FQDN>:<instancename> |
TCP dışında bir protokol kullanıldığında adlandırılmış örnek için sağlayıcı tarafından oluşturulan varsayılan SPN.
<instancename> , SQL Server örneğinin adıdır. |
1 SPN biçimi için bağlantı noktası numarası gerekmez. Birden çok bağlantı noktası sunucusu veya bağlantı noktası numarası kullanmayan bir protokol, Kerberos kimlik doğrulamayı kullanmaya devam edebilir.
TCP bağlantı noktasının SPN'ye dahil edildiği TCP/IP bağlantısı için, SQL Server'ın kullanıcının Kerberos kimlik doğrulamasını kullanarak bağlanması için TCP protokolunu etkinleştirmesi gerekir.
Otomatik SPN kaydı
SQL Server Veritabanı Altyapısı örneği başlatıldığında, SQL Server SPN'yi SQL Server hizmetine kaydetmeye çalışır. Örnek durdurulduğunda, SQL Server SPN'nin kaydını kaldırmaya çalışır. TCP/IP bağlantısı için SPN biçiminde MSSQLSvc/<FQDN>:<tcpport>
kaydedilir. Hem adlandırılmış örnekler hem de varsayılan örnek olarak MSSQLSvc
kaydedilir ve <tcpport>
örnekleri ayırt etmek için değeri kullanır.
Kerberos'un destek olduğu diğer bağlantılar için SPN, adlandırılmış örnek biçiminde MSSQLSvc/<FQDN>:<instancename>
kaydedilir. Varsayılan örneği kaydetme biçimi şeklindedir MSSQLSvc/<FQDN>
.
SQL Server başlangıç hesabına izin vermek, SPN'yi kaydetmek ve değiştirmek için aşağıdaki adımları gerçekleştirin:
Etki Alanı Denetleyicisi makinesinde Active Directory Kullanıcıları ve Bilgisayarları'na gidin.
Gelişmiş Görüntüle'yi >seçin.
Bilgisayarlar'ın altında SQL Server bilgisayarını bulun ve sağ tıklayıp Özellikler'i seçin.
Güvenlik sekmesini seçin ve Gelişmiş'i seçin.
Listede SQL Server başlangıç hesabı listelenmiyorsa , eklemek için Ekle'yi seçin. Eklendikten sonra aşağıdaki adımları uygulayın:
Hesabı seçin ve Düzenle'yi seçin.
İzinler'in altında Doğrulanmış Yazma hizmetiPrincipalName'i seçin.
Aşağı kaydırın ve Özellikler'in altında şu seçeneği belirleyin:
- servicePrincipalName'i oku
- ServicePrincipalName yaz
Tamam'ı iki kez seçin.
Active Directory Kullanıcıları ve Bilgisayarları’nı kapatın.
Hizmet hesabında bu eylemler için gerekli izinler yoksa SPN'yi kaydetmek veya kaydını kaldırmak için el ile müdahale gerekebilir.
El ile SPN kaydı
SPN'yi el ile kaydetmek için Windows'ta yerleşik olan setspn aracını kullanabilirsiniz.
setspn.exe
, Hizmet Asıl Adları (SPN) dizin özelliğini okumanızı, değiştirmenizi ve silmenizi sağlayan bir komut satırı aracıdır. Bu araç ayrıca geçerli SPN'leri görüntülemenize, hesabın varsayılan SPN'lerini sıfırlamanıza ve ek SPN'leri eklemenize veya silmenize olanak tanır.
setspn aracı, gerekli izinler ve nasıl kullanılacağına ilişkin örnekler hakkında daha fazla bilgi için setspn'yi gözden geçirin.
Aşağıdaki örnek, bir etki alanı kullanıcı hesabı kullanarak bir tcp/ip bağlantısı için SPN'yi el ile kaydetmek amacıyla kullanılan söz dizimini göstermektedir.
setspn -S MSSQLSvc/myhost.redmond.microsoft.com:1433 redmond\accountname
Uyarı
Bir SPN zaten varsa, yeniden kaydedilebilmesi için önce silinmesi gerekir.
setspn'yi -D
anahtarı ile kullanarak bunu yaparsınız. Aşağıdaki örneklerde, yeni örnek tabanlı SPN'nin el ile nasıl kaydedilecekleri gösterilmektedir. Etki alanı kullanıcı hesabı kullanan varsayılan örnek için şunu kullanın:
setspn -S MSSQLSvc/myhost.redmond.microsoft.com redmond\accountname
Adlandırılmış örnek için şunu kullanın:
setspn -S MSSQLSvc/myhost.redmond.microsoft.com:instancename redmond\accountname
Always On kullanılabilirlik grubu yapılandırmaları hakkında daha fazla bilgi için bkz. Dinleyiciler ve Kerberos (SPN).
İstemci bağlantıları
Kullanıcı tarafından belirtilen SPN'ler istemci sürücülerinde desteklenir. Ancak, bir SPN sağlanmazsa, istemci bağlantısının türüne göre otomatik olarak oluşturulur. TCP bağlantısı için, hem adlandırılmış hem de varsayılan örnekler için biçiminde MSSQLSvc/FQDN:[<port>]
bir SPN kullanılır.
Adlandırılmış kanallar ve paylaşılan bellek bağlantıları için, adlandırılmış örnek için biçiminde MSSQLSvc/<FQDN>:<instancename>
bir SPN kullanılır ve MSSQLSvc/<FQDN>
varsayılan örnek için kullanılır.
Hizmet hesabını SPN olarak kullanma
Hizmet hesapları SPN olarak kullanılabilir. Kerberos kimlik doğrulaması için bağlantı özniteliği aracılığıyla belirtilir ve aşağıdaki biçimleri alır:
username\@domain
veyadomain\username
bir etki alanı kullanıcı hesabı içinmachine$\@domain
veyahost\FQDN
,Local System
veyaNETWORK SERVICE
gibi bir bilgisayar etki alanı hesabı için.
Bir bağlantının kimlik doğrulama yöntemini belirlemek için aşağıdaki sorguyu yürütür.
SELECT net_transport, auth_scheme
FROM sys.dm_exec_connections
WHERE session_id = @@SPID;
Kimlik doğrulama varsayılanları
Aşağıdaki tabloda, SPN kayıt senaryolarına göre kullanılan kimlik doğrulama varsayılanları açıklanmaktadır.
Senaryo | Kimlik doğrulama yöntemi |
---|---|
SPN doğru etki alanı hesabı, sanal hesap, MSA veya yerleşik hesapla eşlenir. Örneğin, Local System veya NETWORK SERVICE . |
Yerel bağlantılar NTLM, uzak bağlantılar Kerberos kullanır. |
SPN, doğru bir etki alanı hesabı, sanal hesap, MSA veya yerleşik hesaptır. | Yerel bağlantılar NTLM, uzak bağlantılar Kerberos kullanır. |
SPN yanlış bir etki alanı hesabı, sanal hesap, MSA veya yerleşik hesapla eşlenir | Kimlik doğrulaması başarısız oluyor. |
SPN araması başarısız olur veya doğru bir etki alanı hesabı, sanal hesap, MSA veya yerleşik hesapla eşlenemez ya da doğru bir etki alanı hesabı, sanal hesap, MSA veya yerleşik hesap değildir. | Yerel ve uzak bağlantılar NTLM kullanır. |
Uyarı
Doğru , kayıtlı SPN ile eşlenen hesabın SQL Server hizmetinin altında çalıştığı hesap olduğu anlamına gelir.
Açıklamalar
Ayrılmış Yönetici Bağlantısı (DAC), örnek adı tabanlı spn kullanır. Kerberos kimlik doğrulaması, SPN başarıyla kaydedilirse bir DAC ile kullanılabilir. Alternatif olarak, kullanıcı hesap adını SPN olarak belirtebilir.
SpN kaydı başlatma sırasında başarısız olursa, bu hata SQL Server hata günlüğüne kaydedilir ve başlatma devam eder.
Kapatma sırasında SPN kaydı kaldırma başarısız olursa, bu hata SQL Server hata günlüğüne kaydedilir ve kapatma devam eder.
İlgili içerik
- SQL Server Yerel İstemcisindeki İstemci Bağlantılarında Hizmet Asıl Adı (SPN) Desteği
- İstemci Bağlantıları (OLE DB) hizmet asıl adlarını (SPN)
- İstemci Bağlantıları (ODBC) hizmet asıl adlarını (SPN)
- SQL Server Yerel İstemci Özelliklerini
- Raporlama Hizmetleri Ortamında Kerberos Kimlik Doğrulama Sorunlarını Yönetme