Aracılığıyla paylaş


SQL Server'da hizmetlere izin vermek için Hizmet SID'lerini kullanma

SQL Server, izinlerin doğrudan belirli bir hizmete verilmesine izin vermek için hizmet güvenlik sorumluları olarak da adlandırılan hizmet başına Güvenlik Tanımlayıcıları (SID) kullanır. Bu yöntem SQL Server tarafından altyapı ve aracı hizmetlerine (sırasıyla NT SERVICE\MSSQL$<InstanceName> ve NT SERVICE\SQLAGENT$<InstanceName> ) izin vermek için kullanılır. Bu yöntemi kullanarak, bu hizmetler veritabanı altyapısına yalnızca hizmetler çalışırken erişebilir. Daha fazla bilgi için bkz. KB2620201 (arşiv bağlantısı).

Bu yöntem, diğer hizmetlere izinler verildiğinde de kullanılabilir. Hizmet SID'sini kullanmak, hizmet hesaplarını yönetme ve sürdürme ek yükünü ortadan kaldırır ve sistem kaynaklarına verilen izinler üzerinde daha sıkı, daha ayrıntılı denetim sağlar.

Hizmet SID'sinin kullanılabildiği hizmetlere örnek olarak şunlar verilebilir:

  • System Center Operations Manager Sağlık Hizmeti (NT SERVICE\HealthService)
  • Windows Server Yük Devretme Kümelemesi (WSFC) hizmeti (NT SERVICE\ClusSvc)

Bazı hizmetlerin varsayılan olarak bir Hizmet SID'si yoktur. Hizmet SID'sinin SC.exekullanılarak oluşturulması gerekir. Bu yöntem , SQL Server içindeki HealthService'e izin vermek için Microsoft System Center Operations Manager yöneticileri tarafından benimsenmiştir.

Hizmet SID'si oluşturulduktan ve onaylandıktan sonra SQL Server'da izin verilmelidir. İzin verme, SQL Server Management Studio (SSMS) veya Transact-SQL sorgusu kullanılarak bir Windows oturum açma bilgisi oluşturularak gerçekleştirilir. Oturum açma bilgileri oluşturulduktan sonra izinler verilebilir, rollere eklenebilir ve diğer tüm oturum açma işlemleri gibi veritabanlarına eşlenebilir.

Tip

Hata Login failed for user 'NT AUTHORITY\SYSTEM' alınırsa, istenen hizmet için Hizmet SID'sinin mevcut olduğunu, HIZMET SID oturum açma bilgilerinin SQL Server'da oluşturulduğunu ve SQL Server'da Hizmet SID'sine uygun izinlerin verildiğini doğrulayın.

Security

Hizmet hesaplarını ortadan kaldırma

Geleneksel olarak hizmet hesapları, hizmetlerin SQL Server'da oturum açmasına izin vermek için kullanılır. Hizmet hesapları, hizmet hesabı parolasını korumak ve düzenli aralıklarla güncelleştirmek zorunda olduğundan ek bir yönetim karmaşıklığı katmanı ekler. Ayrıca, hizmet hesabı kimlik bilgileri örnekte eylem gerçekleştirirken etkinliklerini maskeleme girişiminde bulunan bir kişi tarafından kullanılabilir.

Sistem hesaplarına yönelik ayrıntılı izinler

Sistem hesaplarına geçmişte LocalSystem (en-us NT AUTHORITY\SYSTEM) veya NetworkService (en-us NT AUTHORITY\NETWORK SERVICE) hesapları için bir oturum açma bilgisi oluşturup bu oturum açma bilgilerine izinler vererek izinler verilmiştir. Bu yöntem, sistem hesabı olarak çalışan SQL'de herhangi bir işlem veya hizmet izni verir.

Hizmet SID'sini kullanmak, belirli bir hizmete izin verilmesini sağlar. Hizmet yalnızca çalıştığı sırada izin verilen kaynaklara erişebilir. Örneğin, HealthService olarak çalışıyorsa ve View Server State verilirse, LocalSystem hesabının yalnızca HealthService bağlamında çalışırken View Server State izni olur. SQL'in sunucu durumuna olarak LocalSystemerişmeye çalışan başka bir işlem varsa erişim reddedilir.

Örnekler

A. Hizmet SID'i oluşturma

Aşağıdaki PowerShell komutu, System Center Operations Manager sistem durumu hizmetinde bir hizmet SID'i oluşturur.

