Säkerhet på tabell-, kolumn- och radnivå i OneLake

OneLakes säkerhetsroller kontrollerar vem som kan komma åt datan i dina Fabric-objekt. Ibland är det för grovt att ge eller neka tillgång till ett helt föremål. Du kan behöva dölja känsliga kolumner, begränsa vilka rader en användare ser, eller bara exponera vissa tabeller. Inom en roll kan du förfina åtkomsten på tre detaljnivåer: objektnivåsäkerhet för tabeller och mappar, kolumnnivåsäkerhet (CLS) för enskilda kolumner och radnivåsäkerhet (RLS) för enskilda rader.

Den här artikeln förklarar vad varje kontroll gör och hur OneLake upprätthåller den. För att skapa dessa kontroller, se Create and manage OneLake security roles.

OneLakes säkerhetsroller använder en bidragsmodell för att ge tillgång till data. Du kan inte neka tillgång som beviljas genom en annan roll eller tillståndsmodell. Av den anledningen begränsar dessa kontroller inte åtkomsten för användare i Admin-, Medlems- och Bidragsrollerna på arbetsytsnivå.

Säkerhet för tabeller och mappar

Tabell- och mappnivåsäkerhet, även kallad objektnivåsäkerhet (OLS), låter dig ge tillgång till specifika tabeller eller mappar i ett dataobjekt. Med OLS skapar du behörigheter för både strukturerad och ostrukturerad data på mappnivå. Eftersom Delta Parquet-tabeller i OneLake representeras som mappar kan du säkra tabeller på samma sätt som du säkrar mappar. Scheman är också mappar, så du kan säkra dem på samma sätt.

Säkerhet på kolumnnivå och radnivå

OneLake-säkerheten upprätthåller säkerhet på kolumnnivå och radnivå på ett av två sätt:

  • Filtertabeller: En användare som frågar en tabell med hjälp av en Fabric-motor, som Spark-notebooks, eller en auktoriserad tredjepartsmotor ser endast de kolumner eller rader som CLS- eller RLS-reglerna tillåter.
  • Blocktabeller: En användare som frågar en tabell med en obehörig tredjepartsmotor kan inte läsa tabellen.

OneLake-säkerhet kan upprätthålla CLS- och RLS-regler för Delta Parquet-tabeller eller virtualiserade Iceberg-tabeller. Regler som tillämpas på andra tabelltyper blockerar åtkomst till hela tabellen för medlemmar i rollen.

Om en CLS- eller RLS-regel har en mismatch med tabellen den är definierad i, misslyckas frågan och returnerar ingen data. Till exempel uppstår en mismatch när en regel refererar till en kolumn som inte finns i tabellen.

Säkerhet på kolumnnivå

Kolumnnivåsäkerhet (CLS) ger tillgång till utvalda kolumner i en tabell istället för i hela tabellen. Data i kolumner som du tar bort från tillåten lista är inte synlig för användarna.

För tabeller filtrerade med CLS gäller följande beteenden:

  • Om en användare kör en select * fråga i en tabell där de bara har tillgång till några av kolumnerna, beter sig CLS-reglerna olika beroende på Fabric-motorn:
    • Spark-notebooks: Frågan lyckas och visar endast de tillåtna kolumnerna.
    • SQL analytics-endpoint: Frågan ger ett fel och blockerar åtkomst till kolumner som användaren inte kan nå.
    • Semantiska modeller: Frågan ger ett fel och blockerar åtkomst till kolumnerna som användaren inte kan nå.
  • Namnet på en säkrad kolumn kan vara synligt i vissa upplevelser, men datavärdena visas aldrig.

Säkerhet på radnivå

Row-level security (RLS) definierar radnivå-databegränsningar för tabelldata lagrad i OneLake. Du definierar roller som innehåller regler för att filtrera datarader för medlemmar i rollen. När en medlem i en RLS-roll frågar datan utvärderar OneLake RLS-reglerna och returnerar endast de tillåtna raderna. Rader är ett begrepp som endast är relevant för tabelldata, så du kan inte definiera RLS för icke-tabellmappar eller ostrukturerad data.

För tabeller filtrerade med RLS gäller följande beteenden:

  • Åtkomst till en tabell kan blockeras om RLS-instruktionen innehåller syntaxfel som förhindrar att den utvärderas.

Syntaxen som används för att skriva RLS-regler finns i syntaxreferensen för säkerhet på radnivå.

Kombinera säkerhet på radnivå och kolumnnivå

Säkerhet på radnivå och kolumnnivå kan användas tillsammans för att begränsa användarens åtkomst till en tabell. De två principerna måste dock tillämpas med en enda OneLake-säkerhetsroll. I det här scenariot begränsas åtkomsten till data enligt de regler som anges i en roll.

OneLake-säkerhet stöder inte kombinationen av två eller flera roller där en innehåller RLS-regler och en annan innehåller CLS-regler. Användare som försöker komma åt tabeller som ingår i en rollkombination som inte stöds får frågefel.