Bu makalede SPN ve SPID kavramlarının ne olduğuna değinmiş olacağım. Sql server da çok sık karşılaştığımız bu iki kavramın ne olduğuna değinelim.
SPN (Service Principal Name), bir servisin, Kerberos Authentication protokolü aracılığıyla doğrulama yapmak için kullanılan benzersiz bir kimliktir. SPN, Active Directory (AD) ortamında bir servis ile ilişkilendirilmiş olan bir tanımlayıcıdır ve o servisin bir ağda kimlik doğrulama işlemlerinde tanınmasını sağlar.
SQL Server’a bağlanırken, SQL Login kullanan bir kullanıcı SQL Server Authentication ile kimlik doğrulaması yapar.
SPN’ler ise Kerberos Authentication için gereklidir, yani SQL Server, bir istemcinin bağlanırken Kerberos üzerinden kimlik doğrulaması yapması gerektiğinde SPN’lere başvurur.
SPN’ler, Active Directory’deki hesaplar ile ilişkilendirilmiş ve ağ üzerinden iletişimi sağlayan kimlik doğrulama bilgileridir.
SPN’nin Yapısı:
SPN genellikle aşağıdaki formata sahiptir:
- ServiceClass: Servisin türünü belirtir. (örneğin, MSSQLSvc SQL Server için, HTTP web servisleri için).
- HostFQDN: Servisin çalıştığı bilgisayarın tam etki alanı adı (Fully Qualified Domain Name) ya da IP adresi.
- Port: Servisin çalıştığı port numarası.
Örneğin, bir SQL Server için SPN şöyle görünebilir:
MSSQLSvc/myserver.example.com:1433
Bu SPN, myserver.example.com üzerindeki 1433 numaralı portta çalışan bir SQL Server servisini tanımlar.
SPN’nin Kullanım Alanları:
- SPN’ler, SQL Server instance’ları ve diğer hizmetler için, Kerberos Authentication sağlamak amacıyla Active Directory içinde yapılandırılır. Bu, istemci uygulamasının, sunucuya bağlanabilmesi için gerekli kimlik doğrulamasını yapabilmesini sağlar.
- SQL Login ile bağlanan bir kullanıcı, SPN’lerin ne olduğunu veya hangi SPN’nin kullanıldığını doğrudan göremez. SPN’ler, ağdaki kimlik doğrulama süreçlerinde arka planda çalışır.
Kullanıcı ve SPN İlişkisi:
- Eğer bir kullanıcı SQL Server’a bağlanırken Kerberos kullanıyorsa, SQL Server, istemci ile sunucu arasındaki bağlantı için doğru SPN’yi kullanır. Ancak, SPN’ler yalnızca ağdaki güvenlik doğrulaması ve iletişimi için kullanılır, kullanıcının doğrudan görmesi ya da erişmesi gereken bir bilgi değildir.
- SPN’ler setspn komutları veya Active Directory aracılığıyla yönetilir, ve bu bilgiler genellikle veritabanı yöneticileri ya da sistem yöneticileri tarafından kontrol edilir.
Kerberos ve NTLM:
- Eğer SPN doğru şekilde yapılandırılmamışsa, Kerberos authentication devreye girmeyebilir ve SQL Server bağlantısı NTLM (Windows’un bir başka kimlik doğrulama protokolü) ile yapılabilir. Bu durumda, SPN’lerin rolü azalır, ancak yine de arka planda doğru kimlik doğrulaması için gerekli olabilir.
Sonuç:
SPN, bir ağda bir servisin kimlik doğrulaması için kritik öneme sahiptir. SQL Server gibi veritabanı servisleri veya web uygulamaları gibi servisler için doğru SPN ayarlamaları, güvenli ve düzgün çalışan kimlik doğrulama işlemlerinin sağlanabilmesi için gereklidir.
SQL Login ile bağlanan bir kullanıcı, doğrudan SPN (Service Principal Name) bilgilerini görmez. Ancak, SPN’ler Kerberos Authentication’ı doğru bir şekilde çalıştırabilmek için kullanılır, yani SPN’ler, istemci ile sunucu arasındaki güvenli bağlantıyı sağlamak için gereklidir. SQL Server ve istemci arasında bir Kerberos kimlik doğrulaması yapıldığında, SPN’ler arka planda otomatik olarak kullanılır, fakat doğrudan kullanıcıya gösterilmez.
SPID (Server Process ID) Nedir?
- Her SQL Server oturumu (session), bir SPID (Server Process ID) ile tanımlanır.
- sp_who2 veya sys.dm_exec_sessions gibi sorgularla SPID’lerin hangi işlemleri yürüttüğünü görebilirsiniz.
SQL Server Error Loglarında sıkça karşılaşılan SPID’ler, belirli sistem süreçleri veya kullanıcı işlemleriyle ilişkilidir.
SQL Server, dahili işlemleri için 1 ila 50 arasındaki SPID’leri kullanır. Bu SPID’ler kullanıcı sorgularına ait değildir ve doğrudan yönetilemezler.
SPID | Açıklama |
---|---|
SPID 1 | System Process – SQL Server’ın temel sistem süreci. |
SPID 2 | Log Writer – Transaction log’ları diske yazar.(ldf) |
SPID 3 | Checkpoint Process – Sayfalardaki değişiklikleri diske yazar.(mdf-ndf) |
SPID 4 | Lazy Writer – Belleği yöneten süreç. |
SPID 5 | Ghost Cleanup – Silinen satırları fiziksel olarak temizler. |
SPID 6 | Deadlock Monitor – Ölü kilitleri (deadlocks) tespit eder. |
SPID 9 | SQL Server Resource Monitor – Bellek ve CPU kullanımını izler. |
SPID 10 | Scheduler Monitor – SQL Server thread yönetimini denetler. |
SPID 11-15 | System Processes – İç sistem işlemleri için ayrılmıştır. |
SPID 16-50 | Arka plan ve yönetim süreçleri (bazı servisler, Replication vb.). |
SPID 50 ve üstü, kullanıcı bağlantıları ve belirli SQL Server bileşenleri tarafından kullanılır.
SPID | Açıklama |
---|---|
SPID 51+ | Kullanıcı bağlantıları (oturumlar) için atanmış SPID’ler. |
SPID 100-150 | SQL Server Agent Job’ları – Zamanlanmış görevleri çalıştırır. |
SPID 1800+ | Always On Availability Group işlemleri (Replikasyon, senkronizasyon vb.). |
SPID 2000+ | Background Task Scheduler – Sistem görevleri için ayrılmış arka plan süreçleri. |
SPID 3000+ | Extended Events, Query Store vb. ile ilişkili süreçler. |
SPID Sonlandırma:
KILL 1860;
Özet
- SPID 1-50 → Sistem süreçleri için ayrılmıştır.
- SPID 50+ → Kullanıcı bağlantıları ve SQL Server Agent Job’ları gibi işlemler için kullanılır.
- SPID 1000+ → Always On Availability Groups, Query Store, Extended Events gibi sistem bileşenleri tarafından atanabilir.
Error Loglarında sıkça görülen SPID’ler, genellikle bellek yönetimi, mirroring, Always On, agent job’ları ve veritabanı başlangıcıyla ilgilidir.
Başka bir makalede görüşmek dileğiyle.
“Allah içinizden iman edenlerin ve kendilerine ilim verilenlerin derecelerini yükseltir.” Mücâdele – 11