Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Gebruik de sessiecontextfunctie van SQL om beveiliging op rijniveau te implementeren in Data API Builder.
Vereiste voorwaarden
- Bestaande SQL-server en -database.
- Data API builder CLI. De CLI installeren
SQL-tabel en -gegevens maken
Maak een tabel met fictieve gegevens die in dit voorbeeldscenario moeten worden gebruikt.
Maak verbinding met de SQL-database met behulp van uw favoriete client of hulpprogramma.
Maak een tabel genaamd
Revenuesmet de kolommenid,category,revenue, enusername.DROP TABLE IF EXISTS dbo.Revenues; CREATE TABLE dbo.Revenues( id int PRIMARY KEY, category varchar(max) NOT NULL, revenue int, username varchar(max) NOT NULL ); GOVoeg vier voorbeeldboekrijen in de
Revenuestabel in.INSERT INTO dbo.Revenues VALUES (1, 'Book', 5000, 'Oscar'), (2, 'Comics', 10000, 'Oscar'), (3, 'Journals', 20000, 'Hannah'), (4, 'Series', 40000, 'Hannah') GOTest uw gegevens met een eenvoudige
SELECT *query.SELECT * FROM dbo.RevenuesMaak een functie met de naam
RevenuesPredicate. Met deze functie worden resultaten gefilterd op basis van de huidige sessiecontext.CREATE FUNCTION dbo.RevenuesPredicate(@username varchar(max)) RETURNS TABLE WITH SCHEMABINDING AS RETURN SELECT 1 AS fn_securitypredicate_result WHERE @username = CAST(SESSION_CONTEXT(N'name') AS varchar(max));Maak een beveiligingsbeleid met de naam
RevenuesSecurityPolicymet behulp van de functie.CREATE SECURITY POLICY dbo.RevenuesSecurityPolicy ADD FILTER PREDICATE dbo.RevenuesPredicate(username) ON dbo.Revenues;
Hulpprogramma uitvoeren
Voer het hulpprogramma Data API Builder (DAB) uit om een configuratiebestand en één entiteit te genereren.
Maak een nieuwe configuratie en stel deze in op
--set-session-contexttrue.dab init \ --database-type mssql \ --connection-string "<sql-connection-string>" \ --set-session-context trueVoeg een nieuwe entiteit toe met de naam
revenuevan dedbo.Revenuestabel.dab add revenue \ --source "dbo.Revenues" \ --permissions "anonymous:read"Start het hulpprogramma voor het maken van data-API's.
dab startNavigeer naar het
http://localhost:5000/api/revenueeindpunt. U ziet dat er geen gegevens worden geretourneerd. Dit gedrag treedt op omdat de sessiecontext niet is ingesteld en er geen records overeenkomen met het filterpredicaat.
Testen in SQL
Test het filter en predicaat rechtstreeks in SQL om te controleren of het werkt.
Maak opnieuw verbinding met de SQL-server met behulp van uw favoriete client of hulpprogramma.
Voer de
sp_set_session_contextopdracht uit om de claim vannameuw sessiecontext handmatig in te stellen op de statische waardeOscar.EXEC sp_set_session_context 'name', 'Oscar';Voer een typische
SELECT *query uit. U ziet dat de resultaten automatisch worden gefilterd met behulp van het predicaat.SELECT * FROM dbo.Revenues;