Sorszintű biztonság megvalósítása munkamenet-környezettel a Data API Builderben
Az SQL munkamenet-környezet funkciójával sorszintű biztonságot valósíthat meg a Data API Builderben.
Előfeltételek
- Meglévő SQL Server és adatbázis.
- Data API Builder PARANCSSORI. A CLI telepítése
- Adatbázis-ügyfél (SQL Server Management Studio, Azure Data Studio stb.)
- Ha nincs telepítve ügyfél, telepítse az Azure Data Studiót
SQL-tábla és -adatok Létrehozás
Létrehozás egy táblát, amely fiktív adatokat tartalmaz ebben a példaforgatókönyvben.
Csatlakozzon az SQL-adatbázishoz az előnyben részesített ügyfél vagy eszköz használatával.
Létrehozás nevű táblát
Revenues
,category
,revenue
ésusername
oszlopokkalid
.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 ); GO
Szúrjon be négy könyvmintát a
Revenues
táblázatba.INSERT INTO dbo.Revenues VALUES (1, 'Book', 5000, 'Oscar'), (2, 'Comics', 10000, 'Oscar'), (3, 'Journals', 20000, 'Hannah'), (4, 'Series', 40000, 'Hannah') GO
Tesztelje az adatokat egy egyszerű
SELECT *
lekérdezéssel.SELECT * FROM dbo.Revenues
Létrehozás nevű függvényt
RevenuesPredicate
. Ez a függvény az aktuális munkamenet-környezet alapján szűri az eredményeket.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));
Létrehozás egy nevű
RevenuesSecurityPolicy
biztonsági szabályzatot a függvény használatával.CREATE SECURITY POLICY dbo.RevenuesSecurityPolicy ADD FILTER PREDICATE dbo.RevenuesPredicate(username) ON dbo.Revenues;
Eszköz futtatása
Futtassa a Data API Builder (DAB) eszközt egy konfigurációs fájl és egyetlen entitás létrehozásához.
Létrehozás egy új konfigurációt, miközben true (igaz) értékre állítja
--set-session-context
.dab init \ --database-type mssql \ --connection-string "<sql-connection-string>" \ --set-session-context true
Adjon hozzá egy nevű új entitást
revenue
adbo.Revenues
táblához.dab add revenue \ --source "dbo.Revenues" \ --permissions "anonymous:read"
Indítsa el a Data API Builder eszközt.
dab start
Lépjen a végpontra
http://localhost:5000/api/revenue
. Figyelje meg, hogy a függvény nem ad vissza adatokat. Ez a viselkedés azért fordul elő, mert a munkamenet-környezet nincs beállítva, és egyetlen rekord sem felel meg a szűrő predikátumának.
Tesztelés AZ SQL-ben
Tesztelje közvetlenül az SQL-ben a szűrőt és a predikátumot, hogy biztosan működjön.
Csatlakozzon ismét az SQL Serverhez az előnyben részesített ügyfél vagy eszköz használatával.
Futtassa a
sp_set_session_context
parancsot a munkamenet-környezet igénylésénekname
statikus értékreOscar
történő manuális beállításához.EXEC sp_set_session_context 'name', 'Oscar';
Futtasson egy tipikus
SELECT *
lekérdezést. Figyelje meg, hogy az eredmények automatikusan szűrve lesznek a predikátum használatával.SELECT * FROM dbo.Revenues;