Peran tingkat database
Berlaku untuk: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics 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 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 di 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 msdb
database.
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 mungkin dijalankan di bawah 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 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:
Peran khusus untuk Azure 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 | 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 .Berlaku untuk: kumpulan SQL khusus Azure Synapse Analytics (sebelumnya SQL DW) |
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 Mengotorisasi akses database ke SQL Database, SQL Managed Instance, dan Azure Synapse Analytics.
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 dalam database msdb
Database msdb
berisi peran tujuan khusus yang diperlihatkan dalam tabel berikut.
msdb nama peran |
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 msdb database saat database pertama terdaftar di Database Mirroring Monitor. Peran dbm_monitor tidak memiliki anggota sampai administrator sistem menetapkan pengguna ke peran tersebut. |
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 | Metadata | Mengembalikan daftar peran database tetap. |
sp_dbfixedrolepermission | Metadata | Menampilkan izin peran database tetap. |
sp_helprole | Metadata | Mengembalikan informasi tentang peran dalam database saat ini. |
sp_helprolemember | Metadata | Mengembalikan informasi tentang anggota peran dalam database saat ini. |
sys.database_role_members | Metadata | Mengembalikan satu baris untuk setiap anggota setiap peran database. |
IS_MEMBER | Metadata | Menunjukkan apakah pengguna saat ini adalah anggota grup Microsoft Windows yang ditentukan, grup Microsoft Entra, atau peran database Microsoft SQL Server. |
BUAT PERAN | Perintah | Membuat peran database baru dalam database saat ini. |
UBAH PERAN | Perintah | Mengubah nama atau keanggotaan peran database. |
DROP ROLE | Perintah | Menghapus peran dari database. |
sp_addrole | Perintah | Membuat peran database baru dalam database saat ini. |
sp_droprole | Perintah | Menghapus peran database dari database saat ini. |
sp_addrolemember | 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 | 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_datareader
tingkat 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
INNER JOIN sys.database_principals AS roles
ON database_role_members.role_principal_id = roles.principal_id
INNER JOIN sys.database_principals AS members
ON database_role_members.member_principal_id = members.principal_id;
GO