Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Database Azure
SQLInstans
Terkelola Azure SQLAzure Synapse Analytics
Sistem Platform Analitik (PDW)
Database SQL di Microsoft Fabric
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 | Description |
|---|---|
| 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. Anggota peran ini juga tidak dapat membaca metadata tentang database dan objeknya, seperti melihat tampilan sistem. |
Izin yang ditetapkan ke peran database tetap tidak dapat diubah. Semua peran, termasuk peran public, memiliki izin CONNECT. Gambar berikut menunjukkan izin yang ditetapkan ke peran database tetap:
| Nama peran | Permissions |
|---|---|
| db_owner | DATABASE KONTROL: Memiliki semua izin dalam database. |
| db_securityadmin | MENGUBAH PERAN APLIKASI APA PUN Buat Skema MENGUBAH PERAN APA PUN LIHAT DEFINISI |
| db_accessadmin | MENGUBAH PENGGUNA APA PUN Buat Skema BUAT PENGGUNA |
| db_backupoperator | DATABASE CADANGAN LOG CADANGAN CHECKPOINT |
| db_ddladmin | MENGUBAH RAKITAN APA PUN MENGUBAH KUNCI ASIMETRIS APA PUN MENGUBAH SERTIFIKAT APA PUN MENGUBAH KONTRAK APA PUN MENGUBAH PEMICU DDL DATABASE APA PUN MENGUBAH PEMBERITAHUAN PERISTIWA DATABASE APA PUN MENGUBAH RUANG DATA APA PUN MENGUBAH PUSTAKA EKSTERNAL APA PUN MENGUBAH KATALOG FULLTEXT APA PUN UBAH JENIS PESAN APA PUN MENGUBAH PENGIKATAN LAYANAN JARAK JAUH APA PUN MENGUBAH RUTE APA PUN MENGUBAH SKEMA MANAPUN MENGUBAH LAYANAN APA PUN MENGUBAH KUNCI SIMETRIS APA PUN CHECKPOINT BUAT AGREGAT MEMBUAT RAKITAN MEMBUAT KUNCI ASIMETRIS BUAT SERTIFIKAT BUAT KONTRAK MEMBUAT PEMBERITAHUAN PERISTIWA DDL DATABASE BUAT DEFAULT BUAT PUSTAKA EKSTERNAL BUAT KATALOG FULLTEXT BUAT FUNGSI MEMBUAT JENIS PESAN CREATE PROCEDURE (membuat prosedur) BUAT ANTREAN MEMBUAT PENGIKATAN LAYANAN JARAK JAUH BUAT RUTE BUAT ATURAN Buat Skema BUAT LAYANAN MEMBUAT KUNCI SIMETRIS MEMBUAT SINONIM CREATE TABLE BUAT JENIS BUAT TAMPILAN MEMBUAT KOLEKSI SKEMA XML REFERENSI Berlaku untuk: SQL Server 2019 dan yang lebih baru MENGUBAH BAHASA EKSTERNAL APA PUN BUAT BAHASA EKSTERNAL Berlaku untuk: SQL Server 2022 dan yang lebih baru UBAH SUMBER DATA EKSTERNAL APA PUN MENGUBAH FORMAT FILE EKSTERNAL APAPUN MENGUBAH PEKERJAAN EKSTERNAL APA PUN MENGUBAH ALIRAN EKSTERNAL APA PUN UBAH LEDGER AKTIFKAN LEDGER |
| db_datareader | GRANT SELECT ON DATABASE::<database-name> |
| db_denydatareader | TOLAK SELECT PADA DATABASE::<database-name> |
| db_datawriter | BERIKAN SISIPAN PADA DATABASE::<database-name>BERIKAN PEMBARUAN PADA DATABASE:: <database-name>BERIKAN PENGHAPUSAN PADA DATABASE:: <database-name> |
| db_denydatawriter | TOLAK SISIPKAN PADA DATABASE::<database-name>TOLAK PEMBARUAN PADA DATABASE:: <database-name>TOLAK PENGHAPUSAN PADA DATABASE:: <database-name> |
| public | Tidak ada izin tingkat database yang melekat dalam peran database publik. Namun, beberapa izin database ada secara default. Secara khusus, LIHAT DEFINISI KUNCI ENKRIPSI KOLOM APA PUN, LIHAT DEFINISI KUNCI MASTER KOLOM APA PUN, dan IZIN SELECT pada banyak tabel sistem individual. Izin ini dapat dicabut. |
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 di tidak dapat digunakan untuk membuat database baru.
| Nama peran | Description |
|---|---|
| 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 SCHEMAALTER 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 . |
Note
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 |
Description |
|---|---|
|
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.
| Feature | Type | Description |
|---|---|---|
| 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. |
| MEMBUAT PERAN | Command | Membuat peran database baru dalam database saat ini. |
| UBAH PERAN | Command | Mengubah nama atau keanggotaan peran database. |
| HILANGKAN PERAN | Command | Menghapus peran dari database. |
| sp_addrole | Command | Membuat peran database baru dalam database saat ini. |
| sp_droprole | Command | Menghapus peran database dari database saat ini. |
| sp_addrolemember | Command | 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 | Command | 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 | Permissions | Menambahkan izin ke peran. |
| DENY | Permissions | Menolak izin untuk peran. |
| REVOKE | Permissions | 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 .
Examples
Contoh di bagian ini memperlihatkan cara bekerja dengan peran tingkat database.
A. 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
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