Aracılığıyla paylaş


Dinamik görünüm oluşturma

Unity Kataloğu'nda, aşağıdakiler dahil olmak üzere ayrıntılı erişim denetimini yapılandırmak için dinamik görünümleri kullanabilirsiniz:

  • Sütun veya satır düzeyinde güvenlik.
  • Veri maskeleme.

Unity Kataloğu, görünümdeki bir satıra, sütuna veya kayda erişebilecek kullanıcıları dinamik olarak sınırlamanıza olanak tanıyan aşağıdaki işlevleri tanıtır:

  • current_user(): Geçerli kullanıcının e-posta adresini döndürür.
  • is_account_group_member(): Geçerli kullanıcı belirli bir hesap düzeyi grubunun üyesiyse döndürür TRUE . Unity Kataloğu verilerine karşı dinamik görünümlerde kullanılması önerilir.
  • is_member(): Geçerli kullanıcı belirli bir çalışma alanı düzeyi grubunun üyesiyse döndürür TRUE . Bu işlev, mevcut Hive meta veri deposuyla uyumluluk için sağlanır. Hesap düzeyinde grup üyeliğini değerlendirmediğinden Unity Kataloğu verilerine karşı görünümlerle kullanmaktan kaçının.

Azure Databricks, kullanıcılara görünümde başvuruda bulunan tabloları ve görünümleri okuma izni vermenizi önerir.

Aşağıdaki örneklerde Unity Kataloğu'nda dinamik görünümlerin nasıl oluşturulacağı gösterilmektedir.

Başlamadan önce

Dinamik görünümler oluşturmak veya okumak için gereksinimler, işlem gereksinimleri dışında standart görünümlerle aynıdır. Aşağıdaki işlem kaynaklarından birini kullanmanız gerekir:

  • SQL ambarı.

  • Paylaşılan erişim moduyla işlem.

  • Databricks Runtime 15.4 LTS veya üzerinde tek kullanıcı erişim moduyla işlem.

    Databricks Runtime 15.3 veya altında tek kullanıcı işlemi kullanarak dinamik görünümleri okuyamazsınız.

    Databricks Runtime 15.4 LTS ve üzerinde sağlanan veri filtrelemeden yararlanmak için, dinamik görünümleri destekleyen veri filtreleme işlevi sunucusuz işlem üzerinde çalıştığından, çalışma alanınızın sunucusuz işlem için etkinleştirildiğini de doğrulamanız gerekir. Bu nedenle, dinamik görünümleri okumak için tek kullanıcılı işlem kullandığınızda sunucusuz işlem kaynakları için ücretlendirilebilirsiniz. Bkz . Tek kullanıcı işlemlerinde ayrıntılı erişim denetimi.

Sütun düzeyinde izinler

Dinamik görünümle, belirli bir kullanıcının veya grubun erişebileceği sütunları sınırlayabilirsiniz. Aşağıdaki örnekte, yalnızca grubun üyeleri tablodan auditors e-posta adreslerine sales_raw erişebilir. Sorgu analizi sırasında Apache Spark deyimini CASE değişmez dizeyle REDACTED veya e-posta adresi sütununun gerçek içeriğiyle değiştirir. Diğer sütunlar normal şekilde döndürülür. Bu stratejinin sorgu performansı üzerinde olumsuz bir etkisi yoktur.

-- Alias the field 'email' to itself (as 'email') to prevent the
-- permission logic from showing up directly in the column name results.
CREATE VIEW sales_redacted AS
SELECT
  user_id,
  CASE WHEN
    is_account_group_member('auditors') THEN email
    ELSE 'REDACTED'
  END AS email,
  country,
  product,
  total
FROM sales_raw

Satır düzeyi izinleri

Dinamik görünümle, satır veya alan düzeyine kadar izinleri belirtebilirsiniz. Aşağıdaki örnekte, yalnızca grubun üyeleri managers 1.000.000 TL'yi aştıklarında işlem tutarlarını görüntüleyebilir. Eşleşen sonuçlar diğer kullanıcılar için filtrelenir.

CREATE VIEW sales_redacted AS
SELECT
  user_id,
  country,
  product,
  total
FROM sales_raw
WHERE
  CASE
    WHEN is_account_group_member('managers') THEN TRUE
    ELSE total <= 1000000
  END;

Veri maskeleme

Unity Kataloğu'ndaki görünümler Spark SQL kullandığından, daha karmaşık SQL ifadeleri ve normal ifadeler kullanarak gelişmiş veri maskeleme uygulayabilirsiniz. Aşağıdaki örnekte, tüm kullanıcılar e-posta etki alanlarını analiz edebilir, ancak yalnızca grubun üyeleri auditors kullanıcının e-posta adresinin tamamını görüntüleyebilir.

-- The regexp_extract function takes an email address such as
-- user.x.lastname@example.com and extracts 'example', allowing
-- analysts to query the domain name.

CREATE VIEW sales_redacted AS
SELECT
  user_id,
  region,
  CASE
    WHEN is_account_group_member('auditors') THEN email
    ELSE regexp_extract(email, '^.*@(.*)$', 1)
  END
  FROM sales_raw