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ürTRUE
. 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ürTRUE
. 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