Veri API'sini oluşturucusunda oturum bağlamı ile satır düzeyi güvenlik uygulama
Veri API'sinin oluşturucusunda satır düzeyi güvenlik uygulamak için SQL'in oturum bağlamı özelliğini kullanın.
Önkoşullar
- Mevcut SQL sunucusu ve veritabanı.
- Veri API'si oluşturucu CLI. CLI’yı yükleme
- Veritabanı istemcisi (SQL Server Management Studio, Azure Data Studio vb.)
- Yüklü bir istemciniz yoksa Azure Data Studio'yu yükleyin
SQL tablosunu ve verilerini İçerik Oluşturucu
Bu örnek senaryoda kullanmak üzere kurgusal verilerle bir tablo İçerik Oluşturucu.
Tercih ettiğiniz istemciyi veya aracı kullanarak SQL veritabanına bağlanın.
, ,
revenue
category
veusername
sütunlarıylaid
adlıRevenues
bir tablo İçerik Oluşturucu.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
Tabloya
Revenues
dört örnek kitap satırı ekleyin.INSERT INTO dbo.Revenues VALUES (1, 'Book', 5000, 'Oscar'), (2, 'Comics', 10000, 'Oscar'), (3, 'Journals', 20000, 'Hannah'), (4, 'Series', 40000, 'Hannah') GO
Basit
SELECT *
bir sorguyla verilerinizi test edin.SELECT * FROM dbo.Revenues
adlı
RevenuesPredicate
bir işlev İçerik Oluşturucu. Bu işlev geçerli oturum bağlamını temel alarak sonuçları filtreler.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));
işlevini kullanarak adlı
RevenuesSecurityPolicy
bir güvenlik ilkesi İçerik Oluşturucu.CREATE SECURITY POLICY dbo.RevenuesSecurityPolicy ADD FILTER PREDICATE dbo.RevenuesPredicate(username) ON dbo.Revenues;
Çalıştırma aracı
Bir yapılandırma dosyası ve tek bir varlık oluşturmak için Veri API oluşturucusu (DAB) aracını çalıştırın.
true olarak ayarlanırken
--set-session-context
yeni bir yapılandırma İçerik Oluşturucu.dab init \ --database-type mssql \ --connection-string "<sql-connection-string>" \ --set-session-context true
Tablo için
dbo.Revenues
adlırevenue
yeni bir varlık ekleyin.dab add revenue \ --source "dbo.Revenues" \ --permissions "anonymous:read"
Veri API'sini oluşturucu aracını başlatın.
dab start
http://localhost:5000/api/revenue
Uç noktaya gidin. Hiçbir verinin döndürüldüğünü gözlemleyin. Bu davranış, oturum bağlamı ayarlanmadığından ve hiçbir kayıt filtre koşuluyla eşleşmediğinden oluşur.
SQL'de test
Çalıştığından emin olmak için filtreyi ve koşulu doğrudan SQL'de test edin.
Tercih ettiğiniz istemciyi veya aracı kullanarak SQL sunucusuna yeniden bağlanın.
sp_set_session_context
oturum bağlamınızınname
talebi statik değerineOscar
el ile ayarlamak için komutunu çalıştırın.EXEC sp_set_session_context 'name', 'Oscar';
Tipik
SELECT *
bir sorgu çalıştırın. Sonuçların koşul kullanılarak otomatik olarak filtrelendiğini gözlemleyin.SELECT * FROM dbo.Revenues;