Sdílet prostřednictvím


Oprávnění metastoru Hive a zabezpečitelné objekty (starší verze)

Tento článek popisuje model oprávnění pro starší metastore Azure Databricks Hive, který je integrovaný do každého pracovního prostoru Azure Databricks. Popisuje také, jak udělit, odepřít a odvolat oprávnění pro objekty v integrovaném metastoru Hive. Katalog Unity používá pro udělení oprávnění jiný model. Viz privilegia Unity Catalogu a zabezpečené objekty.

Poznámka:

Řízení přístupu k tabulce pro data spravovaná metastorem Hive je starší model zásad správného řízení dat. Databricks doporučuje, abyste upgradovali tabulky spravované metastorem Hive na metastore katalogu Unity. Katalog Unity zjednodušuje zabezpečení a zásady správného řízení vašich dat tím, že poskytuje centrální místo pro správu a auditování přístupu k datům ve více pracovních prostorech ve vašem účtu. Další informace o tom, jak se model starších oprávnění liší od modelu oprávnění katalogu Unity, najdete v tématu Práce s katalogem Unity a starším metastorem Hive.

Požadavky

Poznámka:

  • Řízení přístupu k datům je vždy povolené v Databricks SQL, i když není řízení přístupu k tabulkám pro pracovní prostor povolené.
  • Pokud je pro pracovní prostor povolené řízení přístupu k tabulce a už jste v pracovním prostoru zadali seznamy ACL (udělená a odepřená oprávnění), budou tyto seznamy ACL v Databricks SQL dodrženy.

Správa oprávnění k objektům v metastoru Hive

Oprávnění k datovým objektům spravovaným metastorem Hive může udělit správce pracovního prostoru nebo vlastník objektu. Oprávnění pro objekty metastoru Hive můžete spravovat pomocí příkazů SQL.

Ke správě oprávnění v SQL použijete příkazy GRANT, REVOKE, DENY, MSCKa SHOW GRANTS v poznámkovém bloku nebo editoru dotazů SQL Databricks pomocí syntaxe:

GRANT privilege_type ON securable_object TO principal

Kde:

Pokud chcete udělit oprávnění všem uživatelům ve vašem pracovním prostoru, udělte oprávnění skupině users. Příklad:

GRANT SELECT ON TABLE <schema-name>.<table-name> TO users

Další informace o správě oprávnění pro objekty v metastoru Hive pomocí příkazů SQL naleznete v tématu Oprávnění a zabezpečitelné objekty v metastoru Hive.

Řízení přístupu k tabulce můžete spravovat také v plně automatizovaném nastavení pomocí poskytovatele Databricks Terraform a databricks_sql_permissions.

Vlastnictví objektů

Když je v clusteru nebo SQL Warehouse povolené řízení přístupu k tabulce, stane se uživatel, který vytvoří schéma, tabulku, zobrazení nebo funkci, jeho vlastníkem. Vlastník má udělená všechna oprávnění a může udělit oprávnění jiným uživatelům.

Skupiny mohou vlastnit objekty, v takovém případě jsou všichni členové této skupiny považováni za vlastníky.

Vlastník objektu nebo správce pracovního prostoru může vlastnictví objektu převést pomocí následujícího příkazu:

ALTER <object> OWNER TO `<user-name>@<user-domain>.com`

Poznámka:

Pokud je řízení přístupu k tabulce v clusteru nebo SQL Warehouse zakázané, vlastníci se při vytvoření schématu, tabulky nebo zobrazení nezaregistrují. Správce pracovního prostoru musí objektu přiřadit pomocí příkazu vlastníka ALTER <object> OWNER TO .

Zabezpečitelné objekty v metastoru Hive

Zabezpečitelné objekty jsou:

  • CATALOG: řídí přístup k celému katalogu dat.

    • SCHEMA: řídí přístup ke schématu.
      • TABLE: řídí přístup ke spravované nebo externí tabulce.
      • VIEW: řídí přístup k zobrazením SQL.
      • FUNCTION: řídí přístup k pojmenované funkci.
  • ANONYMOUS FUNCTION: řídí přístup k anonymním nebo dočasným funkcím.

    Poznámka:

    ANONYMOUS FUNCTION Databricks SQL nepodporuje objekty.

  • ANY FILE: řídí přístup k základnímu systému souborů.

    Upozorňující

    Uživatelé s uděleným přístupem k ANY FILE můžou obejít omezení, která jsou uvedena v katalogu, schématech, tabulkách a zobrazeních, a to přímo čtením ze systému souborů.

Poznámka:

Oprávnění ke globálním a místním dočasným zobrazením nejsou podporována. Místní dočasná zobrazení jsou viditelná pouze ve stejné relaci a zobrazení vytvořená ve schématu global_temp jsou viditelná všem uživatelům, kteří sdílejí cluster nebo SQL warehouse. Oprávnění k podkladovým tabulkám a zobrazením, na která odkazují jakákoli dočasná zobrazení, se však vynucují.

