Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Use o recurso de contexto de sessão do SQL para implementar a segurança em nível de linha no construtor de API de Dados.
Pré-requisitos
- SQL Server e banco de dados existentes.
- CLI do construtor de API de Dados. Instalar a CLI
Criar dados e tabelas SQL
Crie uma tabela com dados fictícios para usar neste cenário de exemplo.
Conecte-se ao banco de dados SQL usando seu cliente ou ferramenta preferencial.
Crie uma tabela nomeada
Revenuescomid, ,categoryrevenueeusernamecolunas.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 ); GOInsira quatro linhas de livro de exemplo na
Revenuestabela.INSERT INTO dbo.Revenues VALUES (1, 'Book', 5000, 'Oscar'), (2, 'Comics', 10000, 'Oscar'), (3, 'Journals', 20000, 'Hannah'), (4, 'Series', 40000, 'Hannah') GOTeste seus dados com uma consulta simples
SELECT *.SELECT * FROM dbo.RevenuesCriar uma função chamada
RevenuesPredicate. Essa função filtrará os resultados com base no contexto da sessão atual.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));Crie uma política de segurança chamada
RevenuesSecurityPolicyusando a função.CREATE SECURITY POLICY dbo.RevenuesSecurityPolicy ADD FILTER PREDICATE dbo.RevenuesPredicate(username) ON dbo.Revenues;
Executar ferramenta
Execute a ferramenta DAB (Construtor de API de Dados) para gerar um arquivo de configuração e uma única entidade.
Crie uma nova configuração ao definir
--set-session-contextcomo true.dab init \ --database-type mssql \ --connection-string "<sql-connection-string>" \ --set-session-context trueAdicione uma nova entidade nomeada
revenuepara adbo.Revenuestabela.dab add revenue \ --source "dbo.Revenues" \ --permissions "anonymous:read"Inicie a ferramenta Data API Builder.
dab startNavegue até o
http://localhost:5000/api/revenueendpoint. Observe que nenhum dado é retornado. Esse comportamento ocorre porque o contexto da sessão não está definido e nenhum registro corresponde ao predicado de filtro.
Testar no SQL
Teste o filtro e o predicado diretamente no SQL para garantir que ele esteja funcionando.
Conecte-se ao SQL Server novamente usando seu cliente ou ferramenta preferencial.
Execute o
sp_set_session_contextpara definir manualmente a alegação do contexto de sessão denamepara o valor estáticoOscar.EXEC sp_set_session_context 'name', 'Oscar';Execute uma consulta típica
SELECT *. Observe que os resultados são filtrados automaticamente usando o predicado.SELECT * FROM dbo.Revenues;