Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Beveiliging op rijniveau (RLS) is een functie van OneLake-beveiliging (preview) waarmee gegevensbeperkingen op rijniveau kunnen worden gedefinieerd voor tabellaire gegevens die zijn opgeslagen in OneLake. Gebruikers kunnen rollen definiëren in OneLake die regels bevatten voor het filteren van rijen met gegevens voor leden van die rol. Wanneer een lid van een RLS-rol die gegevens opvraagt, worden de RLS-regels geëvalueerd en worden alleen toegestane rijen geretourneerd.
Vereiste voorwaarden
- Een item in OneLake met OneLake-beveiliging is ingeschakeld. Zie Aan de slag met OneLake-rollen voor gegevenstoegang voor meer informatie.
- Schakel het SQL Analytics-eindpunt op het lakehouse over naar de modus 'Identiteit van gebruiker' via het tabblad Beveiliging .
- Voor het maken van semantische modellen gebruikt u de stappen om een DirectLake-model te maken.
- Zie de sectie bekende beperkingen voor een volledige lijst met beperkingen.
Beveiliging op rijniveau afdwingen
RLS voor OneLake-beveiliging wordt op twee manieren afgedwongen:
- Gefilterde tabellen in Fabric-engines: Query's naar de lijst met ondersteunde Fabric-engines, zoals Spark-notebooks, resulteren erin dat de gebruiker alleen de rijen ziet die ze mogen zien volgens de RLS-regels.
- Geblokkeerde toegang tot tabellen: Tabellen waarop RLS-regels zijn toegepast, kunnen niet worden gelezen buiten ondersteunde Fabric-engines.
Voor gefilterde tabellen zijn de volgende gedragingen van toepassing:
- RLS-regels beperken de toegang niet voor gebruikers in de rollen Beheerder, Lid en Inzender.
- Als de RLS-regel niet overeenkomt met de tabel waarop deze is gedefinieerd, mislukt de query en worden er geen rijen geretourneerd. Als de RLS-regel bijvoorbeeld verwijst naar een kolom die geen deel uitmaakt van de tabel.
- Query's van RLS-tabellen mislukken met een fout als een gebruiker deel uitmaakt van twee verschillende rollen en een van de rollen beveiliging op kolomniveau (CLS) heeft.
- RLS-regels kunnen alleen worden afgedwongen voor objecten die Delta-parquettabellen zijn.
- RLS-regels die worden toegepast op niet-Delta-tabelobjecten, blokkeren in plaats daarvan de toegang tot de hele tabel voor leden van de rol.
- De toegang tot een tabel kan worden geblokkeerd als de RLS-instructie syntaxisfouten bevat die verhinderen dat deze worden geëvalueerd.
Beveiligingsregels op rijniveau definiëren
U kunt beveiligingsregels op rijniveau definiëren als onderdeel van elke OneLake-beveiligingsrol die toegang verleent tot tabelgegevens in Delta Parquet-indeling. Rijen zijn alleen relevant voor tabelgegevens, dus RLS-definities zijn niet toegestaan voor niet-tabulaire mappen of ongestructureerde gegevens.
RLS-regels gebruiken SQL-syntaxis om de rijen op te geven die een gebruiker kan zien. De syntaxis heeft de vorm van een SQL SELECT-instructie met de RLS-regels die zijn gedefinieerd in de WHERE-clausule. RLS-regels ondersteunen alleen een subset van de SQL-taal zoals gedefinieerd in Syntaxisregels. Query's met een ongeldige RLS-syntaxis of RLS-syntaxis die niet overeenkomen met de onderliggende tabel, resulteren in geen rijen die worden weergegeven aan gebruikers of queryfouten in het SQL Analytics-eindpunt.
Vermijd het gebruik van vage of te complexe RLS-expressies als best practice. Sterk getypte expressies met gehele getallen of tekenreekszoekacties met '=' zijn de veiligste en gemakkelijk te begrijpen expressies.
Gebruik de volgende stappen om RLS-regels te definiëren:
Navigeer naar uw Lakehouse en selecteer OneLake-beveiliging beheren (preview).
Selecteer een bestaande rol waarvoor u de beveiliging van tabellen of mappen wilt definiëren of selecteer Nieuwe om een nieuwe rol te maken.
Selecteer op de pagina met rolgegevens meer opties (...) naast de tabel waarvoor u RLS wilt definiëren en selecteer vervolgens Rijbeveiliging (voorbeeld).
Typ de SQL-instructie om te definiëren welke rijen u wilt weergeven in de code-editor. Gebruik de sectie Syntaxisregels als richtlijn.
Klik op Opslaan om de regels voor rijbeveiliging te bevestigen.
OneLake-beveiliging inschakelen voor SQL Analytics-eindpunt
Voordat u OneLake-beveiliging met SQL Analytics-eindpunt kunt gebruiken, moet u de identiteitsmodus van de gebruiker inschakelen. Nieuw gemaakte SQL-analyse-eindpunten worden standaard ingesteld op de identiteitsmodus van de gebruiker, dus deze stappen moeten worden gevolgd voor bestaande SQL-analyse-eindpunten.
Notitie
Overschakelen naar de identiteitsmodus van de gebruiker hoeft slechts eenmalig te worden gedaan per SQL Analytics-eindpunt. Eindpunten die niet zijn overgeschakeld naar de identiteitsmodus van de gebruiker, blijven een gedelegeerde identiteit gebruiken om machtigingen te evalueren.
Navigeer naar het EINDPUNT van SQL Analytics.
Selecteer in de sql Analytics-eindpuntervaring het tabblad Beveiliging op het bovenste lint.
Selecteer de identiteit van de gebruiker onder de toegangsmodus van OneLake.
Selecteer Ja in de prompt , gebruik de identiteit van de gebruiker.
Nu is het EINDPUNT van SQL Analytics gereed voor gebruik met OneLake-beveiliging.
Syntaxisregels
Alle beveiligingsregels op rijniveau hebben de volgende vorm:
SELECT * FROM {schema_name}.{table_name} WHERE {column_level_boolean_1}{column_level_boolean_2}...{column_level_boolean_N}
Voorbeeld:
SELECT * FROM Sales WHERE Amount>'50000' AND State='CA'
Het maximum aantal tekens in een beveiligingsregel op rijniveau is 1000.
| Plaatsvervanger | Beschrijving |
|---|---|
| {schema_name} | De naam van het schema waarin {table_name} zich bevindt. Als het artefact schema's ondersteunt, is {schema_name} vereist. |
| {table_name} | De naam van de tabel waarop het predicaat RLS wordt toegepast. Deze waarde moet exact overeenkomen met de naam van de tabel, of de RLS resulteert in geen rijen die worden weergegeven. |
| {kolom_niveau_booleaans} | Een Booleaanse instructie met de volgende onderdelen: * Kolomnaam: de naam van een kolom in {table_name} zoals opgegeven in het Delta-logboekschema. Kolomnamen kunnen worden opgemaakt als {column_name} of {table_name}.{column_name}. * Operator: Een van de ondersteunde operatoren die de kolomnaam en waarde beoordeelt tot een Booleaanse waarde. * Waarde: Een statische waarde of set waarden waarop moet worden geëvalueerd. U kunt een of meer Booleaanse instructies gescheiden hebben door AND of OR. |
Ondersteunde operators
Beveiligingsregels op rijniveau ondersteunen de volgende lijst met operators en trefwoorden:
| Bediener | Beschrijving |
|---|---|
| = (is gelijk aan) | Evalueert als waar als de twee waarden van hetzelfde gegevenstype en exact dezelfde zijn. |
| <> (is niet gelijk aan) | Geeft een waar resultaat als de twee waarden niet van hetzelfde gegevenstype zijn en niet exact dezelfde zijn. |
| > (groter dan) | Geeft 'waar' terug als de kolomwaarde groter is dan de evaluatiewaarde. Voor tekenreekswaarden gebruikt deze operator bitwise-vergelijking om te bepalen of de ene tekenreeks groter is dan de andere. |
| >= (groter dan of gelijk aan) | Evalueert als true wanneer de kolomwaarde groter dan of gelijk aan de evaluatiewaarde is. Voor tekenreekswaarden gebruikt deze operator bitsgewijze vergelijking om te bepalen of de ene tekenreeks groter is dan of gelijk is aan de andere. |
| < (kleiner dan) | Wordt waar als de kolomwaarde kleiner is dan de evaluatiewaarde. Voor tekenreekswaarden gebruikt deze operator bitsgewijze vergelijking om te bepalen of de ene tekenreeks kleiner is dan de andere. |
| <= (kleiner dan of gelijk aan) | Geeft 'waar' als resultaat als de kolomwaarde kleiner is dan of gelijk is aan de evaluatiewaarde. Voor tekenreekswaarden gebruikt deze operator bitsgewijze vergelijking om te bepalen of de ene tekenreeks kleiner is dan of gelijk is aan de andere. |
| IN | Geeft waar terug als een van de evaluatiewaarden hetzelfde gegevenstype heeft en exact overeenkomt met de kolomwaarde. |
| NIET | Evalueert als waar als een van de evaluatiewaarden niet hetzelfde gegevenstype heeft of niet exact overeenkomt met de kolomwaarde. |
| EN | Combineert de vorige instructie en de volgende instructie met behulp van een Booleaanse EN-bewerking. Beide beweringen moeten waar zijn om het hele predicaat waar te hebben. |
| OF | Combineert de vorige instructie en de volgende instructie met behulp van een Booleaanse OR-bewerking. Een van de beweringen moet waar zijn voor het hele predicaat. |
| WAAR | De Boole-expressie voor true. |
| ONWAAR | De Booleaanse expressie voor onwaar. |
| BLANCO | Het lege gegevenstype, dat kan worden gebruikt met de IS-operator. Bijvoorbeeld: row IS BLANK. |
| NUL | Het gegevenstype null, dat kan worden gebruikt met de IS-operator. Bijvoorbeeld: row IS NULL. |
Beveiliging op rij- en kolomniveau combineren
Beveiliging op rij- en kolomniveau kan samen worden gebruikt om gebruikerstoegang tot een tabel te beperken. De twee beleidsregels moeten echter worden toegepast met één OneLake-beveiligingsrol. In dit scenario wordt de toegang tot gegevens beperkt volgens de regels die zijn ingesteld in de ene rol.
OneLake-beveiliging biedt geen ondersteuning voor de combinatie van twee of meer rollen waarin een RLS-regels bevat en een andere bevat CLS-regels. Gebruikers die toegang proberen te krijgen tot tabellen die deel uitmaken van een niet-ondersteunde combinatie van rollen, ontvangen queryfouten.