Aracılığıyla paylaş


OneLake'te satır düzeyi güvenlik (önizleme)

Satır düzeyi güvenlik (RLS), OneLake'te depolanan tablosal veriler için satır düzeyi veri kısıtlamaları tanımlamaya olanak tanıyan bir OneLake güvenliği (önizleme) özelliğidir. Kullanıcılar, OneLake'te bu rolün üyeleri için veri satırlarını filtrelemeye yönelik kurallar içeren roller tanımlayabilir. RLS rolünün bir üyesi bu verileri sorgulamaya gittiğinde, RLS kuralları değerlendirilir ve yalnızca izin verilen satırlar döndürülür.

Önkoşullar

Satır düzeyi güvenliğini uygulama

OneLake güvenlik RLS'si iki yoldan biriyle uygulanır.

  • Filtrelenmiş tablolar Fabric motorlarında: Spark not defterleri gibi desteklenen Fabric motorlarının listesine yönelik sorgular, kullanıcının RLS kurallarına göre yalnızca görmesine izin verilen satırları görmesini sağlar.
  • Tablolara erişim engellendi: RLS kurallarının uygulandığı tablolar desteklenen Doku altyapılarının dışında okunamaz.

Filtrelenmiş tablolar için aşağıdaki davranışlar geçerlidir:

  • RLS kuralları Yönetici, Üye ve Katkıda Bulunan rollerindeki kullanıcıların erişimini kısıtlamaz.
  • RLS kuralının tanımlandığı tabloyla uyuşmazlığı varsa, sorgu başarısız olur ve hiçbir satır döndürülmez. Örneğin, RLS kuralı tablonun parçası olmayan bir sütuna başvuruda bulunursa.
  • RLS tablolarının sorguları, bir kullanıcı iki farklı rolün parçasıysa ve rollerden birinde sütun düzeyinde güvenlik (CLS) varsa hatayla başarısız olur.
  • RLS kuralları yalnızca Delta parquet tabloları olan nesneler için zorunlu kılınabilir.
    • Bunun yerine Delta olmayan tablo nesnelerine uygulanan RLS kuralları, rolün üyeleri için tablonun tamamına erişimi engeller.
  • RLS deyiminin değerlendirilmesini engelleyen söz dizimi hataları içeriyorsa tabloya erişim engellenebilir.

Satır düzeyi güvenlik kurallarını tanımlayın

Delta parquet biçiminde tablo verilerine erişim veren herhangi bir OneLake güvenlik rolünün parçası olarak satır düzeyi güvenlik kuralları tanımlayabilirsiniz. Satırlar yalnızca tablo verileriyle ilgili bir kavramdır, bu nedenle tablo dışı klasörler veya yapılandırılmamış veriler için RLS tanımlarına izin verilmez.

RLS kuralları, bir kullanıcının görebileceği satırları belirtmek için SQL söz dizimini kullanır. Bu söz dizimi, SELECT yan tümcesinde tanımlanan RLS kurallarını içeren bir SQL WHERE ifadesinin biçimindedir. RLS kuralları, Söz dizimi kuralları bölümünde tanımlanan SQL dilinin yalnızca bir alt kümesini destekler. Geçersiz RLS söz dizimine sahip veya temel tabloyla eşleşmeyen RLS söz dizimi içeren sorgular, kullanıcılara satır gösterilmemesiyle veya SQL analiz uç noktasında sorgu hatalarıyla sonuçlanır.

En iyi yöntem olarak, belirsiz veya aşırı karmaşık RLS ifadeleri kullanmaktan kaçının. Tamsayı ile kesin olarak yazılan ifadeler veya "=" ile dize aramaları en güvenli ve anlaşılması kolay ifadeler olacaktır.

RLS kurallarını tanımlamak için aşağıdaki adımları kullanın:

  1. Lakehouse'unuza gidin ve OneLake güvenliğini yönet (önizleme) seçeneğini belirleyin.

  2. Tablo veya klasör güvenliğini tanımlamak istediğiniz mevcut bir rolü seçin veya yeni bir rol oluşturmak için Yeni seçin.

  3. Rol ayrıntıları sayfasında, RLS'yi tanımlamak istediğiniz tablonun yanındaki diğer seçenekleri (...) seçin, ardından Satır Güvenliği (önizleme) seçin.

    Bir tablodaki izinleri düzenlemek için 'satır güvenliği'nin seçilmesini gösteren bir ekran görüntüsü.

  4. Kullanıcıların kod düzenleyicisinde görmesini istediğiniz satırları tanımlamak için SQL deyimini yazın. Kılavuzluk için Sözdizimi Kuralları bölümünü kullanın.

  5. Kaydet'i seçerek satır güvenlik kurallarını onaylayın.

