Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Dit artikel documenteert de syntaxis voor het definiëren van row-level security (RLS) -regels in OneLake-beveiliging. Om een RLS-regel toe te passen op een tabel, zie Create and manage OneLake security roles.
RLS-regels gebruiken SQL-syntaxis om de rijen op te geven die een gebruiker kan zien. De syntaxis neemt de vorm aan van een SQL-instructie SELECT met de RLS-regels die in de WHERE clausule zijn gedefinieerd. RLS-regels ondersteunen alleen de subset van SQL die in dit artikel is gedefinieerd. Zoekopdrachten met ongeldige RLS-syntaxis, of RLS-syntaxis die niet overeenkomt met de onderliggende tabel, resulteren in het tonen van geen rijen aan gebruikers of in het SQL-analyse-endpoint.
Houd bij het schrijven van RLS-expressies rekening met de volgende best practices:
- Vermijd vage of te complexe RLS-uitdrukkingen.
- Sterk getypeerde uitdrukkingen met gehele getallen of string-lookups die "=" gebruiken, zijn het veiligst en het makkelijkst te begrijpen.
- Gebruik gehele kolommen voor sorteren en bewerkingen met groter of kleiner dan.
- Vermijd snaarequivalenties als je het formaat van de invoerdata niet kent, vooral voor Unicode-tekens of accentgevoeligheid.
Beveiliging op rijniveau beoordeelt stringgegevens als hoofdval-ongevoelig door de volgende sortering en vergelijkingen te gebruiken: Latin1_General_100_CI_AS_KS_WS_SC_UTF8.
Syntax
Het maximum aantal tekens in een beveiligingsregel op rijniveau is 1000.
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'
| Tijdelijke aanduiding | Description |
|---|---|
| {schema_name} | De naam van het schema dat {table_name} bevat. Als het item schema's ondersteunt, moet je {schema_name} toevoegen. |
| {table_name} | De naam van de tabel waarop het RLS-predicaat van toepassing is. Deze waarde moet exact overeenkomen met de naam van de tabel, anders toont de RLS geen rijen. Gebruik vierkante haakjes [] om escape-tafelnamen met speciale tekens te maken. Bijvoorbeeld: SELECT * FROM [dbo].[Secret.Table]. |
| {kolom_niveau_booleaans} | Een Booleaanse instructie met de volgende onderdelen: * Kolomnaam: De naam van een kolom in {table_name}, zoals deze voorkomt in het Delta-logschema. Je kunt kolomnamen formatteren als {column_name} of {table_name}. {column_name}. * Operator: Een van de ondersteunde operatoren die de kolomnaam en waarde evalueert naar een Booleaanse waarde. * Waarde: Een statische waarde of set waarden om tegen te evalueren. U kunt een of meer Booleaanse instructies gescheiden hebben door AND of OR. |
Ondersteunde operators
Beveiligingsregels op rijniveau ondersteunen de volgende operatoren en trefwoorden:
| Operator | Description |
|---|---|
= (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. |
NOT |
Evalueert als waar als een van de evaluatiewaarden niet hetzelfde gegevenstype heeft of niet exact overeenkomt met de kolomwaarde. |
AND |
Combineert de vorige instructie en de daaropvolgende uitspraak door gebruik te maken van een Booleaanse EN-operatie. Beide beweringen moeten waar zijn om het hele predicaat waar te hebben. |
OR |
Combineert de vorige instructie en de daaropvolgende verklaring door gebruik te maken van een Booleaanse OF-operatie. Een van de beweringen moet waar zijn voor het hele predicaat. |
TRUE |
De Boole-expressie voor true. |
FALSE |
De Booleaanse expressie voor onwaar. |
BLANK |
Het blanco datatype, dat je kunt gebruiken met de IS-operator. Bijvoorbeeld: row IS BLANK. |
NULL |
Het null datatype, dat je kunt gebruiken met de IS-operator. Bijvoorbeeld: row IS NULL. |