sc.exe --% sidtype "HealthService" unrestricted

Önemli

--% PowerShell'e komutun geri kalanını ayrıştırmayı durdurmasını söyler. Bu, eski komutları ve uygulamaları kullanırken kullanışlıdır.

B. Hizmet SID'lerini sorgulama

Hizmet SID'sini denetlemek veya hizmet SID'sinin mevcut olduğundan emin olmak için PowerShell'de aşağıdaki komutu yürütür.

sc.exe --% qsidtype "HealthService"

Önemli

--% PowerShell'e komutun geri kalanını ayrıştırmayı durdurmasını söyler. Bu, eski komutları ve uygulamaları kullanırken kullanışlıdır.

C. Yeni oluşturulan Hizmet SID'sini Oturum Açma Olarak Ekleme

Aşağıdaki örnek, T-SQL kullanarak System Center Operations Manager sağlık hizmeti için bir oturum açma oluşturur.

CREATE LOGIN [NT SERVICE\HealthService] FROM WINDOWS
GO

D. Mevcut Bir Hizmet SID'sini Oturum Açma Olarak Ekleme

Aşağıdaki örnek, T-SQL kullanarak Küme Hizmeti için bir oturum açma bilgisi oluşturur. Küme hizmetine izin verilmesi, SYSTEM hesabına aşırı izin verme gereksinimini doğrudan ortadan kaldırır.

CREATE LOGIN [NT SERVICE\ClusSvc] FROM WINDOWS
GO

E. Bir Hizmet SID'sine izin ver.

Küme Hizmeti'ne Kullanılabilirlik Gruplarını yönetmek için gereken izinleri verin.

GRANT ALTER ANY AVAILABILITY GROUP TO [NT SERVICE\ClusSvc]
GO

GRANT CONNECT SQL TO [NT SERVICE\ClusSvc]
GO

GRANT VIEW SERVER STATE TO [NT SERVICE\ClusSvc]
GO

Uyarı

Hizmet SID oturum açma işlemlerinin kaldırılması veya sysadmin sunucu rolünden kaldırılması, SQL Server Veritabanı Altyapısı'na bağlanan çeşitli SQL Server bileşenlerinde sorunlara neden olabilir. Bazı sorunlar şunlardır:

  • SQL Server Aracısı bir SQL Server hizmetini başlatamıyor veya bir SQL Server hizmetine bağlanamıyor
  • SQL Server Kurulum programları, aşağıdaki Microsoft Bilgi Bankası makalesinde belirtilen sorunla karşılaşır: https://mskb.pkisolutions.com/kb/955813

SQL Server'ın varsayılan örneği için aşağıdaki Transact-SQL komutlarını kullanarak hizmet SID'sini ekleyerek bu durumu düzeltebilirsiniz:

CREATE LOGIN [NT SERVICE\MSSQLSERVER] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english]

ALTER ROLE sysadmin ADD MEMBER [NT SERVICE\MSSQLSERVER]

CREATE LOGIN [NT SERVICE\SQLSERVERAGENT] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english]

ALTER ROLE sysadmin ADD MEMBER [NT SERVICE\SQLSERVERAGENT]

SQL Server'ın adlandırılmış bir örneği için aşağıdaki Transact-SQL komutlarını kullanın:

CREATE LOGIN [NT SERVICE\MSSQL$SQL2019] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english]

ALTER ROLE sysadmin ADD MEMBER [NT SERVICE\MSSQL$SQL2019]

CREATE LOGIN [NT SERVICE\SQLAgent$SQL2019] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english]

ALTER ROLE sysadmin ADD MEMBER [NT SERVICE\SQLAgent$SQL2019]

Bu örnekte SQL SQL2019 Server'ın örnek adı verilmiştir.

Sonraki Adımlar

Hizmet sid yapısı hakkında daha fazla bilgi için SERVICE_SID_INFO yapısını okuyun.

Oturum açma oluştururken kullanılabilen ek seçenekler hakkında bilgi edinin.

Hizmet SID'leri ile Role-Based Güvenliği kullanmak için SQL Server'da rol oluşturma hakkında bilgi edinin.

SQL Server'da Hizmet SID'lerine izin vermenin farklı yolları hakkında bilgi edinin.

SQL Server için hizmet hesaplarını yapılandırma hakkında daha fazla bilgi için Bkz. Windows hizmet hesaplarını ve izinlerini yapılandırma.