SQL analiz uç noktası için OneLake güvenliğini etkinleştirme

OneLake güvenliğini SQL analytics uç noktasıyla kullanabilmeniz için kullanıcının kimlik modunu etkinleştirmeniz gerekir. Yeni oluşturulan SQL analizi uç noktaları varsayılan olarak kullanıcının kimlik moduna geçer, bu nedenle mevcut SQL analiz uç noktaları için bu adımların izlenmesi gerekir.

Uyarı

Kullanıcının kimlik moduna geçiş, SQL analiz uç noktası başına yalnızca bir kez yapılmalıdır. Kullanıcının kimlik moduna geçirilmeyen uç noktalar, izinleri değerlendirmek için temsilci kimlik kullanmaya devam eder.

  1. SQL analytics uç noktasına gidin.

  2. SQL analizi uç noktası deneyiminde üst şeritteki Güvenlik sekmesini seçin.

  3. OneLake erişim modu altında Kullanıcı kimliği'ni seçin.

    SQL analiz uç noktası için OneLake güvenliğini etkinleştirmek için 'kullanıcı kimliği' seçmeyi gösteren ekran görüntüsü.

  4. İstemde Evet, kullanıcının kimliğini kullan'ı seçin.

    Tablo okuma erişimi için OneLake güvenliğini etkinleştirmek için kabul edilmesi gereken kullanıcı istemini gösteren ekran görüntüsü.

Artık SQL analiz uç noktası OneLake güvenliği ile kullanıma hazırdır.

Söz dizimi kuralları

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'

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

Yer tutucu Açıklama
{schema_name} {table_name} adlı şemanın adı. Yapıt şemaları destekliyorsa {schema_name} gereklidir.
{table_name} RLS koşulunun uygulandığı tablonun adı. Bu değer, tablonun adıyla tam eşleşmelidir, aksi takdirde RLS hiçbir satır göstermez.
{column_level_boolean} Aşağıdaki bileşenleri içeren bir Boole deyimi:

* Sütun adı: Delta günlük şemasında belirtildiği gibi {table_name} içindeki bir sütunun adı. Sütun adları {column_name} veya {table_name} olarak biçimlendirilebilir. {column_name}.
* İşleç: Sütun adını ve değerini Boole değeri olarak değerlendiren Desteklenen işleçlerden biri.
* Değer: Değerlendirilecek statik değer veya değer kümesi.

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

Desteklenen operatörler

Satır düzeyi güvenlik kuralları aşağıdaki işleçler ve anahtar sözcükler listesini destekler:

Operatör Açıklama
= (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şittir) 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.
İÇERİDE 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.
DEĞİL 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.
VE Boolean AND işlemi kullanarak önceki deyimi ve sonraki deyimi birleştirir. Tüm koşulun doğru olması için her iki ifadenin de doğru olması gerekir.
VEYA Boolean OR işlemi kullanarak önceki deyimi ve sonraki deyimi birleştirir. Tüm koşulun doğru olması için ifadelerden birinin doğru olması gerekir.
DOĞRU True için Boole ifadesi.
YANLIŞ False için Boole ifadesi.
BOŞ IS işleciyle kullanılabilen boş veri türü. Örneğin, row IS BLANK.
null IS işleciyle kullanılabilen null veri türü. Örneğin, row IS NULL.

Satır düzeyi ve sütun düzeyi güvenliği birleştirme

Satır düzeyi ve sütun düzeyi güvenlik, tabloya kullanıcı erişimini kısıtlamak için birlikte kullanılabilir. Ancak, iki ilkenin tek bir OneLake güvenlik rolü kullanılarak uygulanması gerekir. Bu senaryoda, verilere erişim tek rolde ayarlanan kurallara göre kısıtlanır.

OneLake güvenliği, biri RLS kurallarını, diğeri CLS kurallarını içeren iki veya daha fazla rolün birleşimini desteklemez. Desteklenmeyen bir rol bileşiminin parçası olan tablolara erişmeye çalışan kullanıcılar sorgu hatalarını alır.