Delen via


Fijnmazig toegangsbeheer voor rekenkracht van één gebruiker

In dit artikel wordt de functionaliteit voor gegevensfiltering geïntroduceerd waarmee gedetailleerd toegangsbeheer mogelijk is voor query's die worden uitgevoerd op berekeningen van één gebruiker (alle doeleinden of taken die zijn geconfigureerd met de toegangsmodus voor één gebruiker ). Zie Access-modi.

Deze gegevensfiltering wordt achter de schermen uitgevoerd met serverloze berekeningen.

Waarom zijn voor sommige query's op rekenkracht van één gebruiker gegevensfiltering vereist?

Met Unity Catalog kunt u de toegang tot gegevens in tabelvorm beheren op kolom- en rijniveau (ook wel fijnmazig toegangsbeheer genoemd) met behulp van de volgende functies:

Wanneer gebruikers queryweergaven uitvoeren die gegevens uitsluiten van tabellen waarnaar wordt verwezen of querytabellen die filters en maskers toepassen, kunnen ze een van de volgende rekenresources zonder beperkingen gebruiken:

  • SQL-magazijnen
  • Gedeelde rekenkracht

Als u echter rekenkracht van één gebruiker gebruikt om dergelijke query's uit te voeren, moeten berekeningen en uw werkruimte voldoen aan specifieke vereisten:

Als uw rekenresource en werkruimte voor één gebruiker aan deze vereisten voldoen, wordt gegevensfiltering automatisch uitgevoerd wanneer u een query uitvoert op een weergave of tabel die gebruikmaakt van gedetailleerd toegangsbeheer.

Ondersteuning voor gerealiseerde weergaven, streamingtabellen en standaardweergaven

Naast dynamische weergaven, rijfilters en kolommaskers kunt u met gegevensfilters ook query's uitvoeren op de volgende weergaven en tabellen die niet worden ondersteund op berekeningen van één gebruiker waarop Databricks Runtime 15.3 en hieronder wordt uitgevoerd:

  • Standaardweergaven

    Op berekeningen van één gebruiker waarop Databricks Runtime 15.3 en lager wordt uitgevoerd, moet de gebruiker die de query uitvoert in de weergave, de tabellen en weergaven bevatten SELECT waarnaar wordt verwezen door de weergave. Dit betekent dat u geen weergaven kunt gebruiken om gedetailleerd toegangsbeheer te bieden. In Databricks Runtime 15.4 met gegevensfiltering heeft de gebruiker die de weergave opvraagt geen toegang nodig tot de tabellen en weergaven waarnaar wordt verwezen.

  • Streamingtabellen

  • Gerealiseerde weergaven

Hoe werkt het filteren van gegevens op rekenkracht van één gebruiker?

Wanneer een query toegang heeft tot de volgende databaseobjecten, geeft de rekenresource van één gebruiker de query door aan serverloze berekeningen om gegevensfiltering uit te voeren:

  • Weergaven die zijn gebouwd op tabellen waarvoor de gebruiker niet de SELECT bevoegdheid heeft
  • Dynamische weergaven
  • Tabellen met rijfilters of kolommaskers gedefinieerd
  • Gerealiseerde weergaven en streamingtabellen

In het volgende diagram heeft SELECT een gebruiker op table_1, view_2en table_w_rls, waarop rijfilters zijn toegepast. De gebruiker heeft geen SELECT toegang tot table_2, waarnaar wordt verwezen door view_2.

Diagram waarin wordt getoond hoe gegevensfilters werken

De query table_1 wordt volledig verwerkt door de rekenresource voor één gebruiker, omdat er geen filters vereist zijn. De query's op view_2 en table_w_rls vereisen gegevensfiltering om de gegevens te retourneren waartoe de gebruiker toegang heeft. Deze query's worden verwerkt door de mogelijkheid voor gegevensfiltering op serverloze berekeningen.

Welke kosten worden er gemaakt?

Klanten worden in rekening gebracht voor de serverloze rekenresources die worden gebruikt om gegevensfilterbewerkingen uit te voeren. Zie Platformlagen en invoegtoepassingen voor prijsinformatie.

U kunt een query uitvoeren op de gebruikstabel voor systeemfacturering om te zien hoeveel er in rekening is gebracht. Met de volgende query worden bijvoorbeeld de rekenkosten per gebruiker opgesplitst:

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;

Queryprestaties weergeven wanneer gegevensfiltering is ingeschakeld

In de Spark-gebruikersinterface voor rekenkracht van één gebruiker worden metrische gegevens weergegeven die u kunt gebruiken om inzicht te hebben in de prestaties van uw query's. Voor elke query die u uitvoert op de rekenresource, wordt op het tabblad SQL/Dataframe de weergave van de querygrafiek weergegeven. Als een query betrokken was bij het filteren van gegevens, geeft de gebruikersinterface een RemoteSparkConnectScan-operatorknooppunt onder aan de grafiek weer. In dat knooppunt worden metrische gegevens weergegeven die u kunt gebruiken om queryprestaties te onderzoeken. Zie Compute-informatie weergeven in de Apache Spark-gebruikersinterface.

SparkUI met remoteSparkConnectScan-knooppunt

Vouw het operatorknooppunt RemoteSparkConnectScan uit om metrische gegevens weer te geven die betrekking hebben op vragen als de volgende:

  • Hoeveel tijd kost het filteren van gegevens? 'Totale uitvoeringstijd voor externe uitvoering'.
  • Hoeveel rijen bleef er na het filteren van gegevens? Weergave 'rijenuitvoer'.
  • Hoeveel gegevens (in bytes) zijn geretourneerd na het filteren van gegevens? De uitvoergrootte van rijen weergeven.
  • Hoeveel gegevensbestanden zijn gepartitioned en hoeven niet te worden gelezen uit de opslag? Bekijk 'Bestanden verwijderd' en 'Grootte van bestanden verwijderd'.
  • Hoeveel gegevensbestanden kunnen niet worden verwijderd en moeten worden gelezen uit de opslag? Bekijk 'Bestanden gelezen' en 'Grootte van bestanden gelezen'.
  • Van de bestanden die moeten worden gelezen, hoeveel waren er al in de cache? Bekijk 'Cachetreffergrootte' en 'Cache misses size'.

Beperkingen

  • Er is geen ondersteuning voor schrijf- of vernieuwingsbewerkingen voor tabellen waarop rijfilters of kolommaskers zijn toegepast.

    DML-bewerkingen, zoals INSERT, DELETE, UPDATE, REFRESH TABLEen MERGE, worden niet ondersteund. U kunt () alleen lezen (SELECT) uit deze tabellen.

  • Self-joins worden standaard geblokkeerd wanneer gegevensfiltering wordt aangeroepen, maar u kunt ze toestaan door in te stellen spark.databricks.remoteFiltering.blockSelfJoins op onwaar bij berekening waarvoor u deze opdrachten uitvoert.

    Voordat u self-joins inschakelt voor één rekenresource van één gebruiker, moet u er rekening mee houden dat een self-joinquery die wordt verwerkt door de mogelijkheid voor gegevensfiltering verschillende momentopnamen van dezelfde externe tabel kan retourneren.