Peran tingkat database

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)

Untuk mengelola izin dalam database Anda dengan mudah, SQL Server menyediakan beberapa peran yang merupakan prinsip keamanan yang mengelompokkan prinsipal lain. Mereka seperti grup dalam sistem operasi Microsoft Windows. Peran tingkat database adalah seluruh database dalam cakupan izinnya.

Untuk menambahkan dan menghapus pengguna ke peran database, gunakan ADD MEMBER opsi dan DROP MEMBER dari pernyataan UBAH PERAN . Analytics Platform System (PDW) dan Azure Synapse Analytics tidak mendukung penggunaan ALTER ROLE. Gunakan prosedur sp_addrolemember dan sp_droprolemember yang lebih lama sebagai gantinya.

Ada dua jenis peran tingkat database: peran database tetap yang telah ditentukan sebelumnya dalam database dan peran database yang ditentukan pengguna yang dapat Anda buat.

Peran database tetap ditentukan pada tingkat database dan ada di setiap database. Anggota peran database db_owner dapat mengelola keanggotaan peran database tetap. Ada juga beberapa peran database tujuan khusus dalam database msdb.

Anda dapat menambahkan akun database dan peran SQL Server lainnya ke dalam peran tingkat database.

Tip

Jangan tambahkan peran database yang ditentukan pengguna sebagai anggota peran tetap. Ini dapat mengaktifkan eskalasi hak istimewa yang tidak diinginkan.

Izin peran database yang ditentukan pengguna dapat disesuaikan dengan menggunakan pernyataan GRANT, DENY, dan REVOKE . Untuk informasi selengkapnya, lihat Izin (Mesin Database).

Untuk daftar semua izin, lihat poster Izin Mesin Database. Izin tingkat server tidak dapat diberikan ke peran database. Login dan prinsipal tingkat server lainnya (seperti peran server) tidak dapat ditambahkan ke peran database. Untuk keamanan tingkat server di SQL Server, gunakan peran server sebagai gantinya. Izin tingkat server tidak dapat diberikan melalui peran di Azure SQL Database dan Azure Synapse Analytics.

Peran database tetap

Tabel berikut ini memperlihatkan peran database tetap dan kemampuannya. Peran ini ada di semua database. Kecuali untuk peran database publik , izin yang ditetapkan ke peran database tetap tidak dapat diubah.

Nama peran Database Tetap Deskripsi
db_owner Anggota peran database tetap db_owner dapat melakukan semua aktivitas konfigurasi dan pemeliharaan pada database, dan juga drop dapat database di SQL Server. (Di SQL Database dan Azure Synapse, beberapa aktivitas pemeliharaan memerlukan izin tingkat server dan tidak dapat dilakukan oleh db_owners.)
db_securityadmin Anggota peran database tetap db_securityadmin dapat mengubah keanggotaan peran hanya untuk peran kustom dan mengelola izin. Anggota peran ini berpotensi meningkatkan hak istimewa mereka dan tindakan mereka harus dipantau.
db_accessadmin Anggota peran database tetap db_accessadmin dapat menambahkan atau menghapus akses ke database untuk login Windows, grup Windows, dan login SQL Server.
db_backupoperator Anggota peran database tetap db_backupoperator dapat mencadangkan database.
db_ddladmin Anggota peran database tetap db_ddladmin dapat menjalankan perintah Bahasa Definisi Data (DDL) apa pun dalam database. Anggota peran ini berpotensi meningkatkan hak istimewa mereka dengan memanipulasi kode yang dapat dijalankan dengan hak istimewa tinggi dan tindakan mereka harus dipantau.
db_datawriter Anggota peran database tetap db_datawriter dapat menambahkan, menghapus, atau mengubah data di semua tabel pengguna. Dalam kebanyakan kasus penggunaan, peran ini akan dikombinasikan dengan keanggotaan db_datareader untuk memungkinkan membaca data yang akan dimodifikasi.
db_datareader Anggota peran database tetap db_datareader dapat membaca semua data dari semua tabel dan tampilan pengguna. Objek pengguna dapat ada dalam skema apa pun kecuali sys dan INFORMATION_SCHEMA.
db_denydatawriter Anggota peran database tetap db_denydatawriter tidak dapat menambahkan, memodifikasi, atau menghapus data apa pun dalam tabel pengguna dalam database.
db_denydatareader Anggota peran database tetap db_denydatareader tidak dapat membaca data apa pun dari tabel pengguna dan tampilan dalam database.

