Bagikan melalui


Menggunakan SID Layanan untuk memberikan izin ke layanan di SQL Server

SQL Server menggunakan Pengidentifikasi Keamanan per layanan (SID), juga disebut sebagai perwakilan keamanan layanan, untuk memungkinkan izin diberikan langsung ke layanan tertentu. Metode ini digunakan oleh SQL Server untuk memberikan izin ke layanan mesin dan agen (masing-masing NT SERVICE\MSSQL$<InstanceName> dan NT SERVICE\SQLAGENT$<InstanceName> ). Dengan menggunakan metode ini, layanan tersebut hanya dapat mengakses mesin database saat layanan berjalan. Untuk informasi selengkapnya, lihat KB2620201 (tautan arsip).

Metode yang sama ini dapat digunakan saat memberikan izin ke layanan lain. Menggunakan Service SID menghilangkan overhead pengelolaan dan pemeliharaan akun layanan dan memberikan kontrol yang lebih ketat dan lebih terperinci atas izin yang diberikan kepada sumber daya sistem.

Contoh layanan tempat SID Layanan dapat digunakan adalah:

  • System Center Operations Manager Health Service (NT SERVICE\HealthService)
  • Layanan Pengklusteran Failover Windows Server (WSFC) (NT SERVICE\ClusSvc)

Beberapa layanan tidak memiliki Service SID secara default. SID layanan harus dibuat menggunakan SC.exe. Metode ini telah diadopsi oleh administrator Microsoft System Center Operations Manager untuk memberikan izin ke HealthService dalam SQL Server.

Setelah SID layanan dibuat dan dikonfirmasi, SID harus diberikan izin dalam SQL Server. Memberikan izin dicapai dengan membuat login Windows menggunakan SQL Server Management Studio (SSMS) atau kueri. Setelah login dibuat, login dapat diberikan izin, ditambahkan ke peran, dan dipetakan ke database sama seperti login lainnya.

Tip

Jika kesalahan Login failed for user 'NT AUTHORITY\SYSTEM' diterima, verifikasi bahwa SID Layanan ada untuk layanan yang diinginkan, login SID Layanan dibuat di SQL Server, dan izin yang sesuai diberikan ke SID Layanan di SQL Server.

Keamanan

Menghilangkan akun layanan

Secara tradisional akun layanan telah digunakan untuk memungkinkan layanan masuk ke SQL Server. Akun layanan menambahkan lapisan kompleksitas manajemen tambahan karena harus mempertahankan dan memperbarui kata sandi akun layanan secara berkala. Selain itu, kredensial akun layanan dapat digunakan oleh individu yang mencoba menutupi aktivitas mereka saat melakukan tindakan dalam instans.

Izin terperinci ke akun sistem

Akun sistem secara historis telah diberikan izin dengan membuat login untuk akun LocalSystem (NT AUTHORITY\SYSTEM in en-us) atau NetworkService (NT AUTHORITY\NETWORK SERVICE di en-us) dan memberikan izin login tersebut. Metode ini memberikan proses atau izin layanan apa pun ke SQL, yang berjalan sebagai akun sistem.

Menggunakan SID Layanan memungkinkan izin untuk diberikan ke layanan tertentu. Layanan ini hanya memiliki akses ke sumber daya yang diberikan izin saat dijalankan. Misalnya, jika HealthService berjalan sebagai LocalSystem dan diberikan View Server State, LocalSystem akun hanya akan memiliki izin ketika View Server State berjalan dalam konteks HealthService. Jika ada proses lain yang mencoba mengakses status server SQL sebagai LocalSystem, mereka akan ditolak aksesnya.

Contoh

J. Membuat SID Layanan

Perintah PowerShell berikut akan membuat SID layanan pada layanan kesehatan Manajer Operasi Pusat Sistem.

sc.exe --% sidtype "HealthService" unrestricted

Penting

--% memberi tahu PowerShell untuk berhenti mengurai perintah lainnya. Ini berguna saat menggunakan perintah dan aplikasi warisan.

B. Mengkueri SID Layanan

Untuk memeriksa SID layanan atau untuk memastikan SID layanan ada, jalankan perintah berikut di PowerShell.

sc.exe --% qsidtype "HealthService"

Penting

--% memberi tahu PowerShell untuk berhenti mengurai perintah lainnya. Ini berguna saat menggunakan perintah dan aplikasi warisan.

C. Menambahkan SID Layanan yang baru dibuat sebagai Login

Contoh berikut membuat login untuk layanan kesehatan Manajer Operasi Pusat Sistem menggunakan T-SQL.

CREATE LOGIN [NT SERVICE\HealthService] FROM WINDOWS
GO

D. Menambahkan SID Layanan yang ada sebagai Login

Contoh berikut membuat login untuk Layanan Kluster menggunakan T-SQL. Memberikan izin ke layanan kluster secara langsung menghilangkan kebutuhan untuk memberikan izin yang berlebihan ke akun SYSTEM.

CREATE LOGIN [NT SERVICE\ClusSvc] FROM WINDOWS
GO

E. Memberikan izin ke SID Layanan

Berikan izin yang diperlukan untuk mengelola Grup Ketersediaan ke Layanan Kluster.

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

Catatan

Menghapus login SID layanan atau menghapusnya dari peran server sysadmin dapat menyebabkan masalah untuk berbagai komponen SQL Server yang terhubung ke Mesin Database SQL Server. Beberapa masalah termasuk yang berikut ini:

  • SQL Server Agent tidak dapat memulai atau menyambungkan ke layanan SQL Server
  • Program Penyiapan SQL Server mengalami masalah yang disebutkan dalam artikel Pangkalan Pengetahuan Microsoft berikut ini: https://mskb.pkisolutions.com/kb/955813

Untuk instans default SQL Server, Anda dapat memperbaiki situasi ini dengan menambahkan SID layanan menggunakan perintah Transact-SQL berikut:

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]

Untuk instans SQL Server bernama, gunakan perintah Transact-SQL berikut:

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]

Dalam contoh ini, SQL2019 adalah nama instans SQL Server.

Langkah berikutnya

Untuk informasi selengkapnya tentang struktur sid layanan, baca struktur SERVICE_SID_INFO.

Baca tentang opsi tambahan yang tersedia saat membuat login.

Untuk menggunakan Keamanan Berbasis Peran dengan SID Layanan, baca tentang membuat peran di SQL Server.

Baca tentang berbagai cara untuk memberikan izin ke SID Layanan di SQL Server.

Untuk informasi selengkapnya tentang mengonfigurasi akun layanan untuk SQL Server, baca Mengonfigurasi akun dan izin layanan Windows.