Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Usare la funzionalità del contesto di sessione di SQL per implementare la sicurezza a livello di riga in Generatore API dati.
Prerequisiti
- Sql Server e database esistenti.
- CLI generatore di API dati. Installare l'interfaccia della riga di comando
Creare una tabella e dati SQL
Creare una tabella con dati fittizi da usare in questo scenario di esempio.
Connettersi al database SQL usando il client o lo strumento preferito.
Creare una tabella denominata
Revenuescon le colonneid,category,revenueeusername.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 ); GOInserire quattro righe del libro di esempio nella
Revenuestabella.INSERT INTO dbo.Revenues VALUES (1, 'Book', 5000, 'Oscar'), (2, 'Comics', 10000, 'Oscar'), (3, 'Journals', 20000, 'Hannah'), (4, 'Series', 40000, 'Hannah') GOTestate i vostri dati con una semplice query
SELECT *.SELECT * FROM dbo.RevenuesCreare una funzione denominata
RevenuesPredicate. Questa funzione filtra i risultati in base al contesto di sessione corrente.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));Creare un criterio di sicurezza denominato
RevenuesSecurityPolicyusando la funzione .CREATE SECURITY POLICY dbo.RevenuesSecurityPolicy ADD FILTER PREDICATE dbo.RevenuesPredicate(username) ON dbo.Revenues;
Eseguire lo strumento
Eseguire lo strumento Data API Builder (DAB) per generare un file di configurazione e una singola entità.
Creare una nuova configurazione impostando
--set-session-contextsu true.dab init \ --database-type mssql \ --connection-string "<sql-connection-string>" \ --set-session-context trueAggiungere una nuova entità denominata
revenueper ladbo.Revenuestabella.dab add revenue \ --source "dbo.Revenues" \ --permissions "anonymous:read"Avviare lo strumento Generatore API dati.
dab startPassare all'endpoint
http://localhost:5000/api/revenue. Osservare che non vengono restituiti dati. Questo comportamento si verifica perché il contesto della sessione non è impostato e nessun record corrisponde al predicato del filtro.
Test in SQL
Testare direttamente il filtro e il predicato in SQL per assicurarsi che funzioni.
Connettersi di nuovo a SQL Server usando il client o lo strumento preferito.
Esegui il
sp_set_session_contextper impostare manualmente l'attestazionenamedel contesto sessione al valore staticoOscar.EXEC sp_set_session_context 'name', 'Oscar';Esegue una query tipica
SELECT *. Osservare che i risultati vengono filtrati automaticamente usando il predicato.SELECT * FROM dbo.Revenues;