Hive meta veri deposu ayrıcalıkları ve güvenliği sağlanabilir nesneler (eski)
Bu makalede, her Azure Databricks çalışma alanında yerleşik olarak bulunan eski Azure Databricks Hive meta veri deposu için ayrıcalık modeli açıklanmaktadır. Ayrıca, yerleşik Hive meta veri deposundaki nesneler için ayrıcalıkları verme, reddetme ve iptal etme işlemleri de açıklanır. Unity Kataloğu ayrıcalıkları vermek için farklı bir model kullanır. Bkz . Unity Kataloğu ayrıcalıkları ve güvenliği sağlanabilir nesneler.
Not
Hive meta veri deposu tarafından yönetilen veriler için tablo erişim denetimi eski bir veri idare modelidir. Databricks, Hive meta veri deposu tarafından yönetilen tabloları Unity Kataloğu meta deposuna yükseltmenizi önerir. Unity Kataloğu, hesabınızdaki birden çok çalışma alanında veri erişimini yönetmek ve denetlemek için merkezi bir yer sağlayarak verilerinizin güvenliğini ve yönetimini basitleştirir. Eski ayrıcalık modelinin Unity Kataloğu ayrıcalık modelinden nasıl farklı olduğu hakkında daha fazla bilgi edinmek için bkz . Unity Kataloğu ve eski Hive meta deposuyla çalışma.
Gereksinimler
- Bir yöneticinin çalışma alanı için tablo erişim denetimini etkinleştirmesi ve zorunlu kılması gerekir.
- Kümenin tablo erişim denetimi için etkinleştirilmesi gerekir.
Not
- Çalışma alanı için tablo erişim denetimi etkinleştirilmemiş olsa bile Databricks SQL'de veri erişim denetimi her zaman etkinleştirilir .
- Çalışma alanı için tablo erişim denetimi etkinleştirildiyse ve çalışma alanında zaten ACL'ler (verilen ve reddedilen ayrıcalıklar) belirttiyseniz, bu ACL'ler Databricks SQL'de dikkate alınır.
Hive meta veri deposundaki nesnelerdeki ayrıcalıkları yönetme
Hive meta veri deposu tarafından yönetilen veri nesneleri üzerindeki ayrıcalıklar, çalışma alanı yöneticisi veya bir nesnenin sahibi tarafından verilebilir. SQL komutlarını kullanarak Hive meta veri deposu nesnelerinin ayrıcalıklarını yönetebilirsiniz.
SQL'deki ayrıcalıkları yönetmek için, söz dizimini kullanarak not defterinde veya Databricks SQL sorgu düzenleyicisinde GRANT, REVOKE, DENY, MSCK ve SHOW GRANTS deyimlerini kullanırsınız:
GRANT privilege_type ON securable_object TO principal
Where:
privilege_type
Bir Hive meta veri deposu ayrıcalık türüdürsecurable_object
Hive meta veri deposunda güvenliği sağlanabilir bir nesnedirprincipal
bir kullanıcı, hizmet sorumlusu (applicationId değeriyle temsil edilir) veya grup. Kullanıcıları, hizmet sorumlularını ve grup adlarını backticks (` `
) içinde özel karakterlerle kapatmanız gerekir. Bkz. Sorumlu.
Çalışma alanınızdaki tüm kullanıcılara ayrıcalık vermek için users
gruba ayrıcalık verin. Örneğin:
GRANT SELECT ON TABLE <schema-name>.<table-name> TO users
SQL komutlarını kullanarak Hive meta veri deposundaki nesnelerin ayrıcalıklarını yönetme hakkında daha fazla bilgi için bkz . Hive meta veri deposundaki Ayrıcalıklar ve güvenliği sağlanabilir nesneler.
Ayrıca Databricks Terraform sağlayıcısını ve databricks_sql_permissions kullanarak tam otomatik bir kurulumda tablo erişim denetimini yönetebilirsiniz.
Nesne sahipliği
Kümede veya SQL ambarı üzerinde tablo erişim denetimi etkinleştirildiğinde, şema, tablo, görünüm veya işlev oluşturan bir kullanıcı sahibi olur. Sahipe tüm ayrıcalıklar verilir ve diğer kullanıcılara ayrıcalıklar verebilir.
Gruplar nesnelere sahip olabilir ve bu durumda söz konusu grubun tüm üyeleri sahip olarak kabul edilir.
Bir nesnenin sahibi veya çalışma alanı yöneticisi aşağıdaki komutu kullanarak nesnenin sahipliğini aktarabilir:
ALTER <object> OWNER TO `<user-name>@<user-domain>.com`
Not
Kümede veya SQL ambarı üzerinde tablo erişim denetimi devre dışı bırakıldığında, şema, tablo veya görünüm oluşturulduğunda sahipler kaydedilmez. Çalışma alanı yöneticisinin komutunu kullanarak nesneye sahip ataması ALTER <object> OWNER TO
gerekir.
Hive meta veri deposunda güvenliği sağlanabilir nesneler
Güvenliği sağlanabilir nesneler şunlardır:
CATALOG
: veri kataloğunun tamamına erişimi denetler.SCHEMA
: şemaya erişimi denetler.TABLE
: yönetilen veya dış tabloya erişimi denetler.VIEW
: SQL görünümlerine erişimi denetler.FUNCTION
: adlandırılmış işleve erişimi denetler.
ANONYMOUS FUNCTION
: anonim veya geçici işlevlere erişimi denetler.Not
ANONYMOUS FUNCTION
nesneleri Databricks SQL'de desteklenmez.ANY FILE
: temel alınan dosya sistemine erişimi denetler.Uyarı
erişim
ANY FILE
izni verilen kullanıcılar doğrudan dosya sisteminden okuyarak katalog, şemalar, tablolar ve görünümlere getirilen kısıtlamaları atlayabilir.
Not
Genel ve yerel geçici görünümlerdeki ayrıcalıklar desteklenmez. Yerel geçici görünümler yalnızca aynı oturumda görünür ve şemada global_temp
oluşturulan görünümler kümeyi veya SQL ambarını paylaşan tüm kullanıcılar tarafından görülebilir. Ancak, geçici görünümler tarafından başvuruda bulunan temel tablo ve görünümlerdeki ayrıcalıklar uygulanır.
Hive meta veri deposu nesnelerinde verebileceğiniz ayrıcalıklar
SELECT
: bir nesneye okuma erişimi verir.CREATE
: bir nesne (örneğin, şemadaki bir tablo) oluşturma yeteneği verir.MODIFY
: bir nesneye veya nesneden veri ekleme, silme ve değiştirme olanağı sağlar.USAGE
: herhangi bir yetenek vermez, ancak şema nesnesi üzerinde herhangi bir eylem gerçekleştirmek için ek bir gereksinimdir.READ_METADATA
: bir nesneyi ve meta verilerini görüntüleme olanağı sağlar.CREATE_NAMED_FUNCTION
: mevcut bir katalogda veya şemada adlandırılmış bir UDF oluşturma olanağı sağlar.MODIFY_CLASSPATH
: Spark sınıf yoluna dosya ekleme olanağı sağlar.ALL PRIVILEGES
: tüm ayrıcalıkları verir (yukarıdaki tüm ayrıcalıklara çevrilir).
Not
Bu MODIFY_CLASSPATH
ayrıcalık Databricks SQL'de desteklenmez.
USAGE
ayrıcalık
Hive meta veri deposundaki bir şema nesnesi üzerinde eylem gerçekleştirmek için, kullanıcının bu eylemi gerçekleştirme ayrıcalığına ek olarak bu şemada ayrıcalığına sahip USAGE
olması gerekir. Aşağıdakilerden herhangi biri gereksinimi karşılar USAGE
:
- Çalışma alanı yöneticisi olun
- Şemada
USAGE
ayrıcalığına sahip olma veya şemada ayrıcalığıUSAGE
olan bir grupta bulunma USAGE
veya üzerinde ayrıcalığıCATALOG
olanUSAGE
bir grupta olma- Şemanın sahibi veya şemanın sahibi olan bir grupta olma
Şema içindeki bir nesnenin sahibinin bile kullanabilmesi USAGE
için ayrıcalığına sahip olması gerekir.
Ayrıcalık hiyerarşisi
Çalışma alanında ve tüm kümelerde tablo erişim denetimi etkinleştirildiğinde, Azure Databricks'teki SQL nesneleri hiyerarşiktir ve ayrıcalıklar aşağı doğru devralınır. Bu, üzerinde bir ayrıcalığı vermenin veya reddetmenin CATALOG
katalogdaki tüm şemalara otomatik olarak ayrıcalık verme veya reddetme anlamına gelir. Benzer şekilde, bir şema nesnesinde verilen ayrıcalıklar bu şemadaki tüm nesneler tarafından devralınır. Bu düzen, güvenliği sağlanabilir tüm nesneler için geçerlidir.
Bir tablodaki kullanıcı ayrıcalıklarını reddederseniz, kullanıcı şemadaki tüm tabloları listelemeyi deneyerek tabloyu göremez. Bir şemada kullanıcı ayrıcalıklarını reddederseniz, kullanıcı katalogdaki tüm şemaları listelemeye çalışarak şemanın var olduğunu göremez.
Dinamik görünüm işlevleri
Azure Databricks, Hive meta veri deposu tarafından yönetilen bir görünüm tanımının gövdesinde sütun ve satır düzeyi izinlerini dinamik olarak ifade etmenizi sağlayan iki kullanıcı işlevi içerir.
current_user()
: geçerli kullanıcı adını döndürür.is_member()
: geçerli kullanıcının çalışma alanı düzeyinde belirli bir Azure Databricks grubunun üyesi olup olmadığını belirler.
Aşağıdaki örnek, bir kullanıcının uygun grup üyeliğine sahip olup olmadığını belirlemek için her iki işlevi de birleştirir:
-- Return: true if the user is a member and false if they are not
SELECT
current_user as user,
-- Check to see if the current user is a member of the "Managers" group.
is_member("Managers") as admin
Sütun düzeyinde izinler
Belirli bir grubun veya kullanıcının görebileceği sütunları sınırlamak için dinamik görünümleri kullanabilirsiniz. Yalnızca gruba ait kullanıcıların tablodan auditors
e-posta adreslerini sales_raw
görebileceği aşağıdaki örneği göz önünde bulundurun. Analiz zamanında Spark deyimini CASE
değişmez 'REDACTED'
değer veya sütunuyla email
değiştirir. Bu davranış Spark tarafından sağlanan tüm normal performans iyileştirmelerine olanak tanır.
-- 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_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ümleri kullanarak, satır veya alan düzeyine kadar olan izinleri belirtebilirsiniz. Yalnızca gruba ait managers
kullanıcıların 1.000.000,00 TL'den büyük işlem tutarlarını (total
sütun) görebileceği aşağıdaki örneği göz önünde bulundurun:
CREATE VIEW sales_redacted AS
SELECT
user_id,
country,
product,
total
FROM sales_raw
WHERE
CASE
WHEN is_group_member('managers') THEN TRUE
ELSE total <= 1000000
END;
Veri maskeleme
Önceki örneklerde gösterildiği gibi, kullanıcıların doğru grupta olmadığı sürece belirli sütun verilerini görmesini önlemek için sütun düzeyinde maskeleme uygulayabilirsiniz. Bu görünümler standart Spark SQL olduğundan, daha karmaşık SQL ifadeleriyle daha gelişmiş maskeleme türleri yapabilirsiniz. Aşağıdaki örnek, tüm kullanıcıların e-posta etki alanları üzerinde analiz gerçekleştirmesine izin verir, ancak grup üyelerinin auditors
kullanıcıların tam e-posta adreslerini görmesine olanak tanır.
-- 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_group_member('auditors') THEN email
ELSE regexp_extract(email, '^.*@(.*)$', 1)
END
FROM sales_raw