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?
Unity Catalog umożliwia kontrolowanie dostępu do danych tabelarycznych na poziomie kolumn i wierszy (zwanej również szczegółową kontrolą 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ń, notatników i tabel Delta Live Tables.
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 mieć
SELECT
w tabelach i widokach, do których odwołuje się widok, co oznacza, że nie można używać widoków w celu 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 utworzone na podstawie tabel, do których użytkownik nie ma uprawnień
SELECT
- 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 sprawdzić tabelę użycia rozliczeń systemu, aby zobaczyć, ile zostało naliczone. 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. Z tych tabel można tylko odczytywać (SELECT
).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 łączeń samodzielnych na jednym zasobie obliczeniowym użytkownika, należy pamiętać, że zapytanie łączenia samodzielnego obsługiwane przez funkcję filtrowania danych może zwracać różne wersje (z różnych punktów w czasie) tej samej zdalnej tabeli.
Jeśli obszar roboczy został wdrożony z zaporą przed listopadem 2024 r., należy otworzyć porty 8443 i 8444, aby umożliwić szczegółową kontrolę dostępu w obliczeniach pojedynczego użytkownika. Zobacz Reguły grupy zabezpieczeń sieciowej.