Satır düzeyinde güvenlik sözdizimi referansı

Bu makale, OneLake güvenliğinde satır düzeyinde güvenlik (RLS) kurallarını tanımlamanın sözdizimini belgelemektedir. Bir RLS kuralını bir tabloya uygulamak için bakınız: OneLake güvenlik rollerini oluştur ve yönetin.

RLS kuralları, bir kullanıcının görebileceği satırları belirtmek için SQL söz dizimini kullanır. Sözdizimi, RLS kuralları ile WHERE bir SQL SELECT ifadesi biçiminde bulunur ve bu cümlede tanımlanır. RLS kuralları yalnızca bu makalede tanımlanan SQL alt kümesini destekler. Geçersiz RLS sözdizimi veya temel tabloya uymayan RLS sözdizimi sorgular, kullanıcılara satır gösterilmez veya SQL analitik uç noktasında sorgu hataları yaşanır.

RLS ifadeleri yazarken, aşağıdaki en iyi uygulamaları aklınızda bulundurun:

  • Belirsiz veya aşırı karmaşık Gerçek Günlük İfadelerden kaçının.
  • "=" kullanan, tam sayı veya dizi sorgulamalarıyla güçlü tipli ifadeler en güvenli ve anlaşılması en kolay olanlardır.
  • Sıralama için tam sayı sütunları ve büyük ya da daha az işlemler için kullanın.
  • Giriş verisinin formatını bilmiyorsanız, özellikle Unicode karakterler veya aksan hassasiyeti için dize eşdeğerliklerinden kaçının.

Satır düzeyinde güvenlik, dizi verilerini küçük harf duyarsız olarak değerlendirir ve sıralama için aşağıdaki derleme yöntemini kullanır: Latin1_General_100_CI_AS_KS_WS_SC_UTF8.

Syntax

Satır düzeyi güvenlik kuralındaki karakter sayısı üst sınırı 1000'dir.

Tüm satır düzeyi güvenlik kuralları aşağıdaki formu alır:

SELECT * FROM {schema_name}.{table_name} WHERE {column_level_boolean_1}{column_level_boolean_2}...{column_level_boolean_N}

Örneğin:

SELECT * FROM Sales WHERE Amount > 50000 AND State='CA'
Yer tutucu Description
{schema_name} {table_name} içeren şemanın adı. Öğe şemaları destekliyorsa, {schema_name} dahil etmelisiniz.
{table_name} RLS önleminin uygulandığı tablonun adı. Bu değer tablonun adıyla tam olarak eşleşmelidir, aksi takdirde RLS satır göstermez. Özel karakterlerle tablo isimlerinden kare parantez [] kullanarak kaçırabilirsiniz. Örneğin, SELECT * FROM [dbo].[Secret.Table].
{column_level_boolean} Aşağıdaki bileşenleri içeren bir Boole deyimi:

* Sütun adı: {table_name} içindeki bir sütunun adı, Delta log şemasında göründüğü şekliyle. Sütun adlarını {column_name} veya {table_name} olarak biçimlendirebilirsiniz. {column_name}.
* Operatör: Sütun adını ve değerini Boolean değerine göre değerlendiren desteklenen operatörlerden biri.
* Değer: Karşılaştırılması gereken statik bir değer veya değerler kümesi.

AND veya OR ile ayrılmış bir veya daha fazla Boole deyiminiz olabilir.

Desteklenen operatörler

Satır düzeyindeki güvenlik kuralları aşağıdaki operatörleri ve anahtar kelimeleri destekler:

Operator Description
= (eşittir) İki değer aynı veri türü ve tam eşleşmeler ise true olarak değerlendirilir.
<> (eşit değildir) İki değer aynı veri türü değilse ve tam eşleşmeler değilse true olarak değerlendirilir.
> (>) Sütun değeri değerlendirme değerinden büyükse doğru olarak değerlendirilir. Dize değerleri için bu işleç, bir dizenin diğerinden büyük olup olmadığını belirlemek için bit düzeyinde karşılaştırma kullanır.
>= (büyüktür veya eşittir) Değerlendirme değerine eşit veya daha büyükse sütun değeri doğru olarak değerlendirilir. Dize değerleri için bu işleç, bir dizenin diğerinden büyük veya buna eşit olup olmadığını belirlemek için bit düzeyinde karşılaştırma kullanır.
<'dan küçük Değerlendirme değerinden küçükse, sütun değeri doğru (true) olarak değerlendirilir. Dize değerleri için bu işleç, bir dizenin diğerinden küçük olup olmadığını belirlemek için bit düzeyinde karşılaştırma kullanır.
<= (küçük veya eşit) Sütun değeri, karşılaştırma değerinden küçük veya ona eşitse gerçek olarak değerlendirilir. Dize değerleri için bu işleç, bir dizenin diğerinden küçük veya buna eşit olup olmadığını belirlemek için bit düzeyinde karşılaştırma kullanır.
IN Değerlendirme değerlerinden herhangi biri aynı veri türündeyse ve sütun değeriyle tam olarak eşleşiyorsa true olarak değerlendirilir.
NOT Değerlendirme değerlerinden herhangi biri aynı veri türü değilse veya sütun değerinin tam eşleşmesi değilse true olarak değerlendirilir.
AND Önceki ifadeyi ve sonraki ifadeyi Boolean AND işlemiyle birleştirir. Tüm koşulun doğru olması için her iki ifadenin de doğru olması gerekir.
OR Önceki ifadeyi ve sonraki ifadeyi Boolean OR işlemi kullanarak birleştirir. Tüm koşulun doğru olması için ifadelerden birinin doğru olması gerekir.
TRUE True için Boole ifadesi.
FALSE False için Boole ifadesi.
BLANK Boş veri türü, ki bunu IS operatörü ile kullanabiliyorsunuz. Örneğin, row IS BLANK.
NULL Null veri tipi, ki bunu IS operatörü ile kullanabiliyorsun. Örneğin, row IS NULL.