Izin: GRANT, DENY, REVOKE
Berlaku untuk: Titik akhir analitik SQL Azure Synapse Analytics Platform System (PDW) di Microsoft Fabric Warehouse di Microsoft Fabric
Gunakan pernyataan GRANT dan DENY untuk memberikan atau menolak izin (seperti UPDATE) pada yang dapat diamankan (seperti database, tabel, tampilan, dll.) ke prinsip keamanan (login, pengguna database, atau peran database). Gunakan REVOKE untuk menghapus pemberian atau penolakan izin.
Izin tingkat server diterapkan ke login. Izin tingkat database diterapkan ke pengguna database dan peran database.
Untuk melihat izin apa yang telah diberikan dan ditolak, kueri tampilan sys.server_permissions dan sys.database_permissions. Izin yang tidak secara eksplisit diberikan atau ditolak untuk prinsip keamanan dapat diwariskan dengan memiliki keanggotaan dalam peran yang memiliki izin. Izin peran database tetap tidak dapat diubah dan tidak muncul dalam tampilan sys.server_permissions dan sys.database_permissions.
GRANT secara eksplisit memberikan satu atau beberapa izin.
TOLAK secara eksplisit menolak prinsipal memiliki satu atau beberapa izin.
REVOKE menghapus izin GRANT atau DENY yang ada.
Sintaks
-- Azure Synapse Analytics and Parallel Data Warehouse and Microsoft Fabric
GRANT
<permission> [ ,...n ]
[ ON [ <class_type> :: ] securable ]
TO principal [ ,...n ]
[ WITH GRANT OPTION ]
[;]
DENY
<permission> [ ,...n ]
[ ON [ <class_type> :: ] securable ]
TO principal [ ,...n ]
[ CASCADE ]
[;]
REVOKE
<permission> [ ,...n ]
[ ON [ <class_type> :: ] securable ]
[ FROM | TO ] principal [ ,...n ]
[ CASCADE ]
[;]
<permission> ::=
{ see the tables below }
<class_type> ::=
{
LOGIN
| DATABASE
| OBJECT
| ROLE
| SCHEMA
| USER
}
Argumen
<permission>[ ,...n ]
Satu atau beberapa izin untuk memberikan, menolak, atau mencabut.
ON [ <class_type> :: ] securable Klausul ON menjelaskan parameter yang dapat diamankan untuk memberikan, menolak, atau mencabut izin.
<> class_type Jenis kelas yang dapat diamankan. Ini bisa berupa LOGIN, DATABASE, OBJECT, SCHEMA, ROLE, atau USER. Izin juga dapat diberikan ke serverclass_type, tetapi SERVER tidak ditentukan untuk izin tersebut. DATABASE tidak ditentukan ketika izin menyertakan kata DATABASE (misalnya UBAH DATABASE APA PUN). Ketika tidak ada class_type yang ditentukan dan jenis izin tidak dibatasi untuk server atau kelas database, kelas diasumsikan sebagai OBJECT.
Securable
Nama login, database, tabel, tampilan, skema, prosedur, peran, atau pengguna untuk memberikan, menolak, atau mencabut izin. Nama objek dapat ditentukan dengan aturan penamaan tiga bagian yang dijelaskan dalam konvensi sintaks Transact-SQL.
Kepada kepala sekolah [ , , ...n ]
Satu atau beberapa prinsipal diberikan, ditolak, atau dicabut izinnya. Prinsipal adalah nama peran login, pengguna database, atau database.
DARI kepala sekolah [ , ...n ]
Satu atau beberapa prinsipal untuk mencabut izin. Prinsipal adalah nama peran login, pengguna database, atau database. FROM hanya dapat digunakan dengan pernyataan REVOKE . TO dapat digunakan dengan GRANT, DENY, atau REVOKE.
DENGAN OPSI GRANT
Menunjukkan bahwa penerima hibah juga akan diberikan kemampuan untuk memberikan izin yang ditentukan kepada prinsipal lain.
CASCADE
Menunjukkan bahwa izin ditolak atau dicabut ke prinsipal yang ditentukan dan kepada semua prinsipal lain tempat prinsipal memberikan izin. Diperlukan saat prinsipal memiliki izin dengan GRANT OPTION.
OPSI GRANT UNTUK
Menunjukkan bahwa kemampuan untuk memberikan izin yang ditentukan akan dicabut. Ini diperlukan saat Anda menggunakan argumen CASCADE .
Penting
Jika prinsipal memiliki izin yang ditentukan tanpa opsi GRANT , izin itu sendiri akan dicabut.
Izin
Untuk memberikan izin, pemberi izin harus memiliki izin itu sendiri dengan WITH GRANT OPTION, atau harus memiliki izin yang lebih tinggi yang menyiratkan izin yang diberikan. Pemilik objek dapat memberikan izin pada objek yang mereka miliki. Prinsipal dengan izin CONTROL pada yang dapat diamankan dapat memberikan izin pada yang dapat diamankan. Anggota peran database tetap db_owner dan db_securityadmin dapat memberikan izin apa pun dalam database.
Keterangan Umum
Menolak atau mencabut izin ke prinsipal tidak akan memengaruhi permintaan yang telah melewati otorisasi dan saat ini sedang berjalan. Untuk segera membatasi akses, Anda harus membatalkan permintaan aktif atau menghentikan sesi saat ini.
Catatan
Sebagian besar peran server tetap tidak tersedia dalam rilis ini. Gunakan peran database yang ditentukan pengguna sebagai gantinya. Login tidak dapat ditambahkan ke peran server tetap sysadmin . Memberikan izin SERVER KONTROL mempertanyakan keanggotaan dalam peran server tetap sysadmin.
Beberapa pernyataan memerlukan beberapa izin. Misalnya, untuk membuat tabel memerlukan izin CREATE TABLE dalam database, dan izin ALTER SCHEMA untuk tabel yang akan berisi tabel.
Analytics Platform System (PDW) terkadang menjalankan prosedur tersimpan untuk mendistribusikan tindakan pengguna ke simpul komputasi. Oleh karena itu, izin eksekusi untuk seluruh database tidak dapat ditolak. (Misalnya DENY EXECUTE ON DATABASE::<name> TO <user>;
akan gagal.) Sebagai pekerjaan, tolak izin eksekusi ke skema pengguna atau objek tertentu (prosedur).
Di Microsoft Fabric, saat ini CREATE USER tidak dapat dijalankan secara eksplisit. Ketika GRANT atau DENY dijalankan, pengguna akan dibuat secara otomatis.
Di Microsoft Fabric, izin tingkat server tidak dapat dikelola.
Izin Implisit dan Eksplisit
Izin eksplisit adalah izin GRANT atau DENY yang diberikan kepada prinsipal oleh pernyataan GRANT atau DENY .
Izin implisit adalah izin GRANT atau DENY yang telah diwarisi oleh prinsipal (peran login, pengguna, atau database) dari peran database lain.
Izin implisit juga dapat diwariskan dari izin penutup atau induk. Misalnya, izin UPDATE pada tabel dapat diwarisi dengan memiliki izin UPDATE pada skema yang berisi tabel, atau izin CONTROL pada tabel.
Rantai Kepemilikan
Ketika beberapa objek database mengakses satu sama lain secara berurutan, urutannya dikenal sebagai rantai. Meskipun rantai tersebut tidak ada secara independen, ketika SQL Server melintasi tautan dalam rantai, SQL Server mengevaluasi izin pada objek konstituen secara berbeda dari jika mengakses objek secara terpisah. Penautan kepemilikan memiliki implikasi penting untuk mengelola keamanan. Untuk informasi selengkapnya tentang rantai kepemilikan, lihat Rantai Kepemilikan dan Tutorial: Rantai Kepemilikan dan Pengalihan Konteks.
Daftar Izin
Izin Tingkat Server
Izin tingkat server dapat diberikan, ditolak, dan dicabut dari login.
Izin yang berlaku untuk server
SERVER KONTROL
MENGELOLA OPERASI MASSAL
MENGUBAH KONEKSI APA PUN
ALTER ANY DATABASE
CREATE ANY DATABASE
ALTER ANY EXTERNAL DATA SOURCE
ALTER ANY EXTERNAL FILE FORMAT
ALTER ANY LOGIN
UBAH STATUS SERVER
SAMBUNGKAN SQL
LIHAT DEFINISI APA PUN
MENAMPILKAN DATABASE APA PUN
LIHAT STATUS SERVER
Izin yang berlaku untuk masuk
KONTROL SAAT MASUK
ALTER ON LOGIN
MENIRU MASUK
MELIHAT DEFINISI
Izin Tingkat Database
Izin tingkat database dapat diberikan, ditolak, dan dicabut dari pengguna database dan peran database yang ditentukan pengguna.
Izin yang berlaku untuk semua kelas database
CONTROL
ALTER
MELIHAT DEFINISI
Izin yang berlaku untuk semua kelas database kecuali pengguna
- AMBIL KEPEMILIKAN
Izin yang hanya berlaku untuk database
ALTER ANY DATABASE
ALTER ON DATABASE
MENGUBAH RUANG DATA APA PUN
MENGUBAH PERAN APA PUN
ALTER ANY SCHEMA
MENGUBAH PENGGUNA APA PUN
DATABASE CADANGAN
MENYAMBUNGKAN PADA DATABASE
CREATE PROCEDURE
BUAT PERAN
CREATE SCHEMA
CREATE TABLE
BUAT TAMPILAN
SHOWPLAN
Izin yang hanya berlaku untuk pengguna
- MENIRU
Izin yang berlaku untuk database, skema, dan objek
ALTER
DELETE
EXECUTE
INSERT
SELECT
UPDATE
REFERENCES
Untuk definisi setiap jenis izin, lihat Izin (Mesin Database).
Bagan Izin
Semua izin secara grafis diwakili pada poster ini. Ini adalah cara term mudah untuk melihat hierarki izin berlapis. Misalnya izin ALTER ON LOGIN dapat diberikan dengan sendirinya, tetapi juga disertakan jika login diberikan izin CONTROL pada login tersebut, atau jika login diberikan izin UBAH LOGIN APA PUN.
Izin Default
Daftar berikut ini menjelaskan izin default:
Saat login dibuat dengan menggunakan pernyataan CREATE LOGIN , login baru menerima izin CONNECT SQL .
Semua login adalah anggota peran server publik dan tidak dapat dihapus dari publik.
Saat pengguna database dibuat dengan menggunakan izin CREATE USER , pengguna database menerima izin CONNECT dalam database.
Semua prinsipal, termasuk peran publik , tidak memiliki izin eksplisit atau implisit secara default.
Ketika login atau pengguna menjadi pemilik database atau objek, login atau pengguna selalu memiliki semua izin pada database atau objek. Izin kepemilikan tidak dapat diubah dan tidak terlihat sebagai izin eksplisit. Pernyataan GRANT, DENY, dan REVOKE tidak berpengaruh pada pemilik.
Login sa memiliki semua izin pada appliance. Mirip dengan izin kepemilikan, izin sa tidak dapat diubah dan tidak terlihat sebagai izin eksplisit. Pernyataan GRANT, DENY, dan REVOKE tidak berpengaruh pada login sa . Login sa tidak dapat diganti namanya.
Pernyataan USE tidak memerlukan izin. Semua prinsipal dapat menjalankan pernyataan USE pada database apa pun.
Contoh: Azure Synapse Analytics and Analytics Platform System (PDW)
J. Memberikan izin tingkat server untuk login
Dua pernyataan berikut memberikan izin tingkat server untuk login.
GRANT CONTROL SERVER TO [Ted];
GRANT ALTER ANY DATABASE TO Mary;
B. Memberikan izin tingkat server untuk login
Contoh berikut memberikan izin tingkat server pada login ke prinsipal server (login lain).
GRANT VIEW DEFINITION ON LOGIN::Ted TO Mary;
C. Memberikan izin tingkat database kepada pengguna
Contoh berikut memberikan izin tingkat database pada pengguna ke prinsipal database (pengguna lain).
GRANT VIEW DEFINITION ON USER::[Ted] TO Mary;
D. Memberikan, menolak, dan mencabut izin skema
Pernyataan GRANT berikut memberi Yuen kemampuan untuk memilih data dari tabel atau tampilan apa pun dalam skema dbo.
GRANT SELECT ON SCHEMA::dbo TO [Yuen];
Pernyataan DENY berikut mencegah Yuen memilih data dari tabel atau tampilan apa pun dalam skema dbo. Yuen tidak dapat membaca data meskipun dia memiliki izin dengan cara lain, seperti melalui keanggotaan peran.
DENY SELECT ON SCHEMA::dbo TO [Yuen];
Pernyataan REVOKE berikut menghapus izin TOLAK. Sekarang izin eksplisit Yuen netral. Yuen mungkin dapat memilih data dari tabel apa pun melalui beberapa izin implisit lainnya seperti keanggotaan peran.
REVOKE SELECT ON SCHEMA::dbo TO [Yuen];
E. Menunjukkan OBJECT opsional:: klausa
Karena OBJECT adalah kelas default untuk pernyataan izin, dua pernyataan berikut sama. Klausa OBJECT:: bersifat opsional.
GRANT UPDATE ON OBJECT::dbo.StatusTable TO [Ted];
GRANT UPDATE ON dbo.StatusTable TO [Ted];