Hive metaadattár-jogosultságok és biztonságos objektumok (örökölt)

Ez a cikk az örökölt Azure Databricks Hive-metaadattár jogosultsági modelljét ismerteti, amely az egyes Azure Databricks-munkaterületekbe van beépítve. Azt is ismerteti, hogyan adhat, tagadhat meg és vonhat vissza jogosultságokat a beépített Hive-metaadattárban lévő objektumokhoz. A Unity Catalog egy másik modellt használ a jogosultságok megadásához. Lásd: Unity Catalog-jogosultságok és biztonságos objektumok.

Feljegyzés

A Hive metaadattár által kezelt adatok táblahozzáférés-vezérlése régi adatszabályozási modell. A Databricks azt javasolja, hogy frissítse a Hive metaadattár által kezelt táblákat a Unity Catalog metaadattárra. A Unity katalógus leegyszerűsíti az adatok biztonságát és szabályozását azáltal, hogy egy központi helyen teszi lehetővé a több munkaterületen lévő adatokhoz való hozzáférés adminisztrálását és auditálást az Ön fiókjában. Ha többet szeretne megtudni arról, hogy az örökölt jogosultsági modell miben különbözik a Unity Catalog jogosultságmodelljétől, olvassa el a Unity Catalog és az örökölt Hive-metaadattár használatát ismertető témakört.

Követelmények

  • A rendszergazdáknak engedélyeznie és kikényszerítenie kell a táblahozzáférés-vezérlést a munkaterületen.
  • A fürtnek engedélyeznie kell a táblahozzáférés-vezérlést.

Feljegyzés

  • Az adathozzáférés-vezérlés mindig engedélyezve van a Databricks SQL-ben akkor is, ha a táblahozzáférés-vezérlés nincs engedélyezve a munkaterületen.
  • Ha a táblahozzáférés-vezérlés engedélyezve van a munkaterületen, és már megadott ACL-eket (megadott és megtagadott jogosultságokat) a munkaterületen, a Databricks SQL tiszteletben tartja ezeket az ACL-eket.

Jogosultságok kezelése objektumokon a Hive metaadattárban

A Hive metaadattár által kezelt adatobjektumokra vonatkozó jogosultságokat a munkaterület rendszergazdája vagy az objektum tulajdonosa adhat meg. A Hive metaadattár-objektumaihoz tartozó jogosultságokat SQL-parancsokkal kezelheti.

Az SQL-jogosultságok kezeléséhez a GRANT, a REVOKE, a DENY, az MSCK és a SHOW GRANTS utasítást használja egy jegyzetfüzetben vagy a Databricks SQL-lekérdezésszerkesztőben a szintaxis használatával:

GRANT privilege_type ON securable_object TO principal

Ahol:

Ha jogosultságot szeretne adni a munkaterület összes felhasználójának, adja meg a jogosultságot a users csoportnak. Példa:

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

További információ a Hive-metaadattárban lévő objektumok jogosultságainak SQL-parancsokkal történő kezeléséről: Jogosultságok és biztonságos objektumok a Hive-metaadattárban.

A táblahozzáférés-vezérlést egy teljesen automatizált beállításban is kezelheti a Databricks Terraform szolgáltató és a databricks_sql_permissions használatával.

Objektumok tulajdonjoga

Ha a táblahozzáférés-vezérlés engedélyezve van egy fürtön vagy SQL Warehouse-on, a sémát, táblát, nézetet vagy függvényt létrehozó felhasználó lesz a tulajdonosa. A tulajdonos minden jogosultságot megkap, és jogosultságokat adhat más felhasználóknak.

A csoportok rendelkezhetnek objektumokkal, ebben az esetben a csoport minden tagja tulajdonosnak minősül.

Az objektum tulajdonosa vagy a munkaterület rendszergazdája az alábbi paranccsal ruházhatja át egy objektum tulajdonjogát:

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

Feljegyzés

Ha a táblahozzáférés-vezérlés le van tiltva egy fürtön vagy sql warehouse-on, a rendszer nem regisztrálja a tulajdonosokat séma, tábla vagy nézet létrehozásakor. A munkaterület rendszergazdájának tulajdonost kell hozzárendelnie az objektumhoz a ALTER <object> OWNER TO parancs használatával.

Biztonságos objektumok a Hive metaadattárban

A biztonságos objektumok a következők:

  • CATALOG: a teljes adatkatalógushoz való hozzáférést szabályozza.

    • SCHEMA: egy sémához való hozzáférést szabályozza.
      • TABLE: a felügyelt vagy külső táblákhoz való hozzáférést szabályozza.
      • VIEW: az SQL-nézetekhez való hozzáférést szabályozza.
      • FUNCTION: egy elnevezett függvényhez való hozzáférést szabályozza.
  • ANONYMOUS FUNCTION: a névtelen vagy ideiglenes függvényekhez való hozzáférést szabályozza.

    Feljegyzés

    ANONYMOUS FUNCTION az objektumok nem támogatottak a Databricks SQL-ben.

  • ANY FILE: a mögöttes fájlrendszerhez való hozzáférést szabályozza.

    Figyelmeztetés

    A hozzáféréssel ANY FILE rendelkező felhasználók közvetlenül a fájlrendszerből olvasva megkerülhetik a katalógusra, sémákra, táblákra és nézetekre vonatkozó korlátozásokat.

Feljegyzés

