Peran tingkat server

Berlaku untuk:SQL ServerAzure 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 tingkat server berada di seluruh server dalam cakupan izinnya. (Peran seperti grup dalam sistem operasi Windows.)

SQL Server 2019 dan versi sebelumnya menyediakan sembilan peran server tetap. Izin yang diberikan ke peran server tetap (kecuali publik) tidak dapat diubah. 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) dilengkapi dengan 10 peran server tambahan yang telah dirancang khusus dengan Prinsip Hak Istimewa Paling Sedikit, yang memiliki awalan ##MS_ dan akhiran ## untuk membedakannya dari prinsipal reguler yang dibuat pengguna dan peran server kustom lainnya. Peran baru tersebut berisi hak istimewa yang berlaku pada cakupan server tetapi juga dapat mewarisi ke database individual (kecuali untuk peran server ##MS_LoginManager## .)

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 berguna secara efektif di tingkat database, login harus menjadi anggota peran tingkat server ##MS_DatabaseKoneksi or## (dimulai dengan SQL Server 2022 (16.x)), yang memberikan izin CONNECT ke semua database, atau memiliki akun pengguna dalam database individual. Ini juga berlaku untuk master database. Pertimbangkan contoh berikut: Peran tingkat server ##MS_ServerStateReader## memegang izin TAMPILKAN STATUS SERVER. Login yang merupakan anggota peran ini memiliki akun pengguna dalam database, master dan WideWorldImporters. Pengguna ini kemudian juga akan memiliki izin, LIHAT STATUS DATABASE di dua database tersebut berdasarkan pewarisan.

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

Memperbaiki peran tingkat server

Catatan

Peran tingkat server ini diperkenalkan sebelum SQL Server 2022 (16.x) tidak tersedia di Azure SQL Database atau Azure Synapse Analytics. Ada peran server Azure SQL Database khusus untuk manajemen izin yang setara dengan peran tingkat server yang diperkenalkan di SQL Server 2022 (16.x). Untuk informasi selengkapnya tentang SQL Database, lihat Mengontrol dan memberikan akses database..

Tabel berikut menunjukkan peran tingkat server tetap dan kemampuannya.

Peran tingkat server tetap Deskripsi
adminsis Anggota peran server tetap sysadmin dapat melakukan aktivitas apa pun di server.
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 propertinya. Mereka dapat GRANT, DENY, dan REVOKE izin tingkat server. Mereka juga GRANTdapat , DENY, dan REVOKE izin 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. Peran securityadmin harus diperlakukan 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.

Peran bulkadmin atau izin ADMINISTER BULK OPERATIONS tidak didukung untuk SQL Server di Linux. Hanya sysadmin yang dapat melakukan sisipan massal untuk SQL Server di Linux.
diskadmin Peran server tetap diskadmin digunakan untuk 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 perwakilan server belum diberikan atau ditolak izin tertentu pada objek yang dapat diamankan, pengguna mewarisi izin 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 diimplementasikan secara berbeda dari peran lain, dan izin dapat diberikan, ditolak, atau dicabut dari peran server tetap publik.

Penting

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

Memperbaiki peran tingkat server yang diperkenalkan di SQL Server 2022

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

Catatan

Izin tingkat server ini tidak tersedia untuk Azure SQL Managed Instance atau Azure Synapse Analytics. ##MS_PerformanceDefinitionReader##, ##MS_ServerPerformanceStateReader##, dan ##MS_ServerSecurityStateReader## diperkenalkan di SQL Server 2022 (16.x), dan tidak tersedia di Azure SQL Database.

Peran tingkat server tetap Deskripsi
##MS_DatabaseConnector## Anggota ##MS_DatabaseConnector## peran server tetap dapat terhubung ke database apa pun tanpa memerlukan akun Pengguna di database untuk terhubung.

