Bagikan melalui


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.

Konvensi sintaks transact-SQL

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.

Poster izin keamanan APS

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];