Peran tingkat server

Berlaku untuk: SQL Server Azure SQL Managed InstanceAnalytics Platform System (PDW)

SQL Server menyediakan peran tingkat server untuk membantu Anda mengelola izin di server. Peran ini adalah prinsip keamanan yang mengelompokkan prinsipal lain. Peran di tingkat server memiliki cakupan izin yang berlaku untuk seluruh server. (Peran seperti grup dalam sistem operasi Windows.)

SQL Server 2019 (15.x) dan versi sebelumnya menyediakan sembilan peran server tetap. Anda tidak dapat mengubah izin yang diberikan kepada peran server tetap (kecuali publik). Dimulai dengan SQL Server 2012 (11.x), Anda dapat membuat peran server yang ditentukan pengguna dan menambahkan izin tingkat server ke peran server yang ditentukan pengguna.

SQL Server 2022 (16.x) hadir dengan 10 peran server tambahan yang dirancang khusus dengan Prinsip Hak Istimewa Paling Rendah. Peran-peran ini membawa awalan ##MS_ dan akhiran ##, yang membedakannya dari prinsipal yang dibuat pengguna biasa dan peran server kustom. Peran baru tersebut memiliki hak istimewa yang berlaku pada lingkup server tetapi juga dapat diwariskan ke database individual (kecuali peran ##MS_LoginManager## server).

Seperti SQL Server di tempat, izin server diatur secara hierarkis. Izin yang dipegang oleh peran tingkat server ini dapat menyebar ke izin database. Agar izin berfungsi secara efektif pada tingkat database, login harus menjadi anggota peran ##MS_DatabaseConnector## tingkat server (dimulai dengan SQL Server 2022 (16.x)), yang memberikan CONNECT izin ke semua database, atau memiliki akun pengguna dalam database individu. Persyaratan ini juga berlaku untuk master basis data.

Pertimbangkan contoh berikut: Peran ##MS_ServerStateReader## tingkat server memegang izin VIEW SERVER STATE. Login yang merupakan anggota peran ini memiliki akun pengguna di basis data master dan WideWorldImporters. Pengguna ini juga memiliki izin dalam dua database tersebut VIEW DATABASE STATE berdasarkan pewarisan.

Anda dapat menambahkan prinsipal tingkat server (login SQL Server, akun Windows, dan grup Windows) ke dalam peran tingkat server. Setiap anggota peran server tetap dapat menambahkan login lain ke peran yang sama. Anggota peran server yang ditentukan pengguna tidak dapat menambahkan prinsipal server lain ke peran tersebut.

Peran tetap tingkat server

Catatan

Peran-peran ini diperkenalkan sebelum SQL Server 2022 (16.x), dan tidak tersedia di Azure SQL Database atau Azure Synapse Analytics. Azure SQL Database memiliki peran tingkat server sendiri, yang sesuai dengan peran yang diperkenalkan dalam SQL Server 2022 (16.x). Untuk informasi lebih lanjut, lihat peran server Azure SQL Database untuk manajemen izin dan Authorize database access to SQL Database, SQL Managed Instance, dan Azure Synapse Analytics.

Tabel berikut menunjukkan peran tingkat server tetap dan kemampuannya.

Peran tingkat server tetap Deskripsi
administrator sistem Anggota peran server tetap sysadmin dapat melakukan aktivitas apa pun di server. Penting: izin tidak dapat ditolak untuk anggota peran ini.
serveradmin Anggota peran server tetap serveradmin dapat mengubah opsi konfigurasi di seluruh server dan mematikan server.
securityadmin Anggota peran server tetap securityadmin mengelola login dan properti mereka. Mereka dapat GRANT, DENY, dan REVOKE izin tingkat server. Mereka juga dapat GRANT, DENY, dan REVOKE izin pada tingkat database jika mereka memiliki akses ke database. Selain itu, mereka dapat mengatur ulang kata sandi untuk login SQL Server.

PENTING: Kemampuan untuk memberikan akses ke Mesin Database dan untuk mengonfigurasi izin pengguna memungkinkan admin keamanan untuk menetapkan sebagian besar izin server. Perlakukan peran securityadmin setara dengan peran sysadmin . Sebagai alternatif, dimulai dengan SQL Server 2022 (16.x), pertimbangkan untuk menggunakan peran server tetap baru ##MS_LoginManager##.
processadmin Anggota peran server tetap processadmin dapat mengakhiri proses yang berjalan dalam instans SQL Server.
setupadmin Anggota peran server tetap setupadmin dapat menambahkan dan menghapus server tertaut dengan menggunakan pernyataan Transact-SQL. (keanggotaan sysadmin diperlukan saat menggunakan Management Studio.)
bulkadmin Anggota peran server tetap bulkadmin dapat menjalankan BULK INSERT pernyataan. Anggota peran ini berpotensi meningkatkan hak istimewa mereka dalam kondisi tertentu. Terapkan prinsip hak istimewa paling sedikit saat menetapkan peran ini dan memantau semua aktivitas yang dilakukan oleh anggotanya.