Untuk menolak izin CONNECT ke database tertentu, pengguna dapat membuat akun pengguna yang cocok untuk info masuk ini di database, kemudian DENY izin CONNECT ke database -pengguna. Izin DENY ini akan 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 securityadmin peran server tetap lama, 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 ##MS_DatabaseManager## peran server tetap dapat membuat dan menghapus database. Anggota dari peran ##MS_DatabaseManager## yang membuat database, menjadi pemilik database tersebut, yang memungkinkan pengguna tersebut terhubung ke database tersebut sebagai penggunadbo. Pengguna dbo memiliki semua izin database dalam database. Anggota peran ##MS_DatabaseManager## tidak harus memiliki izin untuk mengakses database yang bukan miliknya. Peran server ini memiliki hak istimewa yang sama dengan peran dbcreator di SQL Server, tetapi sebaiknya gunakan peran baru ini daripada yang pertama, karena peran ini ada juga di Azure SQL Database dan dengan demikian membantu menggunakan skrip yang sama di berbagai lingkungan.
##MS_ServerStateManager## Anggota peran server tetap ##MS_ServerStateManager ## memiliki izin yang sama dengan peran ##MS_ServerStateReader##. Selain itu, ia memegang izin ALTER SERVER STATE, yang memungkinkan akses ke beberapa operasi manajemen, seperti: DBCC FREEPROCCACHE, , DBCC FREESYSTEMCACHE ('ALL')DBCC SQLPERF()
##MS_ServerStateReader## Anggota peran server tetap ##MS_ServerStateReader## dapat membaca semua tampilan manajemen dinamis (DMV) dan fungsi yang dicakup oleh LIHAT STATUS SERVER, dan masing-masing memiliki izin LIHAT STATUS DATABASE pada database mana pun di mana anggota peran ini 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, dan masing-masing memiliki izin TAMPILKAN STATUS PERFORMA DATABASE pada database mana pun di mana anggota peran ini memiliki akun pengguna. Ini adalah subset dari apa yang dapat diakses oleh peran server ##MS_ServerStateReader## yang membantu mematuhi Prinsip Hak Istimewa paling sedikit.
##MS_ServerSecurityStateReader## Anggota peran server tetap ##MS_ServerSecurityStateReader## dapat membaca semua tampilan manajemen dinamis (DMV) dan fungsi yang dicakup oleh VIEW SERVER SECURITY STATE, dan masing-masing memiliki izin TAMPILKAN STATUS KEAMANAN DATABASE pada database mana pun di mana anggota peran ini memiliki akun pengguna. Ini adalah subset kecil dari apa yang dapat diakses oleh peran server ##MS_ServerStateReader## , yang membantu mematuhi Prinsip Hak Istimewa paling sedikit.
##MS_DefinitionReader## Anggota peran server tetap ##MS_DefinitionReader## dapat membaca semua tampilan katalog yang dicakup oleh LIHAT DEFINISI APA PUN, dan masing-masing memiliki izin LIHAT DEFINISI pada database mana pun di mana anggota peran ini memiliki akun pengguna.
##MS_PerformanceDefinitionReader## Anggota peran server tetap ##MS_PerformanceDefinitionReader## dapat membaca semua tampilan katalog yang dicakup oleh LIHAT DEFINISI PERFORMA APA PUN, dan masing-masing memiliki izin LIHAT DEFINISI PERFORMA pada database mana pun di mana anggota peran ini memiliki akun pengguna. Ini adalah subset dari apa yang dapat diakses oleh peran server ##MS_DefinitionReader## .
##MS_SecurityDefinitionReader## Anggota peran server tetap ##MS_SecurityDefinitionReader## dapat membaca semua tampilan katalog yang dicakup oleh VIEW ANY SECURITY DEFINITION, dan masing-masing memiliki izin VIEW SECURITY DEFINITION pada database apa pun tempat anggota peran ini memiliki akun pengguna. Ini adalah subset kecil dari apa yang dapat diakses oleh peran server ##MS_DefinitionReader## yang membantu mematuhi Prinsip Hak Istimewa paling sedikit.

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 izin 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 tingkat database
##MS_DatabaseConnector## CONNECT ANY DATABASE MENGHUBUNG
##MS_LoginManager## CREATE LOGIN
ALTER ANY LOGIN
T/A
##MS_DatabaseManager## CREATE ANY DATABASE
ALTER ANY DATABASE
ALTER
##MS_ServerStateManager## UBAH STATUS SERVER
LIHAT STATUS SERVER
LIHAT STATUS PERFORMA SERVER
LIHAT STATUS KEAMANAN SERVER
TAMPILKAN STATUS DATABASE
TAMPILKAN STATUS PERFORMA DATABASE
LIHAT STATUS KEAMANAN DATABASE
##MS_ServerStateReader## LIHAT STATUS SERVER
LIHAT STATUS PERFORMA SERVER
LIHAT STATUS KEAMANAN SERVER
TAMPILKAN STATUS DATABASE
TAMPILKAN STATUS PERFORMA DATABASE
LIHAT STATUS KEAMANAN DATABASE
##MS_ServerPerformanceStateReader## LIHAT STATUS PERFORMA SERVER TAMPILKAN STATUS PERFORMA DATABASE
##MS_ServerSecurityStateReader## LIHAT STATUS KEAMANAN SERVER LIHAT STATUS KEAMANAN DATABASE
##MS_DefinitionReader## MENAMPILKAN DATABASE APA PUN
LIHAT DEFINISI APA PUN
LIHAT DEFINISI PERFORMA APA PUN
VIEW ANY SECURITY DEFINITION
MELIHAT DEFINISI
LIHAT DEFINISI PERFORMA
VIEW SECURITY DEFINITION
##MS_PerformanceDefinitionReader## LIHAT DEFINISI PERFORMA APA PUN LIHAT DEFINISI PERFORMA
##MS_SecurityDefinitionReader## VIEW ANY SECURITY DEFINITION VIEW SECURITY DEFINITION

