Udostępnij za pośrednictwem


Szczegółowa kontrola dostępu w obliczeniach pojedynczego użytkownika

W tym artykule przedstawiono funkcję filtrowania danych, która umożliwia szczegółową kontrolę dostępu w zapytaniach uruchamianych w obliczeniach pojedynczego użytkownika (obliczenia wszystkich celów lub zadań skonfigurowanych w trybie dostępu pojedynczego użytkownika ). Zobacz Tryby dostępu.

To filtrowanie danych odbywa się w tle przy użyciu obliczeń bezserwerowych.

Dlaczego niektóre zapytania dotyczące obliczeń pojedynczego użytkownika wymagają filtrowania danych?

Wykaz aparatu Unity umożliwia kontrolowanie dostępu do danych tabelarycznych na poziomie kolumny i wiersza (znanej również jako szczegółowa kontrola dostępu) przy użyciu następujących funkcji:

Gdy użytkownicy wysyłają zapytania dotyczące widoków wykluczających dane z przywołynych tabel lub tabel zapytań, które stosują filtry i maski, mogą używać dowolnego z następujących zasobów obliczeniowych bez ograniczeń:

  • Magazyny SQL
  • Współużytkowane zasoby obliczeniowe

Jeśli jednak używasz obliczeń pojedynczego użytkownika do uruchamiania takich zapytań, obliczenia i obszar roboczy muszą spełniać określone wymagania:

Jeśli zasób obliczeniowy i obszar roboczy pojedynczego użytkownika spełniają te wymagania, filtrowanie danych jest uruchamiane automatycznie za każdym razem, gdy wykonujesz zapytanie dotyczące widoku lub tabeli korzystającej z szczegółowej kontroli dostępu.

Obsługa zmaterializowanych widoków, tabel przesyłania strumieniowego i widoków standardowych

Oprócz widoków dynamicznych, filtrów wierszy i masek kolumn filtrowanie danych umożliwia również wykonywanie zapytań dotyczących następujących widoków i tabel, które nie są obsługiwane w obliczeniach pojedynczego użytkownika z uruchomionym środowiskiem Databricks Runtime 15.3 i poniżej:

  • Widoki standardowe

    W przypadku obliczeń pojedynczego użytkownika z uruchomionym środowiskiem Databricks Runtime 15.3 lub nowszym użytkownik, który uruchamia zapytanie w widoku, musi znajdować SELECT się w tabelach i widokach, do których odwołuje się widok, co oznacza, że nie można używać widoków do zapewnienia szczegółowej kontroli dostępu. W środowisku Databricks Runtime 15.4 z filtrowaniem danych użytkownik, który wysyła zapytanie do widoku, nie potrzebuje dostępu do przywoływalnych tabel i widoków.

  • Tabele przesyłania strumieniowego

  • Zmaterializowane widoki

W jaki sposób filtrowanie danych działa na obliczeniach pojedynczego użytkownika?

Za każdym razem, gdy zapytanie uzyskuje dostęp do następujących obiektów bazy danych, zasób obliczeniowy pojedynczego użytkownika przekazuje zapytanie do przetwarzania bezserwerowego w celu przeprowadzenia filtrowania danych:

  • Widoki wbudowane w tabele, na których użytkownik nie ma SELECT uprawnień
  • Widoki dynamiczne
  • Tabele z zdefiniowanymi filtrami wierszy lub maskami kolumn
  • Zmaterializowane widoki i tabele przesyłania strumieniowego

Na poniższym diagramie użytkownik ma SELECT w systemach table_1, view_2i table_w_rls, które mają zastosowane filtry wierszy. Użytkownik nie ma SELECT elementu , table_2do którego odwołuje się view_2element .

Diagram przedstawiający sposób działania filtrowania danych