A globális és helyi ideiglenes nézetekre vonatkozó jogosultságok nem támogatottak. A helyi ideiglenes nézetek csak ugyanabban a munkamenetben láthatók, a sémában global_temp létrehozott nézetek pedig a fürtöt vagy SQL Warehouse-t használó összes felhasználó számára láthatók. Az alapul szolgáló táblák és az ideiglenes nézetek által hivatkozott nézetek jogosultságai azonban kikényszeríthetők.

Hive metaadattár-objektumokon megadható jogosultságok

  • SELECT: olvasási hozzáférést biztosít egy objektumhoz.
  • CREATE: lehetővé teszi egy objektum (például egy séma táblázatának) létrehozását.
  • MODIFY: lehetővé teszi adatok hozzáadását, törlését és módosítását egy objektumhoz vagy objektumból.
  • USAGE: nem ad semmilyen képességet, de további követelmény, hogy bármilyen műveletet végrehajtson egy sémaobjektumon.
  • READ_METADATA: lehetővé teszi egy objektum és metaadatainak megtekintését.
  • CREATE_NAMED_FUNCTION: lehetővé teszi egy névvel ellátott UDF létrehozását egy meglévő katalógusban vagy sémában.
  • MODIFY_CLASSPATH: lehetővé teszi fájlok hozzáadását a Spark-osztály elérési útjára.
  • ALL PRIVILEGES: az összes jogosultságot megadja (az összes fenti jogosultságra lefordítva).

Feljegyzés

A MODIFY_CLASSPATH jogosultság nem támogatott a Databricks SQL-ben.

USAGE Kiváltság

Ha műveletet szeretne végrehajtani egy sémaobjektumon a Hive-metaadattárban, a felhasználónak a művelet végrehajtásához szükséges jogosultságon felül rendelkeznie kell a USAGE sémára vonatkozó jogosultsággal. Az alábbiak bármelyike megfelel a USAGE követelménynek:

  • Munkaterület rendszergazdája
  • Jogosultsággal rendelkezik USAGE a sémában, vagy olyan csoportban kell lennie, amely rendelkezik a USAGE sémán lévő jogosultsággal
  • Jogosultsággal USAGE rendelkezik egy CATALOG olyan csoportban, amely rendelkezik jogosultsággal USAGE
  • Legyen a séma tulajdonosa, vagy legyen a séma tulajdonosa

Még a sémán belüli objektumok tulajdonosának is rendelkeznie kell a USAGE jogosultsággal a használatához.

Jogosultsági hierarchia

Ha a táblahozzáférés-vezérlés engedélyezve van a munkaterületen és az összes fürtön, az Azure Databricks SQL-objektumai hierarchikusak, a jogosultságok pedig lefelé öröklődnek. Ez azt jelenti, hogy a jogosultság megadása vagy megtagadása automatikusan CATALOG megadja vagy megtagadja a jogosultságot a katalógus összes sémája számára. Hasonlóképpen, a sémaobjektumokon megadott jogosultságokat a séma összes objektuma örökli. Ez a minta minden biztonságos objektumra igaz.

Ha megtagadja egy tábla felhasználói jogosultságait, a felhasználó nem látja a táblát, ha megkísérli listázni a séma összes tábláját. Ha megtagad egy felhasználói jogosultságot egy sémán, a felhasználó nem látja, hogy a séma létezik, ha megkísérli listázni a katalógus összes sémáját.

Dinamikus nézetfüggvények

Az Azure Databricks két felhasználói függvényt tartalmaz, amelyek lehetővé teszik az oszlop- és sorszintű engedélyek dinamikus kifejezését a Hive metaadattár által felügyelt nézetdefiníció törzsében.

  • current_user(): adja vissza az aktuális felhasználónevet.
  • is_member(): állapítsa meg, hogy az aktuális felhasználó tagja-e egy adott Azure Databricks-csoportnak a munkaterület szintjén.

Az alábbi példa mindkét függvényt egyesíti annak megállapításához, hogy egy felhasználó rendelkezik-e a megfelelő csoporttagsággal:

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

Oszlopszintű engedélyek

Dinamikus nézetekkel korlátozhatja, hogy egy adott csoport vagy felhasználó milyen oszlopokat lát. Vegye figyelembe az alábbi példát, amelyben csak a auditors csoporthoz tartozó felhasználók láthatják a sales_raw táblázat e-mail-címét. Az elemzés során a Spark a CASE konstansra 'REDACTED' vagy az oszlopra emailcseréli az utasítást. Ez a viselkedés lehetővé teszi a Spark által biztosított összes szokásos teljesítményoptimalizálást.

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

Sorszintű engedélyek

Dinamikus nézetek használatával a sor- vagy mezőszintig megadhatja az engedélyeket. Vegye figyelembe az alábbi példát, amelyben csak a csoporthoz tartozó felhasználók láthatják az managers 1 000 000,00 usd-nél nagyobb tranzakcióösszegeket (total oszlopot):

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;

Adatmaszkolás

Ahogy az előző példákban is látható, oszlopszintű maszkolást alkalmazhat, hogy a felhasználók ne láthassák az adott oszlopadatokat, hacsak nem a megfelelő csoportban vannak. Mivel ezek a nézetek standard Spark SQL-nek számítanak, összetettebb SQL-kifejezésekkel speciálisabb maszkolást végezhet. Az alábbi példa lehetővé teszi, hogy az összes felhasználó elemezni tudja az e-mail-tartományokat, de a csoport tagjai megtekinthetik a auditors felhasználók teljes e-mail-címét.

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