Megosztás a következőn keresztül:


BIZTONSÁGI POLITIKA MÓDOSÍTÁSA (Transact-SQL)

Vonatkozik a következőkre: SQL Server 2016 (13.x) és későbbi verziók Azure SQL DatabaseAzure SQL Managed InstanceSQL analytics endpoint in Microsoft FabricWarehouse SQL databasein Microsoft Fabric SQL database in Microsoft Fabric

Módosít egy biztonsági szabályzatot.

Transact-SQL szintaxis konvenciók

Szemantika

ALTER SECURITY POLICY schema_name.security_policy_name
    [
        { ADD { FILTER | BLOCK } PREDICATE tvf_schema_name.security_predicate_function_name
           ( { column_name | arguments } [ , ...n ] ) ON table_schema_name.table_name
           [ <block_dml_operation> ]  }
        | { ALTER { FILTER | BLOCK } PREDICATE tvf_schema_name.new_security_predicate_function_name
             ( { column_name | arguments } [ , ...n ] ) ON table_schema_name.table_name
           [ <block_dml_operation> ] }
        | { DROP { FILTER | BLOCK } PREDICATE ON table_schema_name.table_name }
        | [ <additional_add_alter_drop_predicate_statements> [ , ...n ] ]
    ]    [ WITH ( STATE = { ON | OFF } ) ]
    [ NOT FOR REPLICATION ]
[;]

<block_dml_operation>
    [ { AFTER { INSERT | UPDATE } }
    | { BEFORE { UPDATE | DELETE } } ]

Érvek

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 predikátumként használt beágyazott táblaértékfüggvény, amelyet a céltáblán való lekérdezésekre kényszerít. Legfeljebb egy biztonsági predikátumot definiálhat egy adott DML-művelethez egy adott táblához. Hozza létre a beágyazott tábla értékfüggvényét a SCHEMABINDING beállítással.

{ column_name | argumentumok }

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 predikátumfüggvény argumentumaként. A literálokat, beépítetteket és aritmetikai operátorokat használó kifejezéseket is használhat.

table_schema_name.table_name

A biztonsági predikátum céltáblája. 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 alkalmazott blokk predikátum adott DML-művelete. AFTER azt adja meg, hogy a predikátum kiértékelése a DML-művelet végrehajtása (INSERT vagy UPDATE) után a sorértékeken történik. BEFORE megadja, hogy a predikátum kiértékelése a sorértékeken történjen 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.

Az alkalmazott blokk predikátum műveletet nem módosíthatja, mert a művelet a predikátum egyedi azonosítására szolgál. Ehelyett el kell helyeznie a predikátumot, és hozzá kell adnia egy újat az új művelethez.

WITH ( 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.

REPLIKÁCIÓHOZ NEM

Azt jelzi, hogy a biztonsági szabályzatot nem szabad végrehajtani, 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 alkalmazott biztonsági predikátum céltáblája. Több letiltott biztonsági szabályzat egyetlen táblát célozhat meg, de egy adott időpontban csak egy engedélyezhető.

Megjegyzések

Az ALTER SECURITY POLICY utasítás egy tranzakció hatókörébe tartozik. Ha a tranzakciót visszavonják, akkor a nyilatkozatot is visszavonják.

Ha predikátumfüggvényeket használ memóriaoptimalizált táblákkal, a biztonsági szabályzatnak tartalmaznia SCHEMABINDING kell és használnia kell a fordítási WITH NATIVE_COMPILATION tippet. Az SCHEMABINDING argumentum nem módosítható az ALTER utasítással, mert minden predikátumra érvényes. A sémakötés módosításához el kell dobnia és újra létre kell hoznia a biztonsági szabályzatot.

A blokk predikátumok kiértékelése a megfelelő DML-művelet végrehajtása után történik. Ilyen esetben fennáll a veszélye annak, hogy a READ UNCOMMITTED lekérdezések átmeneti értékeket láthatnak, amelyek vissza lesznek állítva.

Engedélyek

A ALTER ANY SECURITY POLICY engedélyre van szükség.

Emellett a következő engedélyekre van szükség minden hozzáadott predikátumhoz:

  • SELECT és REFERENCES a predikátumként használt függvény engedélyeit.
  • REFERENCES a szabályzathoz kötött céltáblára vonatkozó engedély.
  • REFERENCES az argumentumként használt céltábla minden oszlopára vonatkozó engedély.

Példák

Az alábbi példák a szintaxis használatát ALTER SECURITY POLICY mutatják be. Egy teljes biztonsági szabályzatra példa: Sorszintű biztonság.

Egy. További predikátum hozzáadása szabályzathoz

Az alábbi szintaxis módosít egy biztonsági szabályzatot, és hozzáad egy szűrő predikátumot a mytable táblához.

ALTER SECURITY POLICY pol1
    ADD FILTER PREDICATE schema_preds.SecPredicate(column1)
    ON myschema.mytable;

B. Meglévő szabályzat engedélyezése

Az alábbi példa az ALTER szintaxist használja egy biztonsági szabályzat engedélyezéséhez.

ALTER SECURITY POLICY pol1 WITH ( STATE = ON );

C. Több predikátum hozzáadása és elvetése

Az alábbi szintaxis módosítja a biztonsági szabályzatot, szűrő predikátumokat ad hozzá a táblákhoz és mytable1 a mytable3 táblákhoz, és eltávolítja a szűrő predikátumát a mytable2 táblából.

ALTER SECURITY POLICY pol1
ADD FILTER PREDICATE schema_preds.SecPredicate1(column1)
    ON myschema.mytable1,
DROP FILTER PREDICATE
    ON myschema.mytable2,
ADD FILTER PREDICATE schema_preds.SecPredicate2(column2, 1)
    ON myschema.mytable3;

D. Tábla predikátumának módosítása

Az alábbi szintaxis a tábla meglévő szűrő predikátumát myschema.mytable függvényként módosítja SecPredicate2 .

ALTER SECURITY POLICY pol1
    ALTER FILTER PREDICATE schema_preds.SecPredicate2(column1)
        ON myschema.mytable;

E. Blokk predikátumának módosítása

Tábla egy műveletének blokk predikátumfüggvényének módosítása.

ALTER SECURITY POLICY rls.SecPol
    ALTER BLOCK PREDICATE rls.tenantAccessPredicate_v2(TenantId)
    ON dbo.Sales AFTER INSERT;