oprávnění , která můžete udělit pro objekty metastoru Hive

  • SELECT: poskytuje přístup pro čtení k objektu.
  • CREATE: umožňuje vytvořit objekt (například tabulku ve schématu).
  • MODIFY: umožňuje přidávat, odstraňovat a upravovat data do nebo z objektu.
  • USAGE: neposkytuje žádné schopnosti, ale je dalším požadavkem na provedení jakékoli akce u objektu schématu.
  • READ_METADATA: umožňuje zobrazit objekt a jeho metadata.
  • CREATE_NAMED_FUNCTION: umožňuje vytvořit pojmenovanou funkci definovanou uživatelem v existujícím katalogu nebo schématu.
  • MODIFY_CLASSPATH: umožňuje přidat soubory do cesty třídy Spark.
  • ALL PRIVILEGES: uděluje všechna oprávnění (jsou přeložena do všech výše uvedených oprávnění).

Poznámka:

Oprávnění MODIFY_CLASSPATH není podporováno v Databricks SQL.

USAGE výsada

Aby uživatel mohl provést akci s objektem schématu v metastoru Hive, musí mít kromě oprávnění k provedení této akce také oprávnění USAGE pro toto schéma. Jakýkoli z následujících požadavků splňuje USAGE :

  • Být správcem pracovního prostoru
  • Mít oprávnění ke schématu USAGE nebo být ve skupině, která má oprávnění ke schématu USAGE
  • USAGE Mít oprávnění nebo CATALOG být ve skupině, která má oprávnění USAGE
  • Být vlastníkem schématu nebo být ve skupině, která vlastní schéma

Dokonce i vlastník objektu uvnitř schématu musí mít oprávnění USAGE, aby ho bylo možné použít.

Hierarchie oprávnění

Pokud je v pracovním prostoru a ve všech clusterech povolené řízení přístupu k tabulce, jsou objekty SQL v Azure Databricks hierarchické a oprávnění se dědí směrem dolů. To znamená, že udělení nebo zamítnutí oprávnění pro CATALOG automaticky udělí nebo odepře oprávnění všem schématům v katalogu. Podobně jsou oprávnění udělená objektem schématu zděděna všemi objekty v daném schématu. Tento vzor platí pro všechny zabezpečitelné objekty.

Pokud uživateli odepřete oprávnění k tabulce, uživatel nemůže zobrazit tabulku tím, že se pokusí zobrazit seznam všech tabulek ve schématu. Pokud uživateli odepřete oprávnění ke schématu, uživatel neuvidí, že schéma existuje, když se pokusí vypsat všechna schémata v katalogu.

Funkce dynamického zobrazení

Azure Databricks obsahuje dvě uživatelské funkce, které umožňují dynamicky vyjádřit oprávnění na úrovni sloupců a řádků v textu definice zobrazení spravované metastorem Hive.

  • current_user(): vrátí aktuální uživatelské jméno.
  • is_member(): Určí, jestli je aktuální uživatel členem konkrétní skupiny Azure Databricks na úrovni pracovního prostoru.

Následující příklad kombinuje obě funkce a určí, jestli má uživatel odpovídající členství ve skupině:

-- 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

Oprávnění na úrovni sloupce

Pomocí dynamických zobrazení můžete omezit sloupce, které může konkrétní skupina nebo uživatel zobrazit. Podívejte se na následující příklad, kdy e-mailové adresy z tabulky sales_raw uvidí jenom uživatelé, kteří patří do skupiny auditors. V době analýzy Spark nahradí příkaz CASE literálem 'REDACTED' nebo sloupcem email. Toto chování umožňuje všechny obvyklé optimalizace výkonu poskytované Sparkem.

-- 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

Oprávnění na úrovni řádků

Pomocí dynamických zobrazení můžete zadat oprávnění dolů na úroveň řádku nebo pole. Podívejte se na následující příklad, kdy pouze uživatelé, kteří patří do skupiny managers, uvidí částky transakcí (total sloupec) větší než 1 000 000,000 KČ:

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;

Maskování dat

Jak je znázorněno v předchozích příkladech, můžete implementovat maskování na úrovni sloupců, abyste uživatelům zabránili v zobrazení konkrétních dat sloupců, pokud nejsou ve správné skupině. Vzhledem k tomu, že tato zobrazení jsou standardní Spark SQL, můžete provádět pokročilejší typy maskování pomocí složitějších výrazů SQL. Následující příklad umožňuje všem uživatelům provádět analýzu e-mailových domén, ale umožňuje členům auditors skupiny zobrazit úplné e-mailové adresy uživatelů.

-- 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