Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel wordt het bevoegdheidsmodel beschreven voor de verouderde Azure Databricks Hive-metastore, die is ingebouwd in elke Azure Databricks-werkruimte. Ook wordt beschreven hoe u bevoegdheden voor objecten in de ingebouwde Hive-metastore kunt verlenen, weigeren en intrekken. Unity Catalog maakt gebruik van een ander model voor het verlenen van bevoegdheden. Zie Unity Catalog-bevoegdheden en beveiligbare objecten.
Notitie
Toegangsbeheer voor tabellen voor gegevens die worden beheerd door de Hive-metastore is een verouderd model voor gegevensbeheer. Databricks raadt u aan om de tabellen die worden beheerd door de Hive-metastore bij te werken naar de Unity Catalog-metastore. Unity Catalog vereenvoudigt de beveiliging en governance van uw gegevens door een centrale plaats te bieden voor het beheren en controleren van toegang tot gegevens in meerdere werkruimten in uw account. Zie Werken met de verouderde Hive-metastore naast Unity Catalog voor meer informatie over hoe het verouderde privilegemodel verschilt van het privilegemodel voor Unity Catalog.
Vereisten
- Een beheerder moet voor de werkruimte toegangsbeheer voor tabellen inschakelen en afdwingen.
- Het cluster moet zijn ingeschakeld voor toegangsbeheer voor tabellen.
Notitie
- Toegangsbeheer voor gegevens is altijd ingeschakeld in Databricks SQL, zelfs als toegangsbeheer voor tabellen niet is ingeschakeld voor de workspace.
- Als toegangsbeheer voor tabellen is ingeschakeld voor de werkruimte en u al ACL's (verleende en geweigerde bevoegdheden) in de werkruimte hebt opgegeven, worden deze ACL's in Databricks SQL gerespecteerd.
Bevoegdheden voor objecten in de Hive-metastore beheren
Bevoegdheden voor gegevensobjecten die worden beheerd door de Hive-metastore kunnen worden verleend door een werkruimtebeheerder of de eigenaar van een object. U kunt bevoegdheden voor Hive-metastore-objecten beheren met behulp van SQL-opdrachten.
Als u bevoegdheden in SQL wilt beheren, gebruikt u GRANT, REVOKE, DENY, MSCKen SHOW GRANTS instructies in een notebook of de Sql-query-editor van Databricks met behulp van de syntaxis:
GRANT privilege_type ON securable_object TO principal
Waar:
-
privilege_typeis een Privilege-type Hive-metastore -
securable_objectis een beveiligbaar object in de Hive-metastore -
principalis een gebruiker, service-principal (vertegenwoordigd door de waarde applicationId) of groep. U moet gebruikers, service-principals en groepsnamen met speciale tekens in backticks (` `) insluiten. Zie Principal.
Als u een bevoegdheid wilt verlenen aan alle gebruikers in uw werkruimte, verleent u de bevoegdheid aan de users groep. Voorbeeld:
GRANT SELECT ON TABLE <schema-name>.<table-name> TO users
Zie Bevoegdheden en beveiligbare objecten in de Hive-metastore voor meer informatie over het beheren van bevoegdheden voor objecten in de Hive-metastore met behulp van SQL-opdrachten.
U kunt ook toegangsbeheer voor tabellen beheren in een volledig geautomatiseerde installatie met behulp van de Databricks Terraform provider en databricks_sql_permissions.
Eigendom van objecten
Wanneer toegangsbeheer voor tabellen is ingeschakeld op een cluster of SQL Warehouse, wordt een gebruiker die een schema, tabel, weergave of functie maakt, de eigenaar. De eigenaar krijgt alle bevoegdheden en kan bevoegdheden verlenen aan andere gebruikers.
Groepen kunnen eigenaar zijn van objecten, in welk geval alle leden van die groep worden beschouwd als eigenaren.
De eigenaar van een object of een werkruimtebeheerder kan het eigendom van een object overdragen met behulp van de volgende opdracht:
ALTER <object> OWNER TO `<user-name>@<user-domain>.com`
Notitie
Wanneer toegangsbeheer voor tabellen is uitgeschakeld in een cluster of SQL Warehouse, worden eigenaren niet geregistreerd wanneer een schema, tabel of weergave wordt gemaakt. Een werkruimtebeheerder moet een eigenaar aan het object toewijzen met behulp van de ALTER <object> OWNER TO opdracht.
Beveiligbare objecten in de Hive-metastore
De beveiligbare objecten zijn:
CATALOG: beheert de toegang tot de volledige gegevenscatalogus.-
SCHEMA: beheert de toegang tot een schema.-
TABLE: beheert de toegang tot een beheerde of externe tabel. -
VIEW: beheert de toegang tot SQL-weergaven. -
FUNCTION: bepaalt de toegang tot een benoemde functie.
-
-
ANONYMOUS FUNCTION: beheert de toegang tot anonieme of tijdelijke functies.Notitie
ANONYMOUS FUNCTIONobjecten worden niet ondersteund in Databricks SQL.ANY FILE: beheert de toegang tot het onderliggende bestandssysteem.Waarschuwing
Gebruikers die toegang hebben verleend tot
ANY FILEkunnen de beperkingen voor de catalogus, schema's, tabellen en weergaven omzeilen door rechtstreeks vanuit het bestandssysteem te lezen.
Notitie
Bevoegdheden voor globale en lokale tijdelijke weergaven worden niet ondersteund. Lokale tijdelijke weergaven zijn alleen zichtbaar binnen dezelfde sessie en weergaven die zijn gemaakt in het global_temp schema zijn zichtbaar voor alle gebruikers die een cluster of SQL Warehouse delen. Bevoegdheden voor de onderliggende tabellen en weergaven waarnaar tijdelijke weergaven verwijzen, worden echter afgedwongen.
bevoegdheden die u kunt verlenen aan Hive-metastore-objecten
-
SELECT: geeft leestoegang tot een object. -
CREATE: biedt de mogelijkheid om een object te maken (bijvoorbeeld een tabel in een schema). -
MODIFY: biedt de mogelijkheid om gegevens aan of uit een object toe te voegen, te verwijderen en te wijzigen. -
USAGE: biedt geen mogelijkheden, maar is een extra vereiste om een actie uit te voeren op een schemaobject. -
READ_METADATA: biedt de mogelijkheid om een object en de bijbehorende metagegevens weer te geven. -
CREATE_NAMED_FUNCTION: biedt de mogelijkheid om een benoemde UDF te maken in een bestaande catalogus of een bestaand schema. -
MODIFY_CLASSPATH: biedt de mogelijkheid om bestanden toe te voegen aan het Spark-klassepad. -
ALL PRIVILEGES: geeft alle bevoegdheden (wordt omgezet in alle bovenstaande bevoegdheden).
Notitie
De MODIFY_CLASSPATH bevoegdheid wordt niet ondersteund in Databricks SQL.
USAGE voorrecht
Als u een actie wilt uitvoeren op een schemaobject in de Hive-metastore, moet een gebruiker de bevoegdheid USAGE voor dat schema hebben, naast de bevoegdheid om die actie uit te voeren. Een van de volgende voldoet aan de USAGE vereiste:
- Een werkruimtebeheerder zijn
- De
USAGEbevoegdheid op het schema hebben of in een groep zijn met deUSAGEbevoegdheid op het schema -
USAGEDe bevoegdheid hebben voor deCATALOGgroep of in een groep met deUSAGEbevoegdheid - De eigenaar van het schema zijn of zich in een groep bevinden die eigenaar is van het schema
Zelfs de eigenaar van een object in een schema moet de bevoegdheid USAGE hebben om het te kunnen gebruiken.
Bevoegdheidshiërarchie
Wanneer toegangsbeheer voor tabellen is ingeschakeld voor de werkruimte en op alle clusters, zijn SQL-objecten in Azure Databricks hiërarchisch en worden bevoegdheden naar beneden overgenomen. Dit betekent dat het verlenen of weigeren van een bevoegdheid op de CATALOG automatisch verleent of weigert de bevoegdheid voor alle schema's in de catalogus. Op dezelfde manier worden bevoegdheden die zijn verleend voor een schemaobject overgenomen door alle objecten in dat schema. Dit patroon geldt voor alle beveiligbare objecten.
Als u gebruikersbevoegdheden voor een tabel weigert, kan de gebruiker de tabel niet zien door een poging te doen om alle tabellen in het schema op te sommen. Als u een gebruiker privileges op een schema ontzegt, kan de gebruiker niet zien dat het schema bestaat door te proberen alle schema's in de catalogus op te sommen.
Dynamische weergavefuncties
Azure Databricks bevat twee gebruikersfuncties waarmee u dynamisch machtigingen op kolom- en rijniveau kunt uitdrukken in de hoofdtekst van een weergavedefinitie die wordt beheerd door de Hive-metastore.
-
current_user(): retourneert de huidige gebruikersnaam. -
is_member(): bepaal of de huidige gebruiker lid is van een specifieke Azure Databricks-groep op werkruimteniveau.
In het volgende voorbeeld worden beide functies gecombineerd om te bepalen of een gebruiker het juiste groepslidmaatschap heeft:
-- 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
Machtigingen op kolomniveau
U kunt dynamische weergaven gebruiken om de kolommen te beperken die een specifieke groep of gebruiker kan zien. Bekijk het volgende voorbeeld waarbij alleen gebruikers die deel uitmaken van de auditors groep e-mailadressen uit de sales_raw tabel kunnen zien. Op het moment van analyse vervangt Spark de CASE-instructie door de letterlijke 'REDACTED' of de kolom email. Dit gedrag biedt alle gebruikelijke prestatieoptimalisaties van Spark.
-- 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
Machtigingen op rijniveau
Met dynamische weergaven kunt u machtigingen tot op rij- of veldniveau opgeven. Bekijk het volgende voorbeeld, waarbij alleen gebruikers die deel uitmaken van de groep managers transactiebedragen (total kolom) kunnen zien die groter zijn dan $ 1.000.000,00:
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;
Gegevensmaskering
Zoals in de voorgaande voorbeelden wordt weergegeven, kunt u maskering op kolomniveau implementeren om te voorkomen dat gebruikers specifieke kolomgegevens zien, tenzij ze zich in de juiste groep bevinden. Omdat deze weergaven standaard Spark SQL zijn, kunt u geavanceerdere typen maskering uitvoeren met complexere SQL-expressies. In het volgende voorbeeld kunnen alle gebruikers analyses uitvoeren op e-maildomeinen, maar kunnen leden van de groep de volledige e-mailadressen van gebruikers auditors zien.
-- 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