Peran tingkat database

Berlaku untuk:yes SQL Server (semua versi yang didukung) YesAzure SQL Database YesAzure SQL Managed Instance yesAzure Synapse Analytics yesAnalytics Platform 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 tidak mendukung penggunaan ALTER ROLEini. 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 bisa 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 dalam SQL Database dan Azure Synapse.

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.

Fixed-Database nama peran Deskripsi
db_owner Anggota peran database tetap db_owner dapat melakukan semua aktivitas konfigurasi dan pemeliharaan pada database, dan juga drop dapat database dalam SQL Server. (Dalam 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 memodifikasi 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.
db_datawriter Anggota peran database tetap db_datawriter dapat menambahkan, menghapus, atau mengubah data di semua tabel pengguna.
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, mengubah, 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 ini memperlihatkan 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 master virtual. Izin mereka dibatasi untuk tindakan yang dilakukan di master. Hanya pengguna database di master yang 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 mandiri dalam master juga dapat ditambahkan ke peran ini. Namun, pengguna database mandiri yang ditambahkan ke peran dbmanager dalam master 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 terhubung 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 master virtual.

Catatan

Prinsipal tingkat server dan Administrator Azure Active Directory (jika dikonfigurasi) memiliki semua izin di SQL Database dan Azure Synapse 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 dalam database Azure SQL (bukan instans terkelola) dan Azure Synapse kumpulan tanpa server karena perintah pencadangan dan pemulihan T-SQL tidak tersedia.
  • db_datawriter dan db_denydatawriter tidak berlaku untuk Azure Synapse tanpa server karena hanya membaca data eksternal.

peran msdb

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

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 menjadi sysadmin. Peningkatan hak istimewa ini dapat terjadi karena peran ini dapat memodifikasi paket Layanan Integrasi dan paket Layanan Integrasi dapat dijalankan dengan 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 Jenis Deskripsi
sp_helpdbfixedrole (SQL Bertransaksi) Metadata Mengembalikan daftar peran database tetap.
sp_dbfixedrolepermission (SQL Bertransaksi) Metadata Menampilkan izin peran database tetap.
sp_helprole (SQL Bertransaksi) Metadata Mengembalikan informasi tentang peran dalam database saat ini.
sp_helprolemember (SQL Bertransaksi) Metadata Mengembalikan informasi tentang anggota peran dalam database saat ini.
sys.database_role_members (SQL Bertransaksi) Metadata Mengembalikan satu baris untuk setiap anggota setiap peran database.
IS_MEMBER (SQL Bertransaksi) Metadata Menunjukkan apakah pengguna saat ini adalah anggota grup Microsoft Windows yang ditentukan atau peran database Microsoft SQL Server.
CREATE ROLE (Transact-SQL) Perintah Membuat peran database baru dalam database saat ini.
ALTER ROLE (Transact-SQL) Perintah Mengubah nama atau keanggotaan peran database.
DROP ROLE (Transact-SQL) Perintah Menghapus peran dari database.
sp_addrole (SQL Bertransaksi) Perintah Membuat peran database baru dalam database saat ini.
sp_droprole (SQL Bertransaksi) Perintah Menghapus peran database dari database saat ini.
sp_addrolemember (SQL Bertransaksi) Perintah Menambahkan pengguna database, peran database, Windows masuk, 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 (SQL Bertransaksi) 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.
BERI Izin Menambahkan izin ke peran.
DENY Izin Menolak izin untuk peran.
REVOKE Izin Menghapus izin yang sebelumnya diberikan atau ditolak.

Peran database publik

Setiap pengguna database milik 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