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:
Zasób obliczeniowy pojedynczego użytkownika musi znajdować się w środowisku Databricks Runtime 15.4 LTS lub nowszym.
Obszar roboczy musi być włączony dla bezserwerowych zasobów obliczeniowych dla zadań, notesów i tabel różnicowych na żywo.
Aby potwierdzić, że region obszaru roboczego obsługuje obliczenia bezserwerowe, zobacz Funkcje z ograniczoną dostępnością regionalną.
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:
-
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.
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_2
i table_w_rls
, które mają zastosowane filtry wierszy. Użytkownik nie ma SELECT
elementu , table_2
do którego odwołuje się view_2
element .
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.
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 TABLE
iMERGE
, 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.