Peran bulkadmin atau izin ADMINISTER BULK OPERATIONS tidak didukung untuk SQL Server di Linux.

Operasi batch (BULK INSERT pernyataan) tidak didukung untuk proses masuk yang berbasis autentikasi Microsoft Entra, baik di Linux maupun Windows. Dalam skenario ini, hanya anggota peran sysadmin yang dapat melakukan penyisipan massal untuk SQL Server.
diskadmin Anggota peran server tetap diskadmin dapat mengelola file disk.
dbcreator Anggota peran server tetap dbcreator dapat membuat, mengubah, menghilangkan, dan memulihkan database apa pun.
public Setiap login SQL Server milik peran server publik . Ketika entitas server tidak diberikan atau ditolak hak akses tertentu pada suatu objek yang dapat diamankan, pengguna mewarisi hak akses yang diberikan kepada publik pada objek tersebut. Hanya tetapkan izin publik pada objek apa pun saat Anda ingin objek tersedia untuk semua pengguna. Anda tidak dapat mengubah keanggotaan di publik.

Catatan:publik bekerja berbeda dari peran lain. Anda dapat memberikan, menolak, atau mencabut izin untuk peran server tetap public.

Penting

Sebagian besar izin yang diberikan oleh peran server berikut tidak berlaku untuk Azure Synapse Analytics: processadmin, serveradmin, setupadmin, dan diskadmin.

Peran tingkat server tetap yang diperkenalkan di SQL Server 2022

Tabel berikut ini memperlihatkan peran tingkat server tetap yang diperkenalkan di SQL Server 2022 (16.x), dan kemampuannya.

Catatan

Azure SQL Database dan Azure SQL Managed Instance mendukung peran-peran ini. Azure Synapse Analytics tidak melakukannya.

Untuk melihat peran yang dimiliki server, jalankan kueri pada sys.server_principals untuk baris yang nilai type_desc-nya adalah SERVER_ROLE.

Peran tingkat server tetap Deskripsi
##MS_DatabaseConnector## Anggota dari peran server tetap dapat terhubung ke database mana pun tanpa memerlukan akun pengguna dalam database.

Untuk menolak CONNECT izin ke database tertentu, pengguna dapat membuat akun pengguna yang cocok untuk masuk ini dalam database lalu DENYCONNECT izin ke pengguna database. Izin ini DENY mengesampingkan izin GRANT CONNECT yang berasal dari peran ini.
##MS_LoginManager## Anggota peran server tetap ##MS_LoginManager## dapat membuat, menghapus, dan memodifikasi login. Bertentangan dengan peran tetap server lama securityadmin, peran ini tidak memungkinkan anggota untuk GRANT hak istimewa. Ini adalah peran yang lebih terbatas yang membantu mematuhi Prinsip Hak Istimewa Paling Sedikit.
##MS_DatabaseManager## Anggota peran server tetap ##MS_DatabaseManager## dapat membuat basis data dan menghapus basis data yang dimiliki. Seorang anggota peran ##MS_DatabaseManager## yang membuat database akan menjadi pemilik database tersebut, sehingga memungkinkan pengguna tersebut untuk terhubung ke database itu sebagai pengguna dbo. Pengguna dbo memiliki semua izin database dalam database. Anggota peran ini berpotensi meningkatkan hak istimewa mereka dalam kondisi tertentu. Terapkan prinsip hak istimewa paling sedikit saat menetapkan peran ini dan memantau semua aktivitas yang dilakukan oleh anggotanya. Pada Azure SQL Database, gunakan peran server ini alih-alih peran database tetap dbmanager yang ada di master.
##MS_ServerStateManager## Anggota ##MS_ServerStateManager## peran server tetap memiliki izin yang sama dengan peran ##MS_ServerStateReader##. Peran ini juga memiliki izin ALTER SERVER STATE, yang memberikan akses ke beberapa operasi manajemen, seperti: DBCC FREEPROCCACHE, DBCC SQLPERF(), DBCC FREESYSTEMCACHE ('ALL').
##MS_ServerStateReader## Anggota peran server tetap ##MS_ServerStateReader## dapat membaca semua tampilan manajemen dinamis (DMV) dan fungsi yang dicakup oleh VIEW SERVER STATE. Anggota juga memiliki VIEW DATABASE STATE izin pada database mana pun di mana mereka memiliki akun pengguna.
##MS_ServerPerformanceStateReader## Anggota peran server tetap ##MS_ServerPerformanceStateReader## dapat membaca semua tampilan manajemen dinamis (DMV) dan fungsi yang dicakup oleh VIEW SERVER PERFORMANCE STATE. Anggota juga memiliki VIEW DATABASE PERFORMANCE STATE izin pada database mana pun di mana mereka memiliki akun pengguna. Peran ini merupakan subset dari ##MS_ServerStateReader##, yang membantu mematuhi Prinsip Hak Istimewa Paling Rendah.
##MS_ServerSecurityStateReader## Anggota peran server tetap ##MS_ServerSecurityStateReader## dapat membaca semua tampilan manajemen dinamis (DMV) dan fungsi yang dicakup oleh VIEW SERVER SECURITY STATE. Anggota juga memiliki VIEW DATABASE SECURITY STATE izin pada database mana pun di mana mereka memiliki akun pengguna. Peran ini merupakan subset kecil dari ##MS_ServerStateReader##, yang membantu mematuhi Prinsip Hak Istimewa Paling Rendah.
##MS_DefinitionReader## Anggota peran server tetap ##MS_DefinitionReader## dapat membaca semua tampilan katalog yang dicakup oleh VIEW ANY DEFINITION. Anggota juga memiliki VIEW DEFINITION izin pada database mana pun di mana mereka memiliki akun pengguna.
##MS_PerformanceDefinitionReader## Anggota peran server tetap ##MS_PerformanceDefinitionReader## dapat membaca semua tampilan katalog yang dicakup oleh VIEW ANY PERFORMANCE DEFINITION. Anggota juga memiliki VIEW PERFORMANCE DEFINITION izin pada database mana pun di mana mereka memiliki akun pengguna. Peran ini merupakan bagian dari ##MS_DefinitionReader##.
##MS_SecurityDefinitionReader## Anggota peran server tetap ##MS_SecurityDefinitionReader## dapat membaca semua tampilan katalog yang dicakup oleh VIEW ANY SECURITY DEFINITION. Anggota juga memiliki VIEW SECURITY DEFINITION izin pada database mana pun di mana mereka memiliki akun pengguna. Peran ini merupakan subset kecil dari ##MS_DefinitionReader##, yang membantu mematuhi Prinsip Hak Istimewa Paling Rendah.

