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


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

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.

  1. Csatlakozzon az SQL-adatbázishoz az előnyben részesített ügyfél vagy eszköz használatával.

  2. Létrehozás nevű táblát Revenues , category, revenueés username 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
    
  3. 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
    
  4. Tesztelje az adatokat egy egyszerű SELECT * lekérdezéssel.

    SELECT * FROM dbo.Revenues
    
  5. Létrehozás nevű függvénytRevenuesPredicate. 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));
    
  6. 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.

  1. 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
    
  2. Adjon hozzá egy nevű új entitást revenue a dbo.Revenues táblához.

    dab add revenue \
        --source "dbo.Revenues" \
        --permissions "anonymous:read"
    
  3. Indítsa el a Data API Builder eszközt.

    dab start
    
  4. 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.

  1. Csatlakozzon ismét az SQL Serverhez az előnyben részesített ügyfél vagy eszköz használatával.

  2. Futtassa a sp_set_session_context parancsot a munkamenet-környezet igénylésének name statikus értékre Oscartörténő manuális beállításához.

    EXEC sp_set_session_context 'name', 'Oscar';
    
  3. 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;