Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Użyj funkcji kontekstu sesji języka SQL, aby zaimplementować zabezpieczenia na poziomie wiersza w narzędziu Data API Builder.
Wymagania wstępne
- Istniejący serwer SQL i baza danych.
- Kreator interfejsu wiersza polecenia do API danych. Zainstaluj CLI
Tworzenie tabeli i danych SQL
Utwórz tabelę z fikcyjnymi danymi do użycia w tym przykładowym scenariuszu.
Nawiąż połączenie z bazą danych SQL przy użyciu preferowanego klienta lub narzędzia.
Utwórz tabelę o nazwie
Revenuesz kolumnamiid,category,revenueiusername.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 ); GOWstaw do tabeli cztery przykładowe wiersze
Revenuesksiążki.INSERT INTO dbo.Revenues VALUES (1, 'Book', 5000, 'Oscar'), (2, 'Comics', 10000, 'Oscar'), (3, 'Journals', 20000, 'Hannah'), (4, 'Series', 40000, 'Hannah') GOPrzetestuj dane przy użyciu prostego
SELECT *zapytania.SELECT * FROM dbo.RevenuesUtwórz funkcję o nazwie
RevenuesPredicate. Ta funkcja będzie filtrować wyniki na podstawie bieżącego kontekstu sesji.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));Utwórz zasady zabezpieczeń o nazwie
RevenuesSecurityPolicyprzy użyciu funkcji .CREATE SECURITY POLICY dbo.RevenuesSecurityPolicy ADD FILTER PREDICATE dbo.RevenuesPredicate(username) ON dbo.Revenues;
Uruchamianie narzędzia
Uruchom narzędzie konstruktora interfejsu API danych (DAB), aby wygenerować plik konfiguracji i jedną jednostkę.
Utwórz nową konfigurację przez ustawienie
--set-session-contextna prawdę.dab init \ --database-type mssql \ --connection-string "<sql-connection-string>" \ --set-session-context trueDodaj nową jednostkę o nazwie
revenuedladbo.Revenuestabeli.dab add revenue \ --source "dbo.Revenues" \ --permissions "anonymous:read"Uruchom narzędzie konstruktora interfejsu API danych.
dab startPrzejdź do punktu końcowego
http://localhost:5000/api/revenue. Zwróć uwagę, że żadne dane nie są zwracane. To zachowanie występuje, ponieważ kontekst sesji nie jest ustawiony i żadne rekordy nie są zgodne z predykatem filtru.
Testowanie w programie SQL
Przetestuj filtr i predykat bezpośrednio w języku SQL, aby upewnić się, że działa.
Połącz się ponownie z serwerem SQL przy użyciu preferowanego klienta lub narzędzia.
Uruchom
sp_set_session_context, aby ręcznie ustawić żądanie kontekstu sesjinamena statyczną wartośćOscar.EXEC sp_set_session_context 'name', 'Oscar';Uruchom typowe
SELECT *zapytanie. Zwróć uwagę, że wyniki są automatycznie filtrowane przy użyciu predykatu.SELECT * FROM dbo.Revenues;