Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Använd sessionskontextfunktionen i SQL för att implementera säkerhet på radnivå i Data API Builder.
Förutsättningar
- Befintlig SQL-server och databas.
- Data-API-byggarens CLI. Installera CLI
Skapa SQL-tabell och -data
Skapa en tabell med fiktiva data som ska användas i det här exempelscenariot.
Anslut till SQL-databasen med den klient eller det verktyg du föredrar.
Skapa en tabell med namnet
Revenuesmedidkolumnerna ,category,revenueochusername.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 ); GOInfoga fyra exempelboksrader i
Revenuestabellen.INSERT INTO dbo.Revenues VALUES (1, 'Book', 5000, 'Oscar'), (2, 'Comics', 10000, 'Oscar'), (3, 'Journals', 20000, 'Hannah'), (4, 'Series', 40000, 'Hannah') GOTesta dina data med en enkel
SELECT *fråga.SELECT * FROM dbo.RevenuesSkapa en funktion med namnet
RevenuesPredicate. Den här funktionen filtrerar resultat baserat på den aktuella sessionskontexten.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));Skapa en säkerhetsprincip med namnet
RevenuesSecurityPolicymed funktionen .CREATE SECURITY POLICY dbo.RevenuesSecurityPolicy ADD FILTER PREDICATE dbo.RevenuesPredicate(username) ON dbo.Revenues;
Kör verktyget
Kör verktyget Data API Builder (DAB) för att generera en konfigurationsfil och en enda entitet.
Skapa en ny konfiguration genom att ställa in
--set-session-contexttill true.dab init \ --database-type mssql \ --connection-string "<sql-connection-string>" \ --set-session-context trueLägg till en ny entitet med namnet
revenuefördbo.Revenuestabellen.dab add revenue \ --source "dbo.Revenues" \ --permissions "anonymous:read"Starta verktyget Data API Builder.
dab startNavigera till
http://localhost:5000/api/revenueslutpunkten. Observera att inga data returneras. Det här beteendet beror på att sessionskontexten inte har angetts och inga poster matchar filterpredikatet.
Testa i SQL
Testa filtret och predikatet i SQL direkt för att säkerställa att det fungerar.
Anslut till SQL-servern igen med den klient eller det verktyg du föredrar.
Kör
sp_set_session_contextför att manuellt ange sessionskontextensnamekrav till det statiska värdetOscar.EXEC sp_set_session_context 'name', 'Oscar';Kör en typisk
SELECT *fråga. Observera att resultaten filtreras automatiskt med hjälp av predikatet.SELECT * FROM dbo.Revenues;