Aracılığıyla paylaş


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

SQL tablosunu ve verilerini İçerik Oluşturucu

Bu örnek senaryoda kullanmak üzere kurgusal verilerle bir tablo İçerik Oluşturucu.

  1. Tercih ettiğiniz istemciyi veya aracı kullanarak SQL veritabanına bağlanın.

  2. , , revenuecategoryve username sütunlarıyla idadlı 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
    
  3. 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
    
  4. Basit SELECT * bir sorguyla verilerinizi test edin.

    SELECT * FROM dbo.Revenues
    
  5. adlı RevenuesPredicatebir 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));
    
  6. 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.

  1. 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
    
  2. Tablo için dbo.Revenues adlı revenue yeni bir varlık ekleyin.

    dab add revenue \
        --source "dbo.Revenues" \
        --permissions "anonymous:read"
    
  3. Veri API'sini oluşturucu aracını başlatın.

    dab start
    
  4. 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.

  1. Tercih ettiğiniz istemciyi veya aracı kullanarak SQL sunucusuna yeniden bağlanın.

  2. sp_set_session_context oturum bağlamınızın name talebi statik değerine Oscarel ile ayarlamak için komutunu çalıştırın.

    EXEC sp_set_session_context 'name', 'Oscar';
    
  3. 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;