Zapytanie jest table_1 obsługiwane w całości przez zasób obliczeniowy pojedynczego użytkownika, ponieważ nie jest wymagane filtrowanie. Zapytania dotyczące view_2 i table_w_rls wymagają filtrowania danych w celu zwrócenia danych, do których użytkownik ma dostęp. Te zapytania są obsługiwane przez funkcję filtrowania danych w obliczeniach bezserwerowych.

Jakie koszty są naliczane?

Klienci są obciążani opłatami za zasoby obliczeniowe bezserwerowe, które są używane do wykonywania operacji filtrowania danych. Aby uzyskać informacje o cenach, zobacz Warstwy platformy i dodatki.

Możesz wykonać zapytanie dotyczące tabeli użycia rozliczeń systemu, aby zobaczyć, ile zostało naliczone opłaty. Na przykład następujące zapytanie dzieli koszty obliczeń według użytkownika:

SELECT usage_date,
sku_name,
 identity_metadata.run_as,
SUM(usage_quantity) AS `DBUs consumed by FGAC`
FROM system.billing.usage
WHERE usage_date BETWEEN '2024-08-01' AND '2024-09-01'
 AND billing_origin_product = 'FINE_GRAINED_ACCESS_CONTROL'
GROUP BY 1, 2, 3 ORDER BY 1;

Wyświetlanie wydajności zapytań w przypadku włączenia filtrowania danych

Interfejs użytkownika platformy Spark dla obliczeń pojedynczego użytkownika wyświetla metryki, których można użyć do zrozumienia wydajności zapytań. Dla każdego zapytania uruchamianego w zasobie obliczeniowym karta SQL/Dataframe wyświetla reprezentację grafu zapytania. Jeśli zapytanie było zaangażowane w filtrowanie danych, interfejs użytkownika wyświetla węzeł operatora RemoteSparkConnectScan w dolnej części grafu. Ten węzeł wyświetla metryki, których można użyć do zbadania wydajności zapytań. Zobacz Wyświetlanie informacji o obliczeniach w interfejsie użytkownika platformy Apache Spark.

Interfejs SparkUI przedstawiający węzeł RemoteSparkConnectScan

Rozwiń węzeł operatora RemoteSparkConnectScan, aby wyświetlić metryki, które odpowiadają na następujące pytania:

  • Ile czasu zajęło filtrowanie danych? Wyświetl "całkowity czas wykonywania zdalnego".
  • Ile wierszy pozostało po filtrowaniu danych? Wyświetl "dane wyjściowe wierszy".
  • Ile danych (w bajtach) zostało zwróconych po filtrowaniu danych? Wyświetl "rozmiar danych wyjściowych wierszy".
  • Ile plików danych zostało oczyszczonych z partycji i nie trzeba było odczytywać z magazynu? Wyświetl "Pliki oczyszczone" i "Rozmiar plików oczyszczonych".
  • Ile plików danych nie można usunąć i trzeba było odczytać z magazynu? Wyświetl "Pliki odczytane" i "Rozmiar odczytanych plików".
  • Ile plików było już w pamięci podręcznej? Wyświetl "Rozmiar trafień pamięci podręcznej" i "Rozmiar błędu pamięci podręcznej".

Ograniczenia

  • Brak obsługi operacji zapisu lub odświeżania tabeli w tabelach, które mają zastosowane filtry wierszy lub maski kolumn.

    W szczególności operacje DML, takie jak INSERT, DELETE, UPDATE, REFRESH TABLEi MERGE, nie są obsługiwane. Można tylko odczytywać (SELECT) z tych tabel.

  • Samosprzężenia są domyślnie blokowane, gdy jest wywoływane filtrowanie danych, ale można je zezwolić, ustawiając spark.databricks.remoteFiltering.blockSelfJoins wartość false na obliczeniach, na których są uruchamiane te polecenia.

    Przed włączeniem funkcji samosprzężenia w zasobie obliczeniowym pojedynczego użytkownika należy pamiętać, że zapytanie samosprzężenia obsługiwane przez funkcję filtrowania danych może zwracać różne migawki tej samej tabeli zdalnej.