Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
SQL Database Engine row-level security için bir güvenlik ilkesi oluşturur.
Fabric Data Warehouse'da satır düzeyi güvenlik, diğer SQL Database Engine ürünlerine benzer şekilde çalışır. Fabric Data Warehouse veya SQL analiz uç noktasında satır düzeyi güvenlik hakkında daha fazla bilgi ve örnek için bkz. Fabric veri ambarında Row-level security.
Transact-SQL söz dizimi kuralları
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
Güvenlik ilkesinin adı. Güvenlik ilkesi adları, tanımlayıcılar için kurallara uymalıdır ve veritabanında ve şemasında benzersiz olmalıdır.
schema_name
Güvenlik ilkesinin ait olduğu şemanın adı. şema bağlaması nedeniyle schema_name gereklidir.
[ FİlTRE | BLOCK ]
İşlevin hedef tabloya bağlanması için güvenlik koşulunun türü.
-
FILTER, okuma işlemleri için kullanılabilen satırları sessizce filtreler. -
BLOCKkoşul işlevini ihlal eden yazma işlemlerini açıkça engeller.
tvf_schema_name.security_predicate_function_name
Bir koşul olarak kullanılacak ve hedef tabloya yönelik sorgular üzerine zorlanacak satır içi tablo değeri işlevi. Belirli bir tabloya yönelik belirli bir DML işlemi için en fazla bir güvenlik koşulu tanımlanabilir. Satır içi tablo değeri işlevi seçeneği kullanılarak SCHEMABINDING oluşturulmuş olmalıdır.
{ column_name | ifade }
Güvenlik koşulu işlevi için parametre olarak kullanılan sütun adı veya ifade. Hedef tablodaki herhangi bir sütun kullanılabilir. İfade yalnızca hedef tablodan sabitleri, yerleşik skaler işlevleri, işleçleri ve sütunları içerebilir. İşlevin her parametresi için bir sütun adı veya ifadesi belirtilmelidir.
table_schema_name.table_name
Güvenlik koşulunun uygulanacağı hedef tablo. Birden çok devre dışı bırakılmış güvenlik ilkesi belirli bir DML işlemi için tek bir tabloyu hedefleyebilir, ancak herhangi bir zamanda yalnızca bir tane etkinleştirilebilir.
block_dml_operation
Blok koşulunun uygulanacağı belirli DML işlemi.
AFTER , koşulun DML işlemi (INSERT veya UPDATE) gerçekleştirildikten sonra satırların değerleri üzerinde değerlendirileceğini belirtir.
BEFORE DML işlemi (UPDATE veya DELETE) gerçekleştirilmeden önce koşulun satırların değerleri üzerinde değerlendirileceğini belirtir. Hiçbir işlem belirtilmezse, koşul tüm işlemlere uygulanır.
[ DURUM = { AÇIK | KAPALI } ]
Güvenlik ilkesinin hedef tablolara karşı güvenlik koşullarını zorunlu tutmasını etkinleştirir veya devre dışı bırakır. Belirtilmezse, oluşturulan güvenlik ilkesi etkinleştirilir.
[ SCHEMABINDING = { AÇIK | KAPALI } ]
İlkedeki tüm koşul işlevlerinin seçeneğiyle SCHEMABINDING oluşturulması gerekip gerekmediğini gösterir. Varsayılan olarak bu ayardır ON ve tüm işlevleri ile SCHEMABINDINGoluşturulmalıdır.
ÇOĞALTMA IÇIN DEĞIL
Bir çoğaltma aracısı hedef nesneyi değiştirdiğinde güvenlik ilkesinin yürütülmemesi gerektiğini gösterir. Daha fazla bilgi için bkz. Eşitleme Sırasında Tetikleyicilerin ve Kısıtlamaların Davranışını Denetleme (Çoğaltma Transact-SQL Programlama).
[ table_schema_name. ] table_name
Güvenlik koşulunun uygulanacağı hedef tablo. Birden çok devre dışı bırakılmış güvenlik ilkesi tek bir tabloyu hedefleyebilir, ancak herhangi bir zamanda yalnızca bir tane etkinleştirilebilir.
Remarks
Koşul işlevlerini bellek için iyileştirilmiş tablolarla kullanırken derleme ipucunu SCHEMABINDING eklemeniz WITH NATIVE_COMPILATION ve kullanmanız gerekir.
Blok önkoşulları, karşılık gelen DML işlemi yürütüldükten sonra değerlendirilir. Bu nedenle, bir READ UNCOMMITTED sorgunun geri alınacak geçici değerleri görebilmesi tehlikesi vardır.
Permissions
Şema üzerinde ALTER ANY SECURITY POLICY izin ve ALTER izin gerektirir.
Ek olarak, eklenen her koşul için aşağıdaki izinler gereklidir:
SELECTveREFERENCESkoşul olarak kullanılan işlev üzerindeki izinler.REFERENCESilkeye bağlı olan hedef tablo üzerindeki izin.REFERENCESbağımsız değişken olarak kullanılan hedef tablodaki her sütunda izin.
Examples
Aşağıdaki örneklerde söz diziminin kullanımı gösterilmektedir CREATE SECURITY POLICY . Eksiksiz bir güvenlik ilkesi senaryosu örneği için bkz. Satır düzeyi güvenlik.
A. Güvenlik ilkesi oluşturma
Aşağıdaki söz dizimi, tablo için dbo.Customer filtre koşulu olan bir güvenlik ilkesi oluşturur ve güvenlik ilkesini devre dışı bırakır.
CREATE SECURITY POLICY [FederatedSecurityPolicy]
ADD FILTER PREDICATE [rls].[fn_securitypredicate]([CustomerId])
ON [dbo].[Customer];
B. Birden çok tabloyu etkileyen bir ilke oluşturma
Aşağıdaki söz dizimi, üç farklı tabloda üç filtre koşulu olan bir güvenlik ilkesi oluşturur ve güvenlik ilkesini etkinleştirir.
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. Birden çok güvenlik koşulu türüyle ilke oluşturma
Tabloya hem filtre koşulu hem de blok koşulu dbo.Sales ekleme.
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;