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.
Aplikasi ke: SQL Server 2016 (13.x) dan versi yang lebih baru
Azure SQL Database
Azure SQL Managed Instance
SQL analytics endpoint in Microsoft Fabric
Warehouse di database Microsoft Fabric
SQL dalam database Microsoft Fabric
Membuat kebijakan keamanan untuk keamanan tingkat di Database Engine SQL.
Keamanan tingkat baris di Fabric Data Warehouse beroperasi mirip dengan produk Database Engine SQL lainnya. Untuk informasi selengkapnya dan contoh keamanan tingkat baris di Fabric Data Warehouse atau titik akhir analitik SQL, lihat Keamanan tingkat atas di pergudangan data Fabric.
Syntax
CREATE SECURITY POLICY [schema_name. ] security_policy_name
{ ADD [ FILTER | BLOCK ] } PREDICATE tvf_schema_name.security_predicate_function_name
( { column_name | expression } [ , ...n] ) ON table_schema_name. table_name
[ <block_dml_operation> ] , [ , ...n]
[ WITH ( STATE = { ON | OFF } [,] [ SCHEMABINDING = { ON | OFF } ] ) ]
[ NOT FOR REPLICATION ]
[;]
<block_dml_operation>
[ { AFTER { INSERT | UPDATE } }
| { BEFORE { UPDATE | DELETE } } ]
Arguments
security_policy_name
Nama kebijakan keamanan. Nama kebijakan keamanan harus mengikuti aturan untuk pengidentifikasi dan unik dalam database dan skemanya.
schema_name
Nama skema tempat kebijakan keamanan berada. schema_name diperlukan karena pengikatan skema.
[ FILTER | BLOKIR ]
Jenis predikat keamanan untuk fungsi yang mengikat ke tabel target.
-
FILTERpredikat memfilter baris yang tersedia untuk membaca operasi secara diam-diam. -
BLOCKpredikat secara eksplisit memblokir operasi penulisan yang melanggar fungsi predikat.
tvf_schema_name.security_predicate_function_name
Fungsi nilai tabel sebaris yang akan digunakan sebagai predikat dan yang akan diberlakukan pada kueri terhadap tabel target. Paling banyak satu predikat keamanan dapat didefinisikan untuk operasi DML tertentu terhadap tabel tertentu. Fungsi nilai tabel sebaris harus dibuat menggunakan SCHEMABINDING opsi .
{ column_name | ekspresi }
Nama kolom atau ekspresi yang digunakan sebagai parameter untuk fungsi predikat keamanan. Kolom apa pun pada tabel target dapat digunakan. Ekspresi hanya dapat menyertakan konstanta, fungsi skalar bawaan, operator, dan kolom dari tabel target. Nama kolom atau ekspresi perlu ditentukan untuk setiap parameter fungsi.
table_schema_name.table_name
Tabel target tempat predikat keamanan akan diterapkan. Beberapa kebijakan keamanan yang dinonaktifkan dapat menargetkan satu tabel untuk operasi DML tertentu, tetapi hanya satu yang dapat diaktifkan pada waktu tertentu.
block_dml_operation
Operasi DML tertentu yang predikat bloknya akan diterapkan.
AFTER menentukan bahwa predikat akan dievaluasi pada nilai baris setelah operasi DML dilakukan (INSERT atau UPDATE).
BEFORE menentukan bahwa predikat akan dievaluasi pada nilai baris sebelum operasi DML dilakukan (UPDATE atau DELETE). Jika tidak ada operasi yang ditentukan, predikat akan berlaku untuk semua operasi.
[ STATE = { ON | NONAKTIF } ]
Mengaktifkan atau menonaktifkan kebijakan keamanan agar tidak menegakkan predikat keamanannya terhadap tabel target. Jika tidak ditentukan, kebijakan keamanan yang dibuat diaktifkan.
[ SCHEMABINDING = { ON | NONAKTIF } ]
Menunjukkan apakah semua fungsi predikat dalam kebijakan harus dibuat dengan SCHEMABINDING opsi . Secara default pengaturan ini adalah ON dan semua fungsi harus dibuat dengan SCHEMABINDING.
BUKAN UNTUK REPLIKASI
Menunjukkan bahwa kebijakan keamanan tidak boleh dijalankan ketika agen replikasi memodifikasi objek target. Untuk informasi selengkapnya, lihat Kontrol Perilaku Pemicu dan Batasan Selama Sinkronisasi (Pemrograman Transact-SQL Replikasi).
[ table_schema_name . ] table_name
Tabel target tempat predikat keamanan akan diterapkan. Beberapa kebijakan keamanan yang dinonaktifkan dapat menargetkan satu tabel, tetapi hanya satu yang dapat diaktifkan pada waktu tertentu.
Remarks
Saat menggunakan fungsi predikat dengan tabel yang dioptimalkan memori, Anda harus menyertakan SCHEMABINDING dan menggunakan WITH NATIVE_COMPILATION petunjuk kompilasi.
Predikat blok dievaluasi setelah operasi DML yang sesuai dijalankan. Oleh karena itu, ada bahaya bahwa READ UNCOMMITTED kueri dapat melihat nilai sementara yang akan digulung balik.
Permissions
ALTER ANY SECURITY POLICY Memerlukan izin dan ALTER izin pada skema.
Selain itu, izin berikut diperlukan untuk setiap predikat yang ditambahkan:
SELECTdanREFERENCESizin pada fungsi yang digunakan sebagai predikat.REFERENCESizin pada tabel target yang terikat pada kebijakan.REFERENCESizin pada setiap kolom dari tabel target yang digunakan sebagai argumen.
Examples
Contoh berikut menunjukkan penggunaan CREATE SECURITY POLICY sintaksis. Untuk contoh skenario kebijakan keamanan lengkap, lihat Keamanan tingkat baris.
A. Membuat kebijakan keamanan
Sintaks berikut membuat kebijakan keamanan dengan predikat filter untuk dbo.Customer tabel, dan membiarkan kebijakan keamanan dinonaktifkan.
CREATE SECURITY POLICY [FederatedSecurityPolicy]
ADD FILTER PREDICATE [rls].[fn_securitypredicate]([CustomerId])
ON [dbo].[Customer];
B. Membuat kebijakan yang memengaruhi beberapa tabel
Sintaks berikut membuat kebijakan keamanan dengan tiga predikat filter pada tiga tabel yang berbeda, dan mengaktifkan kebijakan keamanan.
CREATE SECURITY POLICY [FederatedSecurityPolicy]
ADD FILTER PREDICATE [rls].[fn_securitypredicate1]([CustomerId])
ON [dbo].[Customer],
ADD FILTER PREDICATE [rls].[fn_securitypredicate1]([VendorId])
ON [dbo].[ Vendor],
ADD FILTER PREDICATE [rls].[fn_securitypredicate2]([WingId])
ON [dbo].[Patient]
WITH (STATE = ON);
C. Membuat kebijakan dengan beberapa jenis predikat keamanan
Menambahkan predikat filter dan predikat blok ke dbo.Sales tabel.
CREATE SECURITY POLICY rls.SecPol
ADD FILTER PREDICATE rls.tenantAccessPredicate(TenantId) ON dbo.Sales,
ADD BLOCK PREDICATE rls.tenantAccessPredicate(TenantId) ON dbo.Sales AFTER INSERT;
Konten terkait
- Keamanan tingkat baris
- kebijakan keamanan ALTER (Transact-SQL)
- KEBIJAKAN KEAMANAN DROP (Transact-SQL)
- sys.security_policies (Transact-SQL)
- sys.security_predicates (Transact-SQL)