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.
Op deze pagina wordt beschreven hoe u ABAC-beleid maakt, bewerkt, bekijkt en verwijdert in Unity Catalog. Zie Basisconcepten voor ABAC voor een overzicht van beleidsconcepten.
Requirements
Alle beleidsbewerkingen (maken, bewerken, verwijderen, weergeven, beschrijven) vereisen MANAGE op het beveiligbare object of eigendom van het object. Voor het maken van een beleid is ook het volgende vereist:
- Databricks Runtime 16.4 of hoger of serverloze berekeningen. Zie Compute-vereisten.
- Voor de filter- of maskeringslogica is er een door de gebruiker gedefinieerde functie (UDF) in Unity Catalog ingeschakeld, of definieert u inline een SQL-functie bij het opstellen van het beleid.
- Beheerde tags die zijn toegepast op doelobjecten. Zie Geregelde tags.
Een beleid maken
U kunt een beleid maken met behulp van de gebruikersinterface van Catalog Explorer, de CREATE POLICY SQL-instructie of de Azure Databricks REST API's, SDK's en Terraform.
Als u een beleid wilt maken, moet MANAGE u beschikken over rechten op het beveiligbare object waaraan het beleid is gekoppeld (catalogus, schema of tabel), of de eigenaar ervan zijn, en EXECUTE op de UDF waarmee de filter- of maskeringslogica wordt geïmplementeerd.
Catalogusverkenner
Klik in uw Azure Databricks werkruimte op
Catalog.
Selecteer het object dat het beleidsbereik bepaalt, zoals een catalogus, schema of tabel.
Klik op het tabblad Beleid .
Klik op Nieuw beleid.
Voltooi de sectie Beleidsidentificatie. De volgende tabel bevat een overzicht van elk veld:
Veld Beschrijving Example Naam Een naam voor het beleid. Moet uniek zijn onder alle beleidsregels die zijn gedefinieerd op hetzelfde beveiligbare object. hide_eu_customers,mask_ssnBeschrijving Optioneel. Een beschrijving voor het beleid. Wordt weergegeven in auditlogboeken en helpt beheerders inzicht te krijgen in de beleidsintentie. Restrict EU customer rows from US analysts,Mask SSN for all account usersVoltooi de sectie Principals en het bereik . De volgende tabel bevat een overzicht van elk veld:
Veld Beschrijving Example Toegepast op... De gebruikers, groepen of service-principals zijn onderhevig aan het beleid. Wanneer deze principals query-tabellen binnen het bereik vallen, wordt het rijfilter of kolommasker toegepast. Als u het beleid wilt toepassen op alle principals in het account, selecteert u All account users.us_analysts,All account usersBehalve voor Principals die zijn vrijgesteld van het beleid. Vrijgestelde principals zijn niet onderworpen aan filteren of maskeren en zien de volledige, ongewijzigde gegevens. admins,compliance_teamScope Het beveiligbaar waar het beleid is gekoppeld. Het beleid evalueert op basis van alle tabellen binnen het geselecteerde bereik. Selecteer een catalogus, schema of tabel. Azure Databricks adviseert om beleidsregels toe te voegen op het hoogste toepasselijke niveau. Selecteer catalogus proden selecteer vervolgens schemacustomers.Tabelvoorwaarde Bepaalt op welke tabellen binnen welk bereik het beleid van toepassing is. Geen voorwaarde: het beleid wordt toegepast op alle tabellen binnen het bereik. Tabellen die overeenkomen met een van deze tags: past het beleid toe op de opgegeven lijst met tagsleutels of tagsleutel-waardeparen. Tabellen die een van deze tabellen bevatten, komen overeen met het beleid. Tabellen die overeenkomen met een aangepaste expressie: u kunt een Boole-expressie maken met behulp van has_tagenhas_tag_value, gecombineerd metAND,ORenNOTvoor complexere vergelijkingslogica. Het beleid wordt toegepast op tabellen waarin de expressie wordt geëvalueerd totTRUEen overeenkomt met het beleid. Als een tabel in het bereik niet overeenkomt met de voorwaarde, is het beleid niet van toepassing op die tabel.Selecteer Tabellen die overeenkomen met een van deze tags en kies vervolgens tagsleutel sensitivitymet waardehighom het beleid alleen te beperken tot gevoelige tabellen.
Kies voor beleidstype het type toegangsbeheer dat u wilt afdwingen:
Option Beschrijving Gebruik wanneer Rijfilter Hiermee maakt u een rijfilterbeleid. De UDF evalueert elke rij en retourneert een Booleaanse waarde. Rijen waarin de UDF, FALSEretourneert, worden uitgesloten van queryresultaten.Access is afhankelijk van de waarden in elke rij, zoals filteren op de waarden in een kolom die geografische regio's bevat. Kolommasker Maakt een beleid voor kolommaskers aan. De UDF neemt de kolomwaarde als invoer en retourneert de oorspronkelijke of een gemaskeerde versie. Het retourtype moet worden gecast naar het gegevenstype van de doelkolom. U moet gevoelige velden, zoals SSN's, telefoonnummers of e-mailadressen, redacteren, terwijl de principal nog steeds een query kan uitvoeren op de tabel. De volgende secties zijn afhankelijk van uw beleidstypeselectie . Vouw de sectie uit die overeenkomt met uw selectie:
Rijfilter
Kies in de sectie Rijfilterfunctie hoe u de functie rijfilter opgeeft:
-
Bestaande selecteren: Selecteer een UDF die al is gedefinieerd in Unity Catalog. De UDF evalueert elke rij en retourneert een Booleaanse waarde. Rijen waarvoor de functie
FALSEretourneert, worden uitgesloten van de queryresultaten. U moetEXECUTEhebben op de UDF. - Maken: Definieer een SQL-functie die moet worden gebruikt als rijfilterlogica.
Geef in de sectie Functie-invoer een waarde op voor elke functieparameter. Elke invoer kan een kolom zijn die overeenkomt met tags, een kolom die overeenkomt met een aangepaste expressie of een constante waarde.
Kolommasker
Kies in de sectie Kolomvoorwaarden hoe u de kolommen kunt identificeren die moeten worden gemaskeerd:
- Kolommen die overeenkomen met een van deze tags: geef een lijst met tagsleutels of tagsleutel-waardeparen op. Kolommen met een van deze kolommen worden gemaskeerd door het beleid.
-
Kolommen die overeenkomen met een aangepaste expressie: bouw een Boole-expressie met behulp van
has_tagenhas_tag_value, gecombineerd metAND,ORenNOTvoor complexere overeenkomende logica. Kolommen waarin de expressie naarTRUEevalueert, worden gemaskeerd.
Kies vervolgens de functie Maskering die u wilt toepassen op de overeenkomende kolommen:
-
Bestaande selecteren: Selecteer een UDF die al is gedefinieerd in Unity Catalog. De UDF retourneert de oorspronkelijke of gemaskeerde waarde. Het retourtype moet worden gecast naar het gegevenstype van de doelkolom. Je moet
EXECUTEop de UDF hebben. - Maken: Definieer een SQL-functie die moet worden gebruikt als de logica voor kolommaskering.
Geef in de sectie Functie-invoer een waarde op voor elke extra functieparameter. Elke invoer kan een kolom zijn die overeenkomt met tags, een kolom die overeenkomt met een aangepaste expressie of een constante waarde.
In dit voorbeeld wordt een constante waarde gebruikt om
4de laatste 4 tekens van de SSN weer te geven.
-
Bestaande selecteren: Selecteer een UDF die al is gedefinieerd in Unity Catalog. De UDF evalueert elke rij en retourneert een Booleaanse waarde. Rijen waarvoor de functie
Klik op Create policy (Beleid maken).
SQL
Zie CREATE POLICY voor volledige documentatie.
CREATE [OR REPLACE] POLICY policy_name
ON { CATALOG catalog_name | SCHEMA schema_name | TABLE table_name }
[COMMENT description]
{ row_filter_body | column_mask_body }
Hoofdtekst van rijfilter:
ROW FILTER function_name
TO principal [, ...]
[EXCEPT principal [, ...]]
FOR TABLES
[WHEN condition]
[MATCH COLUMNS condition [[AS] alias] [, ...]]
[USING COLUMNS (function_arg [, ...])]
Hoofdtekst van kolommasker:
COLUMN MASK function_name
TO principal [, ...]
[EXCEPT principal [, ...]]
FOR TABLES
[WHEN condition]
[MATCH COLUMNS condition [[AS] alias] [, ...]]
ON COLUMN alias
[USING COLUMNS (function_arg [, ...])]
Parameters:
-
policy_name: Een naam voor het beleid. Moet uniek zijn voor alle beleidsregels die zijn gedefinieerd op hetzelfde beveiligbare object. -
ON { CATALOG | SCHEMA | TABLE }: Het bereik waaraan het beleid is gekoppeld. Het beleid evalueert alle tabellen die afstammelingen zijn van dit beveiligbare object. -
function_name: De volledig gekwalificeerde naam van de UDF waarmee de filter- of maskeringslogica wordt geïmplementeerd. -
TO principal [, ...]: De gebruikers, groepen of service-principals waarop het beleid van toepassing is. -
EXCEPT principal [, ...]: Principals die zijn vrijgesteld van het beleid. Vrijgestelde principals zijn niet onderworpen aan filteren of maskeren. -
FOR TABLES: Hiermee geeft u op dat het beleid is gericht op tabellen. Tabellen zijn momenteel het enige ondersteunde beveiligbare type en dat omvat streamingtabellen en gerealiseerde weergaven. -
WHEN condition: Een Booleaanse expressie waarmee wordt bepaald op welke tabellen het beleid van toepassing is, op basis van hun tags. Maakt gebruik van ingebouwde functieshas_tag('tag_name')enhas_tag_value('tag_name', 'tag_value'). Als er niets wordt opgegeven, is de standaardwaardeTRUE(geldt voor alle tabellen binnen de scope). -
MATCH COLUMNS condition [[AS] alias] [, ...]: Kolomvoorwaarden die identificeren welke kolommen het beleid doelwitten. Elke voorwaarde is een Booleaanse expressie die is opgebouwd uithas_tag('tag_name')enhas_tag_value('tag_name', 'tag_value'), optioneel gecombineerd metAND,ORenNOT. Aan elke voorwaarde kan een alias worden toegewezen voor gebruik inON COLUMNenUSING COLUMNS. Een beleid kan maximaal 3MATCH COLUMNSexpressies bevatten en alle beleidsregels moeten overeenkomen om het beleid toe te passen. -
ON COLUMN alias: Voor beleid voor kolommasker specificeert u de overeenkomende kolom die gemaskeerd moet worden, aangeduid door de alias vanMATCH COLUMNS. -
USING COLUMNS (function_arg [, ...]): Argumenten doorgegeven aan de UDF. Elk argument kan een alias zijn vanMATCH COLUMNSof een constante letterlijke waarde.
Voorbeeld: beleid voor kolommasker. Masker alle kolommen die pii:ssn in het prod.customers schema zijn getagd, waarbij alleen de laatste vier tekens worden weergegeven. Het beleid is van toepassing op us_analysts uitzondering admins.
CREATE FUNCTION ssn_to_last_nr (ssn STRING, nr INT) RETURNS STRING
RETURN right(ssn, nr);
CREATE POLICY mask_ssn
ON SCHEMA prod.customers
COLUMN MASK ssn_to_last_nr
TO us_analysts EXCEPT admins
FOR TABLES
MATCH COLUMNS has_tag_value('pii', 'ssn') AS ssn
ON COLUMN ssn
USING COLUMNS (4);
Voorbeeld: beleid voor rijfilters. Sluit rijen van Europese klanten uit van tabellen die sensitivity:high zijn getagd in het prod.customers schema. Het beleid is van toepassing op us_analysts en filtert rijen op basis van een geo_region kolom.
CREATE FUNCTION non_eu_region (geo_region STRING) RETURNS BOOLEAN
RETURN geo_region <> 'eu';
CREATE POLICY hide_eu_customers
ON SCHEMA prod.customers
COMMENT 'Exclude rows with European customers from sensitive tables'
ROW FILTER non_eu_region
TO us_analysts
FOR TABLES
WHEN has_tag_value('sensitivity', 'high')
MATCH COLUMNS has_tag('geo_region') AS region
USING COLUMNS (region);
Python SDK
Zie de Databricks SDK voor Python documentatie voor volledige documentatie.
In dit voorbeeld wordt een beleid voor rijfilters gemaakt waarmee rijen met Europese klanten voor amerikaanse analisten worden uitgesloten:
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.catalog import (
FunctionArgument,
MatchColumn,
PolicyInfo,
PolicyType,
RowFilterOptions,
SecurableType,
)
w = WorkspaceClient()
w.policies.create_policy(PolicyInfo(
name="hide_eu_customers",
comment="Exclude rows with European customers from sensitive tables",
on_securable_type=SecurableType.SCHEMA,
on_securable_fullname="prod.customers",
for_securable_type=SecurableType.TABLE,
policy_type=PolicyType.POLICY_TYPE_ROW_FILTER,
to_principals=["us_analysts"],
match_columns=[
MatchColumn(condition="has_tag('geo_region')", alias="region"),
],
row_filter=RowFilterOptions(
function_name="prod.customers.non_eu_region",
using=[FunctionArgument(alias="region")],
),
))
In dit voorbeeld wordt een kolommaskerbeleid gemaakt waarmee burgerservicenummers voor Amerikaanse analisten worden gemaskeerd, met uitzondering van die in de admins groep:
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.catalog import (
ColumnMaskOptions,
FunctionArgument,
MatchColumn,
PolicyInfo,
PolicyType,
SecurableType,
)
w = WorkspaceClient()
w.policies.create_policy(PolicyInfo(
name="mask_ssn",
comment="Mask social security numbers",
on_securable_type=SecurableType.SCHEMA,
on_securable_fullname="prod.customers",
for_securable_type=SecurableType.TABLE,
policy_type=PolicyType.POLICY_TYPE_COLUMN_MASK,
to_principals=["us_analysts"],
except_principals=["admins"],
match_columns=[
MatchColumn(condition="has_tag_value('pii', 'ssn')", alias="ssn"),
],
column_mask=ColumnMaskOptions(
function_name="prod.customers.ssn_to_last_nr",
on_column="ssn",
using=[FunctionArgument(constant="4")],
),
))
Een beleid bewerken
Catalogusverkenner
- Klik in uw Azure Databricks werkruimte op
Catalog.
- Selecteer het object waaraan het beleid is gekoppeld.
- Klik op het tabblad Beleid .
- Selecteer het beleid dat u wilt bewerken.
- Werk de velden bij die u wilt wijzigen. U kunt de beschrijving, principals, beleidstype, voorwaarden en functie-invoertoewijzingen wijzigen. De beleidsnaam en het beveiligbare object waarop het beleid wordt toegepast, kunnen niet worden bewerkt. Zie Een beleid maken voor veldbeschrijvingen.
- Klik op Beleid bijwerken.
SQL
CREATE OR REPLACE POLICY vervangt de volledige beleidsdefinitie. Geef alle clausules op, niet alleen de velden die u wilt wijzigen. Het vervangingsbeleid moet dezelfde naam hebben en zich op hetzelfde beveiligde object bevinden.
CREATE OR REPLACE POLICY mask_ssn
ON SCHEMA prod.customers
COLUMN MASK ssn_to_last_nr
TO us_analysts EXCEPT admins, compliance_team
FOR TABLES
MATCH COLUMNS has_tag_value('pii', 'ssn') AS ssn
ON COLUMN ssn
USING COLUMNS (4);
Python SDK
In tegenstelling tot CREATE OR REPLACE POLICY sql ondersteunt update_policy gedeeltelijke updates. Gebruik de update_mask parameter om op te geven welke velden u wilt wijzigen. Alleen deze velden worden bijgewerkt. Als update_mask"*" is of leeg is, worden alle velden in policy_info toegepast.
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.catalog import PolicyInfo
w = WorkspaceClient()
w.policies.update_policy(
on_securable_type="SCHEMA",
on_securable_fullname="prod.customers",
name="mask_ssn",
policy_info=PolicyInfo(
except_principals=["admins", "compliance_team"],
),
update_mask="except_principals",
)
Een beleid verwijderen
Catalogusverkenner
- Klik in uw Azure Databricks werkruimte op
Catalog.
- Selecteer het object waaraan het beleid is gekoppeld.
- Klik op het tabblad Beleid .
- Selecteer het beleid.
- Klik op Beleid verwijderen.
SQL
Gebruik DROP POLICY dit om een beleid te verwijderen.
DROP POLICY policy_name ON { CATALOG | SCHEMA | TABLE } securable_name
Voorbeelden:
DROP POLICY mask_ssn ON SCHEMA prod.customers;
DROP POLICY hide_eu_customers ON SCHEMA prod.customers;
Python SDK
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
w.policies.delete_policy(
on_securable_type="SCHEMA",
on_securable_fullname="prod.customers",
name="mask_ssn",
)
Beleid weergeven
Gebruik SHOW POLICIES om de beleidsregels weer te geven die zijn gedefinieerd op een beveiligbaar object. Gebruik SHOW EFFECTIVE POLICIES om ook beleidsregels van bovenliggende scopes op te nemen, zoals beleidsregels op catalogusniveau die van invloed zijn op een tabel.
SHOW [EFFECTIVE] POLICIES ON { CATALOG | SCHEMA | TABLE } securable_name
Het resultaat bevat de beleidsnaam, het beleidstype en de catalogus, het schema of de tabel waarin elk beleid is gedefinieerd.
Voor het weergeven van effectief beleid voor een tabel zijn geen machtigingen vereist voor de oudercatalogus of het ouderschema. Hierdoor kan een tabelbeheerder de regels zien die van toepassing zijn zonder leestoegang te hebben tot het beleid van de tabellen op hetzelfde niveau.
Voorbeeld:
SHOW EFFECTIVE POLICIES ON SCHEMA prod.customers;
| policy_name | beleidstype | catalogus | schema | reactie |
|---|---|---|---|---|
| verberg_eu_klanten | ROW FILTER | prikkelen | customers | |
| mask_ssn | COLUMN MASKER | prikkelen | customers |
Een beleid beschrijven
Gebruik DESCRIBE POLICY dit om de details van een specifiek beleid weer te geven. Vereist MANAGE voor het beveiligbare doel of objecteigendom.
{ DESC | DESCRIBE } POLICY policy_name ON { CATALOG | SCHEMA | TABLE } securable_name
Het resultaat toont de eigenschappen van het beleid als sleutel-waardeparen, waaronder naam, beveiligbaar type, beveiligbare naam, principals, voorwaarden, functienaam en tijdstempels.
Voorbeeld:
DESCRIBE POLICY hide_eu_customers ON SCHEMA prod.customers;
| info_naam | info_value |
|---|---|
| Naam | hide_eu_customers |
| Bij beveiligbaar type | SCHEMA |
| Beveiligbaar | prod.customers |
| Aan principals | us_analysts |
| Voor beveiligbaar type | TABLE |
| Overeenkomende kolommen | has_tag('geo_region') AS-regio |
| Beleidstype | Rijfilter |
| Functienaam | product.klanten.niet_eu_regio |
| Het gebruik van kolommen | region |
Auditlogboek bijhouden
Azure Databricks registreert gereguleerde tag- en ABAC-beleidsbewerkingen in de systeemauditlogboektabel. Hieronder ziet u voorbeeldquery's. Zie Auditlogboeken voor meer informatie.
-- All tag assignment and deletion events from the audit log
SELECT
event_time,
action_name,
user_identity.email AS actor,
request_params.workspace_id,
request_params.metastore_id,
request_params.tag_assignment,
response.status_code,
source_ip_address
FROM system.access.audit
WHERE service_name = 'unityCatalog'
AND action_name IN (
'createEntityTagAssignment',
'deleteEntityTagAssignment'
)
ORDER BY event_time DESC;
-- All ABAC policy CRUD operations
SELECT
event_time,
action_name,
user_identity.email AS actor,
request_params.name AS policy_name,
request_params.on_securable_type,
request_params.on_securable_fullname,
request_params.policy_info,
response.status_code
FROM system.access.audit
WHERE service_name = 'unityCatalog'
AND action_name IN ('createPolicy', 'deletePolicy', 'getPolicy', 'listPolicies')
ORDER BY event_time DESC;