Izin yang ditetapkan ke peran database tetap tidak dapat diubah. Gambar berikut menunjukkan izin yang ditetapkan ke peran database tetap:

fixed_database_role_permissions

Peran khusus untuk SQL Database dan Azure Synapse

Peran database ini hanya ada di database virtual master . Izin mereka dibatasi untuk tindakan yang dilakukan di master. Hanya pengguna database yang master dapat ditambahkan ke peran ini. Login tidak dapat ditambahkan ke peran ini, tetapi pengguna dapat dibuat berdasarkan login dan kemudian pengguna tersebut dapat ditambahkan ke peran. Pengguna database yang terkandung di juga master dapat ditambahkan ke peran ini. Namun, pengguna database mandiri yang ditambahkan ke peran master dbmanager di tidak dapat digunakan untuk membuat database baru.

Nama peran Deskripsi
dbmanager Dapat membuat dan menghapus database. Anggota peran dbmanager yang membuat database, menjadi pemilik database tersebut, yang memungkinkan pengguna tersebut untuk menyambungkan ke database tersebut sebagai pengguna dbo. Pengguna dbo memiliki semua izin database dalam database. Anggota peran dbmanager tidak selalu memiliki izin untuk mengakses database yang tidak mereka miliki.
db_exporter Hanya berlaku untuk kumpulan SQL khusus Azure Synapse Analytics (sebelumnya SQL DW).
Anggota peran database tetap db_exporter dapat melakukan semua aktivitas ekspor data. Izin yang diberikan melalui peran ini adalah CREATE TABLE, ALTER ANY SCHEMA, ALTER ANY EXTERNAL DATA SOURCE, ALTER ANY EXTERNAL FILE FORMAT.
loginmanager Dapat membuat dan menghapus login di database virtual master .

Catatan

Prinsipal tingkat server dan administrator Microsoft Entra (jika dikonfigurasi) memiliki semua izin di SQL Database dan Azure Synapse Analytics tanpa perlu menjadi anggota peran apa pun. Untuk informasi selengkapnya, lihat Autentikasi dan Otorisasi SQL Database: Memberikan Akses.

Beberapa peran database tidak berlaku untuk Azure SQL atau Azure Synapse:

  • db_backupoperator tidak berlaku di Azure SQL Database (bukan Azure SQL Managed Instance) dan kumpulan tanpa server Azure Synapse Analytics karena perintah pencadangan dan pemulihan T-SQL tidak tersedia.
  • db_datawriter dan db_denydatawriter tidak berlaku untuk Azure Synapse Analytics tanpa server karena hanya membaca data eksternal.

peran msdb

Database msdb berisi peran tujuan khusus yang diperlihatkan dalam tabel berikut.

nama peran msdb Deskripsi
db_ssisadmin

db_ssisoperator

db_ssisltduser
Anggota peran database ini dapat mengelola dan menggunakan SSIS. Instans SQL Server yang ditingkatkan dari versi yang lebih lama mungkin berisi versi peran lama yang diberi nama menggunakan Data Transformation Services (DTS) alih-alih SSIS. Untuk informasi selengkapnya, lihat Peran Layanan Integrasi (Layanan SSIS).
dc_admin

dc_operator

dc_proxy
Anggota peran database ini dapat mengelola dan menggunakan pengumpul data. Untuk informasi selengkapnya, lihat Pengumpulan Data.
PolicyAdministratorRole Anggota peran database db_ PolicyAdministratorRole dapat melakukan semua aktivitas konfigurasi dan pemeliharaan pada kebijakan dan kondisi Manajemen Berbasis Kebijakan. Untuk informasi selengkapnya, lihat Mengelola Server dengan Menggunakan Manajemen Berbasis Kebijakan.
ServerGroupAdministratorRole

ServerGroupReaderRole
Anggota peran database ini dapat mengelola dan menggunakan grup server terdaftar.
dbm_monitor Dibuat dalam database msdb saat database pertama terdaftar di Database Mirroring Monitor. Peran dbm_monitor tidak memiliki anggota sampai administrator sistem menetapkan pengguna ke peran tersebut.

Penting

