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

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ür
  • securable_object Hive meta veri deposunda güvenliği sağlanabilir bir nesnedir
  • principal 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 olan USAGE 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 emaildeğ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