General availability: SQL Database Row-Level Security block predicates
30 November 2015
The Row-Level Security (RLS) feature in Azure SQL Database now supports block predicates. In contrast to filter predicates, which limit the rows visible to a user, block predicates prevent a user from inserting, updating, or deleting rows that violate your access criteria. You should use filter and block predicates together to control read and write access to specific rows in a table. For example, RLS is commonly used to prevent tenants from accessing each other’s data in multitenant databases. You can use a filter predicate to limit which rows are visible to each tenant, and now you can reuse the same function as a block predicate to prevent cross-tenant inserts or updates:
CREATE SECURITY POLICY Security.tenantAccessPolicy ADD FILTER PREDICATE Security.fn_tenantAccessPredicate(TenantId) ON dbo.MyTable, ADD BLOCK PREDICATE Security.fn_tenantAccessPredicate(TenantId) ON dbo.MyTableFor more information, including demos and code samples, check out our announcement blog post: Row-Level Security Block Predicates are Generally Available.