Izin peran server untuk SQL Server 2019 dan yang lebih lama

Grafik berikut menunjukkan izin yang ditetapkan ke peran server warisan (SQL Server 2019 dan versi yang lebih lama).
Diagram showing fixed server role permissions.

Penting

Izin CONTROL SERVER serupa tetapi tidak identik dengan peran server tetap sysadmin . Izin tidak menyiratkan keanggotaan peran dan keanggotaan peran tidak memberikan izin. (Misalnya, CONTROL SERVER tidak menyiratkan keanggotaan dalam peran server tetap sysadmin .) Namun, terkadang dimungkinkan untuk meniru antara peran dan izin yang setara. Sebagian besar perintah DBCC 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 (Transact-SQL).

Bekerja dengan peran tingkat server

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

Fitur Jenis Deskripsi
sp_helpsrvrole (T-SQL) Metadata Mengembalikan daftar peran tingkat server.
sp_helpsrvrolemember (T-SQL) Metadata Mengembalikan informasi tentang anggota peran tingkat server.
sp_srvrolepermission (T-SQL) Metadata Menampilkan izin peran tingkat server.
IS_SRVROLEMEMBER (T-SQL) Metadata Menunjukkan apakah login SQL Server adalah anggota peran tingkat server yang ditentukan.
sys.server_role_members (T-SQL) Metadata Mengembalikan satu baris untuk setiap anggota dari setiap peran tingkat server.
MEMBUAT PERAN SERVER (Transact-SQL) Perintah Membuat peran server yang ditentukan pengguna.
ALTER SERVER ROLE (T-SQL) Perintah Mengubah keanggotaan peran server atau mengubah nama peran server yang ditentukan pengguna.
DROP SERVER ROLE (Transact-SQL) Perintah Menghapus peran server yang ditentukan pengguna.
sp_addsrvrolemember (T-SQL) Perintah Menambahkan login sebagai anggota peran tingkat server. Ditolak. Gunakan ALTER SERVER ROLE sebagai gantinya.
sp_dropsrvrolemember (T-SQL) Perintah Menghapus login SQL Server atau pengguna atau grup Windows dari peran tingkat server. Ditolak. Gunakan ALTER SERVER ROLE sebagai gantinya.

Peran khusus untuk SQL Server yang diaktifkan oleh Azure Arc

Saat Anda menginstal ekstensi Azure untuk SQL Server, penginstalan:

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

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

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

Untuk izin, tinjau Izin.