Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Med detaljerad åtkomstkontroll kan du begränsa åtkomsten till specifika data med hjälp av vyer, radfilter och kolumnmasker. Den här sidan förklarar hur serverlös beräkning används för att tillämpa detaljerade åtkomstkontroller på dedikerade beräkningsresurser.
Anmärkning
Dedikerad beräkning är allmännyttig eller arbetsbelastningsberäkning som konfigurerats med dedikerat åtkomstläge (tidigare enanvändarläge). Se Åtkomstlägen.
Kravspecifikation
Så här använder du dedikerad beräkning för att köra frågor mot en vy eller tabell med detaljerade åtkomstkontroller:
- Den dedikerade beräkningsresursen måste finnas på Databricks Runtime 15.4 LTS eller senare.
- Arbetsytan måste vara aktiverad för serverlös beräkning.
Om din dedikerade beräkningsresurs och arbetsyta uppfyller dessa krav körs datafiltrering automatiskt.
Så här fungerar datafiltrering på dedikerad beräkning
När en fråga får åtkomst till ett databasobjekt med detaljerade åtkomstkontroller skickar den dedikerade beräkningsresursen frågan till arbetsytans serverlösa beräkning för att utföra datafiltreringen. Filtrerade data överförs sedan mellan den serverlösa och dedikerade beräkningen med hjälp av tillfälliga filer på arbetsytans interna molnlagring.
Den här funktionen gäller för följande databasobjekt:
- Dynamiska vyer
- Tabeller med radfilter eller kolumnmasker
- Vyer som skapats över tabeller som användaren inte har behörighet för
- Materialiserade vyer
- Strömmande tabeller
I följande diagram har en användare SELECT behörighet på table_1, view_2 och table_w_rls, som har radfilter tillämpade. Användaren har inte behörigheten SELECT på table_2, som refereras till av view_2.
Frågan på table_1 hanteras helt av den dedikerade beräkningsresursen eftersom ingen filtrering krävs. Frågorna på view_2 och table_w_rls kräver datafiltrering för att returnera de data som användaren har åtkomst till. Dessa frågor hanteras av funktionen för datafiltrering vid serverlös beräkning.
Stöd för skrivåtgärder
Viktigt!
Den här funktionen finns som allmänt tillgänglig förhandsversion.
I Databricks Runtime 16.3 och senare kan du skriva till tabeller med radfilter eller kolumnmasker, med följande alternativ:
-
MERGE INTO SQL-kommandot, som du kan använda för att uppnå
INSERT,UPDATEochDELETEfunktioner. - Deltasammanfogningsåtgärden.
- API:et
DataFrame.write.mode("append").
För att uppnå INSERT, UPDATE och DELETE-funktionalitet kan du använda en mellanlagringstabell och instruktionens MERGE INTOWHEN MATCHED och WHEN NOT MATCHED-satserna.
Följande är ett exempel på att använda UPDATE:MERGE INTO
MERGE INTO target_table AS t
USING source_table AS s
ON t.id = s.id
WHEN MATCHED THEN
UPDATE SET
t.column1 = s.column1,
t.column2 = s.column2;
Följande är ett exempel på att använda INSERT:MERGE INTO
MERGE INTO target_table AS t
USING source_table AS s
ON t.id = s.id
WHEN NOT MATCHED THEN
INSERT (id, column1, column2) VALUES (s.id, s.column1, s.column2);
Följande är ett exempel på en DELETE med :MERGE INTO
MERGE INTO target_table AS t
USING source_table AS s ON t.id = s.id
WHEN MATCHED AND s.some_column = TRUE THEN DELETE;
Stöd för DDL, SHOW, DESCRIBE och andra kommandon
I Databricks Runtime 17.1 och senare kan du använda följande kommandon i kombination med detaljerade åtkomststyrda objekt på dedikerad beräkning:
- DDL-instruktioner
- SHOW-instruktioner
- DESCRIBE-instruktioner
- OPTIMIZE
- DESCRIBE HISTORY
- FSCK REPAIR TABLE (Databricks Runtime 17.2 och senare)
Om det behövs körs dessa kommandon automatiskt på serverlös beräkning.
Vissa kommandon stöds inte, inklusive VACCUM, RESTOREoch REORG TABLE.
Serverlösa beräkningskostnader
Kunder debiteras för de serverlösa beräkningsresurser som utför datafiltreringsåtgärder. Prisinformation finns i Plattformsnivåer och tillägg.
Användare med åtkomst kan fråga tabellen system.billing.usage för att se hur mycket de har debiterats. Följande fråga delar till exempel upp beräkningskostnader per användare:
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;
Visa frågeprestanda när datafiltrering används
Spark-användargränssnittet för dedikerad beräkning visar mått som du kan använda för att förstå dina frågors prestanda. För varje fråga som du kör på beräkningsresursen visar fliken SQL/Dataframe frågegrafrepresentationen. Om en fråga var involverad i datafiltrering visar användargränssnittet en RemoteSparkConnectScan-operatornod längst ned i diagrammet. Noden visar mått som du kan använda för att undersöka frågeprestanda. Se Visa beräkningsinformation i Spark-användargränssnittet.
Expandera operatornoden RemoteSparkConnectScan för att se mått som hanterar sådana frågor som följande:
- Hur lång tid tog det att filtrera data? Visa "total fjärrutförandetid".
- Hur många rader kvar efter datafiltrering? Visa utdata för rader
- Hur mycket data (i byte) returnerades efter datafiltrering? Visa "storlek på radernas utdata".
- Hur många datafiler partitionerades och behövde inte läsas från lagringen? Visa "Filer som rensats" och "Storlek på filer som rensats".
- Hur många datafiler kunde inte beskäras och måste läsas från lagringen? Visa "Läs filer" och "Storlek på lästa filer".
- Hur många av filerna som måste läsas fanns redan i cacheminnet? Visa "Cache träffar storlek" och "Cache missar storlek.".
Begränsningar
Endast batchläsningar stöds i strömmande tabeller. Tabeller med radfilter eller kolumnmasker stöder inte strömmande arbetsbelastningar vid dedikerad beräkning.
Det går inte att ändra standardkatalogen (
spark.sql.catalog.spark_catalog).I Databricks Runtime 16.2 och nedan finns det inget stöd för skriv- eller uppdateringstabellåtgärder på tabeller som har radfilter eller kolumnmasker tillämpade.
Mer specifikt stöds inte DML-åtgärder, till exempel
INSERT,DELETEUPDATE,REFRESH TABLE, ochMERGE. Du kan bara läsa (SELECT) från dessa tabeller.I Databricks Runtime 16.3 och senare stöds inte tabellåtgärder som
INSERT,DELETE, ochUPDATE, men de kan utföras med hjälp avMERGE, vilket stöds.I Databricks Runtime 16.2 och nedan blockeras självkopplingar som standard när datafiltrering anropas eftersom dessa frågor kan returnera olika ögonblicksbilder av samma fjärrtabell. Du kan dock aktivera dessa frågor genom att ange
spark.databricks.remoteFiltering.blockSelfJoinstillfalsepå beräkning som du kör dessa kommandon på.I Databricks Runtime 16.3 och senare synkroniseras ögonblicksbilder automatiskt mellan dedikerade och serverlösa beräkningsresurser. På grund av den här synkroniseringen returnerar självkopplingsfrågor som använder datafiltreringsfunktionen identiska ögonblicksbilder och aktiveras som standard. Undantagen är materialiserade vyer och alla vyer, materialiserade vyer och strömmande tabeller som delas med Delta Sharing. För dessa objekt blockeras självkopplingar som standard, men du kan aktivera dessa frågor genom att ange
spark.databricks.remoteFiltering.blockSelfJoinstill false vid beräkning som du kör dessa kommandon på.Om du aktiverar självkopplingsfrågor för vyer, materialiserade vyer och strömmande tabeller måste du se till att det inte finns några samtidiga skrivningar till objekten som ansluts.
- Inget stöd för Docker-avbildningar.
- Inget stöd när du använder Databricks Container Services.
- Du måste öppna portarna 8443 och 8444 för att aktivera detaljerad åtkomstkontroll för dedikerad beräkning. Se Regler för nätverkssäkerhetsgrupp.