Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
K implementaci zabezpečení na úrovni řádků v Tvůrci rozhraní Data API použijte funkci kontextu relace SQL.
Požadavky
- Existující sql server a databáze.
- Rozhraní příkazového řádku pro tvorbu API dat. Instalace rozhraní příkazového řádku
Vytvoření tabulky a dat SQL
Vytvořte tabulku s fiktivními daty, která se mají použít v tomto ukázkovém scénáři.
Připojte se k databázi SQL pomocí preferovaného klienta nebo nástroje.
Vytvořte tabulku pojmenovanou
Revenuesse sloupciid,category,revenueausername.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 ); GOVložte do
Revenuestabulky čtyři ukázkové řádky knihy.INSERT INTO dbo.Revenues VALUES (1, 'Book', 5000, 'Oscar'), (2, 'Comics', 10000, 'Oscar'), (3, 'Journals', 20000, 'Hannah'), (4, 'Series', 40000, 'Hannah') GOOtestujte data pomocí jednoduchého
SELECT *dotazu.SELECT * FROM dbo.RevenuesVytvořte funkci s názvem
RevenuesPredicate. Tato funkce bude filtrovat výsledky na základě aktuálního kontextu relace.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));Vytvořte zásadu zabezpečení pojmenovanou
RevenuesSecurityPolicypomocí funkce.CREATE SECURITY POLICY dbo.RevenuesSecurityPolicy ADD FILTER PREDICATE dbo.RevenuesPredicate(username) ON dbo.Revenues;
Spustit nástroj
Spuštěním nástroje Data API Builder (DAB) vygenerujte konfigurační soubor a jednu entitu.
Vytvořte novou konfiguraci při nastavení
--set-session-contextna hodnotu true.dab init \ --database-type mssql \ --connection-string "<sql-connection-string>" \ --set-session-context truePřidejte novou entitu pojmenovanou
revenuedbo.Revenuespro tabulku.dab add revenue \ --source "dbo.Revenues" \ --permissions "anonymous:read"Spusťte nástroj Tvůrce rozhraní Data API.
dab startPřejděte ke koncovému
http://localhost:5000/api/revenuebodu. Všimněte si, že se nevrátí žádná data. K tomuto chování dochází, protože kontext relace není nastaven a žádné záznamy neodpovídají predikát filtru.
Testování v SQL
Otestujte filtr a predikát v SQL přímo, abyste měli jistotu, že funguje.
Znovu se připojte k SQL Serveru pomocí preferovaného klienta nebo nástroje.
Spusťte příkaz
sp_set_session_contextk ručnímu nastavení deklarace identity kontextunamerelace na statickou hodnotuOscar.EXEC sp_set_session_context 'name', 'Oscar';Spusťte typický
SELECT *dotaz. Všimněte si, že výsledky se automaticky filtrují pomocí predikátu.SELECT * FROM dbo.Revenues;