Izin peran Server Tetap

Setiap peran server tetap memiliki izin tertentu yang ditetapkan untuknya.

Izin peran server tetap baru di SQL Server 2022

Tabel berikut menunjukkan hak akses yang ditetapkan ke peran tingkat server. Ini juga memperlihatkan izin tingkat database yang diwariskan selama pengguna dapat tersambung ke database individual.

Peran tingkat server tetap Izin tingkat server Izin pada tingkat database
##MS_DatabaseConnector## - CONNECT ANY DATABASE - CONNECT
##MS_LoginManager## - CREATE LOGIN
- ALTER ANY LOGIN
T/A
##MS_DatabaseManager## - CREATE ANY DATABASE
- ALTER ANY DATABASE
- ALTER
##MS_ServerStateManager## - ALTER SERVER STATE
- VIEW SERVER STATE
- VIEW SERVER PERFORMANCE STATE
- VIEW SERVER SECURITY STATE
- VIEW DATABASE STATE
- VIEW DATABASE PERFORMANCE STATE
- VIEW DATABASE SECURITY STATE
##MS_ServerStateReader## - VIEW SERVER STATE
- VIEW SERVER PERFORMANCE STATE
- VIEW SERVER SECURITY STATE
- VIEW DATABASE STATE
- VIEW DATABASE PERFORMANCE STATE
- VIEW DATABASE SECURITY STATE
##MS_ServerPerformanceStateReader## - VIEW SERVER PERFORMANCE STATE - VIEW DATABASE PERFORMANCE STATE
##MS_ServerSecurityStateReader## - VIEW SERVER SECURITY STATE - VIEW DATABASE SECURITY STATE
##MS_DefinitionReader## - VIEW ANY DATABASE
- VIEW ANY DEFINITION
- VIEW ANY PERFORMANCE DEFINITION
- VIEW ANY SECURITY DEFINITION
- VIEW DEFINITION
- VIEW PERFORMANCE DEFINITION
- VIEW SECURITY DEFINITION
##MS_PerformanceDefinitionReader## - VIEW ANY PERFORMANCE DEFINITION - VIEW PERFORMANCE DEFINITION
##MS_SecurityDefinitionReader## - VIEW ANY SECURITY DEFINITION - VIEW SECURITY DEFINITION

Hak akses peran server untuk SQL Server 2019 dan yang lebih lama

Grafik berikut menunjukkan izin yang ditetapkan ke peran server warisan (SQL Server 2019 (15.x) dan versi yang lebih lama).

Diagram memperlihatkan izin peran server tetap.

