Zastosuj zabezpieczenia na poziomie wiersza

Dotyczy:✅ punkt końcowy analizy SQL i magazyn w usłudze Microsoft Fabric

Zabezpieczenia na poziomie wierszy (RLS) w magazynie danych Fabric i punkcie końcowym analizy danych SQL pozwalają kontrolować dostęp do wierszy w tabeli bazy danych na podstawie ról użytkowników i predykatów. Więcej informacji można znaleźć w artykule Bezpieczeństwo na poziomie wiersza w Fabric Data Warehouse.

Ten przewodnik przeprowadzi Cię przez kroki implementowania zabezpieczeń na poziomie wiersza w usłudze Microsoft Fabric Warehouse lub punkcie końcowym analizy SQL.

Wymagania wstępne

Przed rozpoczęciem upewnij się, że masz następujące elementy:

  1. Obszar roboczy Fabric z aktywną pojemnością lub pojemnością próbną.
  2. Magazyn Fabric lub punkt końcowy analizy SQL w Lakehouse.
  3. Uprawnienia Administratora, Członka lub Współtwórcy w obszarze roboczym albo rozszerzone uprawnienia do obiektu Warehouse lub punktu końcowego analityki SQL.

1. Połącz

  1. Zaloguj się przy użyciu konta z podwyższonymi uprawnieniami dostępu do usługi Warehouse lub punktu końcowego SQL analytics. (Rola Administrator/Członek/Współautor w obszarze roboczym lub Uprawnienia sterowania w punkcie końcowym magazynu lub analizy SQL).
  2. Otwórz obszar roboczy Fabric i przejdź do magazynu danych lub punktu końcowego analizy SQL, w którym chcesz zastosować zabezpieczenia na poziomie wierszy.

2. Definiowanie zasad zabezpieczeń

  1. Określ role i predykaty, których chcesz użyć do kontrolowania dostępu do danych. Role definiują, kto może uzyskiwać dostęp do danych, a predykaty definiują kryteria dostępu.

  2. Tworzenie predykatów zabezpieczeń. Predykaty zabezpieczeń to warunki określające, do których wierszy użytkownik może uzyskać dostęp. Predykaty bezpieczeństwa można tworzyć jako funkcje tabelaryczne zdefiniowane bezpośrednio w instrukcji.

    -- Creating schema for Security
    CREATE SCHEMA Security;
    GO
    
    -- Creating a function for the SalesRep evaluation
    CREATE FUNCTION Security.tvf_securitypredicate(@UserName AS varchar(50))
        RETURNS TABLE
    WITH SCHEMABINDING
    AS
        RETURN SELECT 1 AS tvf_securitypredicate_result
    WHERE @UserName = USER_NAME()
    OR USER_NAME() = 'BatchProcess@contoso.com';
    GO
    
    -- Using the function to create a Security Policy
    CREATE SECURITY POLICY YourSecurityPolicy
    ADD FILTER PREDICATE Security.tvf_securitypredicate(UserName_column)
    ON sampleschema.sampletable
    WITH (STATE = ON);
    GO 
    
  3. Zastąp YourSecurityPolicy nazwą zasad, tvf_securitypredicate nazwą funkcji predykatu, sampleschema nazwą schematu, a sampletable nazwą tabeli docelowej.

  4. W tym ćwiczeniu założono, że w tabeli danych znajduje się kolumna, UserName_column, która zawiera odpowiednią nazwę użytkownika wypełniona przez funkcję systemową USER_NAME(). Zastąp element UserName_column kolumną w tabeli zawierającą nazwy użytkowników.

  5. Zastąp WHERE @UserName = USER_NAME(); klauzulą WHERE, która odpowiada żądanemu filtrowi zabezpieczeń opartemu na predykatach. Na przykład to filtruje dane, w których kolumna UserName, przypisana do parametru @UserName, odpowiada wynikowi funkcji systemowej USER_NAME().

    • Opcjonalnie instrukcja WHERE zawiera również wyjątek dla nazwy użytkownika tożsamości zarządzanej, która obsługuje przenoszenie danych, na przykład BatchProcess@contoso.com.
  6. Powtórz te kroki, aby w razie potrzeby utworzyć zasady zabezpieczeń dla innych tabel.

3. Przetestuj zabezpieczenia na poziomie wierszy

  1. Zaloguj się do Fabric jako użytkownik, który jest członkiem roli z przypisaną polityką zabezpieczeń. Użyj następującego zapytania, aby sprawdzić wartość, która powinna odpowiadać wartości w tabeli.

    SELECT USER_NAME() 
    
  2. Wykonaj zapytanie względem tabel bazy danych, aby sprawdzić, czy zabezpieczenia na poziomie wiersza działają zgodnie z oczekiwaniami. Użytkownicy powinni widzieć tylko dane, które spełniają predykat zabezpieczeń zdefiniowany w swojej roli. Na przykład:

    SELECT * FROM sampleschema.sampletable
    
  3. Podobne odfiltrowane wyniki dla użytkownika będą filtrowane z innymi aplikacjami, które używają uwierzytelniania Firmy Microsoft Entra na potrzeby dostępu do bazy danych. Aby uzyskać więcej informacji, zobacz Microsoft Entra authentication as an alternative to SQL authentication in Microsoft Fabric (Uwierzytelnianie entra firmy Microsoft jako alternatywa dla uwierzytelniania SQL w usłudze Microsoft Fabric).

4. Monitorowanie i utrzymywanie zabezpieczeń na poziomie wiersza

Regularnie monitoruj i aktualizuj zasady zabezpieczeń na poziomie wierszy w miarę zmiany wymagań dotyczących zabezpieczeń. Śledź przypisania ról i upewnij się, że użytkownicy mają odpowiedni dostęp.