Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Vonatkozik a következőkre: SQL Server 2016 (13.x) és későbbi verziók
Azure SQL Database
Azure SQL Managed Instance
SQL analytics endpoint in Microsoft Fabric
Warehouse SQL
databasein Microsoft Fabric SQL database in Microsoft Fabric
Biztonsági szabályzatot hoz létre a sorszintű biztonság érdekében.
Transact-SQL szintaxis konvenciók
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
A biztonsági szabályzat neve. A biztonsági házirendek neveinek meg kell felelniük az azonosítókra vonatkozó szabályoknak, és egyedinek kell lenniük az adatbázisban és a sémában.
schema_name
Annak a sémának a neve, amelyhez a biztonsági szabályzat tartozik. schema_name sémakötés miatt szükséges.
[ FILTER | BLOKK ]
A céltáblához kötött függvény biztonsági predikátumának típusa.
FILTER predikátumok csendesen szűrik az olvasási műveletekhez elérhető sorokat.
BLOCK predikátumok kifejezetten blokkolják az írási műveleteket, amelyek megsértik a predikátumfüggvényt.
tvf_schema_name.security_predicate_function_name
A beágyazott tábla értékfüggvénye lesz predikátumként használva, és a céltáblán lévő lekérdezések esetén lesz érvényesítve. Legfeljebb egy biztonsági predikátum határozható meg egy adott DML-művelethez egy adott táblán. A beágyazott tábla értékfüggvényének a SCHEMABINDING beállítással kell létrejönnie.
{ column_name | kifejezés }
A biztonsági predikátumfüggvény paramétereként használt oszlopnév vagy kifejezés. A céltábla bármely oszlopa használható. A kifejezések csak állandókat tartalmazhatnak, amelyek skaláris függvényekben, operátorokban és oszlopokban találhatók a céltáblából. A függvény minden paraméteréhez oszlopnevet vagy kifejezést kell megadni.
table_schema_name.table_name
Az a céltábla, amelyre a biztonsági predikátumot alkalmazni fogja. Több letiltott biztonsági szabályzat egyetlen táblát célozhat meg egy adott DML-művelethez, de egyszerre csak egy engedélyezhető.
block_dml_operation
Az a DML-művelet, amelyre a blokk predikátumot alkalmazni fogja.
AFTERazt határozza meg, hogy a predikátum a DML-művelet végrehajtása (vagy INSERT) után a sorok értékei alapján lesz kiértékelve.UPDATE
BEFORE azt adja meg, hogy a predikátum kiértékelése a sorok értékein történik a DML-művelet végrehajtása előtt (UPDATE vagy DELETE). Ha nincs megadva művelet, a predikátum minden műveletre érvényes lesz.
[ STATE = { ON | KI } ]
Engedélyezi vagy letiltja, hogy a biztonsági szabályzat kényszerítse a biztonsági predikátumokat a céltáblákra. Ha nincs megadva, a létrehozott biztonsági szabályzat engedélyezve van.
[ SCHEMABINDING = { ON | KI } ]
Azt jelzi, hogy a házirend összes predikátumfüggvényét létre kell-e hozni a SCHEMABINDING beállítással. Alapértelmezés szerint ez a beállítás, ON és minden függvényt létre kell hozni a következővel SCHEMABINDING: .
REPLIKÁCIÓHOZ NEM
Azt jelzi, hogy a biztonsági szabályzat nem hajtható végre, ha egy replikációs ügynök módosítja a célobjektumot. További információ: Az eseményindítók és a kényszerek viselkedésének szabályozása a szinkronizálás során (replikáció Transact-SQL programozás).
[ table_schema_name. ] table_name
Az a céltábla, amelyre a biztonsági predikátumot alkalmazni fogja. Több letiltott biztonsági szabályzat egyetlen táblát célozhat meg, de egy adott időpontban csak egy engedélyezhető.
Remarks
Ha predikátumfüggvényeket használ memóriaoptimalizált táblákkal, a fordítási SCHEMABINDING tippet fel kell vennie WITH NATIVE_COMPILATION és használnia kell.
A blokk predikátumok kiértékelése a megfelelő DML-művelet végrehajtása után történik. Ezért fennáll a veszélye annak, hogy a READ UNCOMMITTED lekérdezések átmeneti értékeket láthatnak, amelyek vissza lesznek állítva.
Permissions
Az ALTER ANY BIZTONSÁGI HÁZIREND engedélyre és alter engedélyre van szükség a sémán.
Emellett a következő engedélyekre van szükség minden hozzáadott predikátumhoz:
SELECT és REFERENCES engedélyek a predikátumként használt függvényhez.
A szabályzathoz kötött céltáblán található HIVATKOZÁSOK engedély.
HIVATKOZÁSOK engedély az argumentumként használt céltábla minden oszlopán.
Examples
Az alábbi példák a szintaxis használatát CREATE SECURITY POLICY mutatják be. Egy teljes biztonsági szabályzatra példa: Sorszintű biztonság.
A. Biztonsági szabályzat létrehozása
Az alábbi szintaxis létrehoz egy biztonsági szabályzatot a dbo.Customer tábla szűrő predikátumával, és letiltja a biztonsági szabályzatot.
CREATE SECURITY POLICY [FederatedSecurityPolicy]
ADD FILTER PREDICATE [rls].[fn_securitypredicate]([CustomerId])
ON [dbo].[Customer];
B. Több táblát érintő szabályzat létrehozása
Az alábbi szintaxis három különböző táblán három szűrő predikátumot tartalmazó biztonsági szabályzatot hoz létre, és engedélyezi a biztonsági szabályzatot.
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. Szabályzat létrehozása több típusú biztonsági predikátummal
Szűrő predikátum és blokk predikátum hozzáadása a dbo.Sales táblához.
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;