Izin CONTROL SERVER mirip tetapi tidak identik dengan peran server tetap sysadmin. Prinsipal dengan izin CONTROL SERVER dapat ditolak hak akses tertentu. Dari perspektif keamanan, pertimbangkan prinsipal yang identik dengan CONTROL SERVER sebagai anggota sysadmin, karena adanya beberapa cara untuk meningkatkan hak akses dari CONTROL SERVER ke sysadmin penuh. Beberapa DBCC perintah dan banyak prosedur sistem memerlukan keanggotaan dalam peran server tetap sysadmin .

Izin tingkat server

Hanya izin tingkat server yang dapat ditambahkan ke peran server yang ditentukan pengguna. Untuk mencantumkan izin tingkat server, jalankan pernyataan berikut. Izin tingkat server adalah:

SELECT *
FROM sys.fn_builtin_permissions('SERVER')
ORDER BY permission_name;

Untuk informasi selengkapnya tentang izin, lihat Izin (Mesin Database) dan sys.fn_builtin_permissions.

Bekerja dengan peran tingkat server

Tabel berikut menjelaskan perintah, tampilan, dan fungsi yang bisa Anda gunakan untuk bekerja dengan peran tingkat server.

Fitur Tipe Deskripsi
sp_helpsrvrole Metadata Mengembalikan daftar peran tingkat server.
sp_helpsrvrolemember Metadata Mengembalikan informasi tentang anggota peran di tingkat server.
sp_srvrolepermission Metadata Menampilkan izin peran tingkat server.
IS_SRVROLEMEMBER Metadata Menunjukkan apakah login ke SQL Server adalah anggota dari peran pada tingkat server yang ditentukan.
sys.server_role_members Metadata Mengembalikan satu baris untuk setiap anggota dari setiap peran tingkat server.
CREATE SERVER ROLE Perintah Membuat peran server yang ditentukan pengguna.
ALTER SERVER ROLE Perintah Mengubah keanggotaan peran server atau mengubah nama peran server yang ditentukan pengguna.
DROP SERVER ROLE Perintah Menghapus peran server yang ditentukan pengguna.
sp_addsrvrolemember Perintah Menambahkan login sebagai anggota peran tingkat server. Kadaluarsa. Gunakan ALTER SERVER ROLE sebagai gantinya.
sp_dropsrvrolemember Perintah Menghapus login SQL Server atau pengguna atau grup Windows dari peran tingkat server. Kadaluarsa. Gunakan ALTER SERVER ROLE sebagai gantinya.

Peran khusus untuk SQL Server yang diaktifkan oleh Azure Arc

Saat Anda memasang Ekstensi Azure untuk SQL Server dalam mode bukan hak istimewa paling sedikit, proses pemasangan:

  1. Membuat peran tingkat server: SQLArcExtensionServerRole
  2. Membuat peran tingkat database: SQLArcExtensionUserRole
  3. Menambahkan NT AUTHORITY\SYSTEM akun ke setiap peran
  4. Memetakan NT AUTHORITY\SYSTEM di tingkat database untuk setiap database
  5. Memberikan izin minimum untuk fitur yang diaktifkan

Atau, Anda dapat mengonfigurasi SQL Server diaktifkan oleh Azure Arc untuk berjalan dalam mode hak istimewa paling sedikit. Untuk informasi selengkapnya, lihat Mengoperasikan SQL Server yang diaktifkan oleh Azure Arc dengan hak akses minimal.

Selain itu, Ekstensi Azure untuk SQL Server mencabut izin untuk peran ini saat tidak lagi diperlukan untuk fitur tertentu.

Catatan

Tindakan yang dijelaskan sebelumnya mengharuskan Deployer untuk terhubung ke SQL Server sebagai NT AUTHORITY\SYSTEM. Jika login NT AUTHORITY\SYSTEM dihapus, dinonaktifkan, atau ditolak CONNECT SQL izinnya, Deployer tidak dapat melakukan tindakan-tindakan ini, dan Ekstensi Azure untuk SQL Server gagal tersedia. Lihat Prasyarat untuk langkah-langkah memverifikasi dan memulihkan login ini.

SqlServerExtensionPermissionProvider adalah tugas Windows. Ini menjalankan Deployer.exe untuk memberikan atau mencabut hak istimewa dalam SQL Server ketika mendeteksi:

Catatan

Sebelum rilis Juli 2024, SqlServerExtensionPermissionProvider adalah tugas terjadwal yang dijalankan setiap jam.

Untuk detailnya, tinjau Konfigurasi akun layanan Windows dan izin untuk Ekstensi Azure untuk SQL Server.

Jika Anda menghapus instalan Ekstensi Azure untuk SQL Server, peran tingkat server dan tingkat database akan dihapus.

Untuk izin, tinjau Izin.