Anggota peran db_ssisadmin dan peran dc_admin mungkin dapat meningkatkan hak istimewa mereka untuk sysadmin. Peningkatan hak istimewa ini dapat terjadi karena peran ini dapat memodifikasi paket Layanan Integrasi dan paket Layanan Integrasi dapat dijalankan oleh SQL Server menggunakan konteks keamanan sysadmin SQL Server Agent. Untuk menjaga dari peningkatan hak istimewa ini saat menjalankan rencana pemeliharaan, kumpulan pengumpulan data, dan paket Layanan Integrasi lainnya, konfigurasikan pekerjaan SQL Server Agent yang menjalankan paket untuk menggunakan akun proksi dengan hak istimewa terbatas atau hanya menambahkan anggota sysadmin ke peran db_ssisadmin dan dc_admin .

Bekerja dengan peran tingkat database

Tabel berikut menjelaskan perintah, tampilan, dan fungsi untuk bekerja dengan peran tingkat database.

Fitur Tipe Deskripsi
sp_helpdbfixedrole (T-SQL) Metadata Mengembalikan daftar peran database tetap.
sp_dbfixedrolepermission (T-SQL) Metadata Menampilkan izin peran database tetap.
sp_helprole (T-SQL) Metadata Mengembalikan informasi tentang peran dalam database saat ini.
sp_helprolemember (T-SQL) Metadata Mengembalikan informasi tentang anggota peran dalam database saat ini.
sys.database_role_members (T-SQL) Metadata Mengembalikan satu baris untuk setiap anggota setiap peran database.
IS_MEMBER (T-SQL) Metadata Menunjukkan apakah pengguna saat ini adalah anggota grup Microsoft Windows yang ditentukan, grup Microsoft Entra, atau peran database Microsoft SQL Server.
BUAT PERAN (Transact-SQL) Perintah Membuat peran database baru dalam database saat ini.
UBAH PERAN (Transact-SQL) Perintah Mengubah nama atau keanggotaan peran database.
DROP ROLE (Transact-SQL) Perintah Menghapus peran dari database.
sp_addrole (T-SQL) Perintah Membuat peran database baru dalam database saat ini.
sp_droprole (T-SQL) Perintah Menghapus peran database dari database saat ini.
sp_addrolemember (T-SQL) Perintah Menambahkan pengguna database, peran database, login Windows, atau grup Windows ke peran database dalam database saat ini. Semua platform kecuali Analytics Platform System (PDW) dan Azure Synapse harus menggunakan ALTER ROLE sebagai gantinya.
sp_droprolemember (T-SQL) Perintah Menghapus akun keamanan dari peran SQL Server dalam database saat ini. Semua platform kecuali Analytics Platform System (PDW) dan Azure Synapse harus menggunakan ALTER ROLE sebagai gantinya.
GRANT Izin Menambahkan izin ke peran.
DENY Izin Menolak izin untuk peran.
REVOKE Izin Menghapus izin yang diberikan atau ditolak sebelumnya.

Peran database publik

Setiap pengguna database termasuk dalam peran database publik . Ketika pengguna belum diberikan atau ditolak izin tertentu pada objek yang dapat diamankan, pengguna mewarisi izin yang diberikan kepada publik pada objek tersebut. Pengguna database tidak dapat dihapus dari peran publik .

Contoh

Contoh di bagian ini memperlihatkan cara bekerja dengan peran tingkat database.

J. Menambahkan Pengguna ke peran tingkat database

Contoh berikut menambahkan Pengguna 'Ben' ke peran db_datareadertingkat database tetap .

ALTER ROLE db_datareader
	ADD MEMBER Ben;  
GO

B. Mencantumkan semua prinsipal database yang merupakan anggota peran tingkat database

Pernyataan berikut mengembalikan semua anggota peran database apa pun.

SELECT    roles.principal_id                            AS RolePrincipalID
    ,    roles.name                                    AS RolePrincipalName
    ,    database_role_members.member_principal_id    AS MemberPrincipalID
    ,    members.name                                AS MemberPrincipalName
FROM sys.database_role_members AS database_role_members  
JOIN sys.database_principals AS roles  
    ON database_role_members.role_principal_id = roles.principal_id  
JOIN sys.database_principals AS members  
    ON database_role_members.member_principal_id = members.principal_id;  
GO