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 deze zelfstudie leert u hoe u ABAC-beleidsregels voor rijfilters en kolommaskers in Unity Catalog configureert met behulp van SQL. Zie Zelfstudie: ABAC configureren voor de versie op basis van de gebruikersinterface van Catalog Explorer.
In dit voorbeeld heeft een analyseteam geen toegang tot EU-klantrecords en worden SSN's altijd gemaskeerd. Klanten die toestemming hebben gegeven voor het delen van gegevens, hebben hun volledige e-mail weergegeven. Anderen zien alleen een gemaskeerde versie.
Deze zelfstudie bevat de volgende stappen:
- Beheerde tags maken
- Een Unity Catalog-catalogus, -schema en -tabel maken
- Beheerde tags toepassen op kolommen
- Een UDF maken om EU-adressen te detecteren
- Maak een beleid voor rijfilters
- Het rijfilter testen
- Een UDF maken om SSN's te maskeren
- Beleid voor kolommasker maken
- Het kolommasker testen
Nadat u deze stappen hebt voltooid, kunt u de zelfstudie desgewenst uitbreiden met voorwaardelijke e-mailmaskering (stap 10-12).
Prerequisites
- Databricks Runtime 16.4 of hoger of serverloze berekeningen.
- Beheerdersrechten voor accountbeheerders of werkruimtebeheerders (om beheerde tags te maken).
-
MANAGEmachtiging voor de doelcatalogus of het doelschema. -
EXECUTEop de UDFs.
Compute waarop oudere runtimes worden uitgevoerd, heeft geen toegang tot tabellen die zijn beveiligd door ABAC.
Stap 1: beheerde tags maken
Beheerde tags zijn sleutel-waardeparen die zijn gedefinieerd op accountniveau. ABAC-beleid gebruikt deze om te ontdekken welke kolommen moeten worden gefilterd of gemaskeerd. In deze handleiding maakt u twee beheerde tags:
- Een
piitag met drie toegestane waarden:ssn,addressenemail - Een
consentsleuteltag (geen toegestane waarden) om toestemmingskolommen te identificeren
Als u een beheerde tag wilt maken, moet u de machtiging CREATE voor de beheerde tag hebben op accountniveau. Account- en werkruimtebeheerders hebben standaard CREATE.
- Klik in uw Azure Databricks werkruimte op
Catalog.
- Klik op het
Beheren-knop.
- Klik in de vervolgkeuzelijst op Beheerde tags.
- Klik op Gereguleerde tag maken.
- Voer voor de tagsleutel het volgende in
pii. - Voer een beschrijving in voor de beheerde tag.
- Voer voor toegestane waarden het volgende in:
ssn,addressenemail. Alleen deze waarden kunnen worden toegewezen aan deze tagsleutel. - Klik op Maken.
- Herhaal stap 4-8 om een tweede beheerde tag met de sleutel
consentte maken. Laat de toegestane waarden leeg (sleutel-tag alleen).
Waarschuwing
Taggegevens worden opgeslagen als tekst zonder opmaak en kunnen globaal worden gerepliceerd. Gebruik geen tagnamen, waarden of descriptors die de beveiliging van uw resources in gevaar kunnen krijgen. Gebruik bijvoorbeeld geen tagnamen, waarden of descriptors die persoonlijke of gevoelige informatie bevatten.
Stap 2: de tabel Klanten maken
Maak een catalogus, schema en tabel met klantprofielen. De has_consent kolom wordt later gebruikt voor voorwaardelijke e-mailmaskering. Klanten die toestemming hebben gegeven (TRUE) hebben hun volledige e-mail weergegeven.
Voer de volgende opdrachten uit in een notebook die is gekoppeld aan berekening op Databricks Runtime 16.4 of hoger:
-- Create catalog (if not already exists)
CREATE CATALOG IF NOT EXISTS abac_tutorial;
USE CATALOG abac_tutorial;
-- Create schema
CREATE SCHEMA IF NOT EXISTS customers;
USE SCHEMA customers;
CREATE OR REPLACE TABLE profiles (
first_name STRING,
last_name STRING,
email STRING,
phone_number STRING,
home_address STRING,
ssn_number STRING,
has_consent BOOLEAN
);
INSERT INTO profiles (first_name, last_name, email, phone_number, home_address, ssn_number, has_consent)
VALUES
('John', 'Doe', 'john.doe@example.com', '123-456-7890', '123 Main St, NY', '123-45-6789', TRUE),
('Jane', 'Smith', 'jane.smith@example.com', '234-567-8901', '456 Oak St, CA', '234-56-7890', FALSE),
('Alice', 'Johnson', 'alice.j@example.com', '345-678-9012', '789 Pine St, TX', '345-67-8901', TRUE),
('Bob', 'Brown', 'bob.brown@example.com', '456-789-0123', '321 Maple St, FL', '456-78-9012', FALSE),
('Charlie', 'Davis', 'charlie.d@example.com', '567-890-1234', '654 Cedar St, IL', '567-89-0123', TRUE),
('Emily', 'White', 'emily.w@example.com', '678-901-2345', '987 Birch St, WA', '678-90-1234', FALSE),
('Frank', 'Miller', 'frank.m@example.com', '789-012-3456', '741 Spruce St, WA', '789-01-2345', TRUE),
('Grace', 'Wilson', 'grace.w@example.com', '890-123-4567', '852 Elm St, NV', '890-12-3456', TRUE),
('Hank', 'Moore', 'hank.moore@example.com', '901-234-5678', '963 Walnut St, CO', '901-23-4567', FALSE),
('Ivy', 'Taylor', 'ivy.taylor@example.com', '012-345-6789', '159 Aspen St, AZ', '012-34-5678', TRUE),
('Liam', 'Connor', 'liam.c@example.com', '111-222-3333', '12 Abbey Street, Dublin, Ireland EU', '111-22-3333', TRUE),
('Sophie', 'Dubois', 'sophie.d@example.com', '222-333-4444', '45 Rue de Rivoli, Paris, France Europe', '222-33-4444', FALSE),
('Hans', 'Müller', 'hans.m@example.com', '333-444-5555', '78 Berliner Str., Berlin, Germany E.U.', '333-44-5555', TRUE),
('Elena', 'Rossi', 'elena.r@example.com', '444-555-6666', '23 Via Roma, Milan, Italy Europe', '444-55-6666', FALSE),
('Johan', 'Andersson', 'johan.a@example.com', '555-666-7777', '56 Drottninggatan, Stockholm, Sweden EU', '555-66-7777', TRUE);
Stap 3: Beheerde tags toevoegen aan kolommen
Tag de ssn_number, home_addressen email kolommen met de pii beheerde tag. ABAC-beleid stemt kolommen af op tags, niet op basis van naam.
De has_consent kolom wordt gelabeld met de consent beheerde tag. Dit is vereist voor het toestemming-bewust maskeringsbeleid in stap 11, dat has_consent via USING COLUMNS aan de UDF wordt doorgegeven.
ALTER TABLE abac_tutorial.customers.profiles
ALTER COLUMN ssn_number
SET TAGS ('pii' = 'ssn');
ALTER TABLE abac_tutorial.customers.profiles
ALTER COLUMN home_address
SET TAGS ('pii' = 'address');
ALTER TABLE abac_tutorial.customers.profiles
ALTER COLUMN email
SET TAGS ('pii' = 'email');
ALTER TABLE abac_tutorial.customers.profiles
ALTER COLUMN has_consent
SET TAGS ('consent' = '');
Stap 4: Een UDF maken om EU-adressen te detecteren
Deze UDF krijgt de waarde van elke kolom die is gemarkeerd met pii = address en retourneert:
-
FALSEals het adresEU,E.U., ofEuropebevat, wordt de rij verborgen. -
TRUEin dat geval wordt de rij weergegeven.
CREATE OR REPLACE FUNCTION is_not_eu_address(address STRING)
RETURNS BOOLEAN
RETURN (
SELECT CASE
WHEN LOWER(address) LIKE '%eu%'
OR LOWER(address) LIKE '%e.u.%'
OR LOWER(address) LIKE '%europe%'
THEN FALSE
ELSE TRUE
END
);
Opmerking
Dit is een vereenvoudigde controle voor demonstratiedoeleinden. Gebruik in productie een krachtigere methode, zoals een kolom met landcode of een opzoektabel om de regio te bepalen.
Stap 5: Een rijfilterbeleid maken
Om een beveiligingsbeleid te maken, moet u MANAGE over het object of het eigendom van het object hebben. Om een UDF aan een beleid toe te voegen, moet u EXECUTE hebben op de UDF.
CREATE POLICY hide_eu_customers
ON SCHEMA abac_tutorial.customers
ROW FILTER is_not_eu_address
TO `account users`
FOR TABLES
MATCH COLUMNS has_tag_value('pii', 'address') AS addr_col
USING COLUMNS (addr_col);
U kunt ook beleidsregels maken via de gebruikersinterface van Catalog Explorer. Zie ABAC-beleid maken en beheren voor meer informatie.
Stap 6: Het rijfilter testen
Voer de volgende query uit om te verifiëren dat het rijfilterbeleid werkt.
SELECT * FROM abac_tutorial.customers.profiles;
Alleen de 10 rijen met niet-EU-inwoners zijn geretourneerd. De vijf EU-klanten (Liam, Sophie, Hans, Elena en Johan) zijn verborgen.
Stap 7: Een UDF maken om SSN's te maskeren
Deze UDF retourneert een volledig geanonimiseerde tijdelijke aanduiding voor elke SSN-waarde die eraan is doorgegeven.
CREATE OR REPLACE FUNCTION redact_ssn(ssn STRING)
RETURNS STRING
RETURN '***-**-****';
Stap 8: Een beleid voor kolommasker maken
Maak een beleid dat is gericht op alle kolommen die zijn getagd pii = ssn en waarop de redact_ssn functie wordt toegepast.
CREATE POLICY redact_ssn_policy
ON SCHEMA abac_tutorial.customers
COLUMN MASK redact_ssn
TO `account users`
FOR TABLES
MATCH COLUMNS has_tag_value('pii', 'ssn') AS ssn_col
ON COLUMN ssn_col;
Stap 9: Het kolommasker testen
Voer de volgende query uit om te controleren of zowel het rijfilter als het kolommasker actief zijn.
SELECT * FROM abac_tutorial.customers.profiles;
SSN's worden nu geretourneerd als ***-**-****. Alleen niet-EU-inwoners worden geretourneerd omdat het rijfilter ook actief is.
Uitbreiden: Maskeren van voorwaardelijke e-mail
Met de volgende stappen wordt de zelfstudie uitgebreid met toestemmingsbewuste e-mailmaskering. Klanten die zich hebben aangemeld (has_consent = TRUE) hebben hun volledige e-mail weergegeven; anderen zien alleen het eerste teken en domein.
Stap 10: Maak een privacybewuste UDF voor e-mailmaskering
Deze UDF heeft twee argumenten:
-
email: de werkelijke e-mailwaarde uit de overeenkomende kolom -
consent: de waarde van dehas_consentkolom in dezelfde rij
CREATE OR REPLACE FUNCTION mask_email_by_consent(email STRING, consent BOOLEAN)
RETURNS STRING
RETURN CASE
WHEN consent = TRUE THEN email
ELSE CONCAT(LEFT(email, 1), '***@', SUBSTRING_INDEX(email, '@', -1))
END;
Stap 11: Creëer het beleid voor conditionele e-mailmaskering
Dit beleid is gericht op kolommen die zijn getagd pii = email en geeft de has_consent kolom door aan de UDF.
Opmerking
De has_consent kolom is gelabeld met de consent beheerde tag in stap 3. Dit is vereist omdat USING COLUMNS alleen kan worden verwezen naar kolommen die overeenkomen via MATCH COLUMNS.
has_consent Hoewel het niet wordt gemaskeerd, moet het worden gelabeld zodat het beleid de waarde kan doorgeven aan de UDF.
CREATE POLICY mask_email_by_consent_policy
ON SCHEMA abac_tutorial.customers
COLUMN MASK mask_email_by_consent
TO `account users`
FOR TABLES
MATCH COLUMNS has_tag_value('pii', 'email') AS email_col,
has_tag('consent') AS consent_col
ON COLUMN email_col
USING COLUMNS (consent_col);
Stap 12: Voorwaardelijke e-mailmaskering testen
Voer de volgende query uit om te controleren of alle drie de beleidsregels samenwerken.
SELECT * FROM abac_tutorial.customers.profiles;
Klanten met has_consent = TRUE hebben hun volledige e-mail weergegeven. Klanten met has_consent = FALSE zien een gemaskeerde versie. SSN's blijven volledig gemaskeerd en alleen niet-EU-klanten worden geretourneerd.
| voornaam | heeft_toestemming | ssn_number | |
|---|---|---|---|
| John | TRUE | john.doe@example.com | ***-**-**** |
| Jane | ONWAAR | j***@example.com | ***-**-**** |
| Alice | TRUE | alice.j@example.com | ***-**-**** |
| Bob | ONWAAR | b***@example.com | ***-**-**** |
| Charlie | TRUE | charlie.d@example.com | ***-**-**** |
| Emily | ONWAAR | e***@example.com | ***-**-**** |
| Frank | TRUE | frank.m@example.com | ***-**-**** |
| Gratie | TRUE | grace.w@example.com | ***-**-**** |
| Hank | ONWAAR | h***@example.com | ***-**-**** |
| Klimop | TRUE | ivy.taylor@example.com | ***-**-**** |
Overzicht
In deze zelfstudie zijn drie ABAC-patronen gedemonstreerd:
- Rijfiltering: rijen verbergen op basis van kolomwaarden die overeenkomen met beheerde tags
- Kolommaskering: kolommen maskeren die overeenkomen met beheerde tags
-
Voorwaardelijke maskering: een kolom maskeren op basis van de waarde van een andere kolom in dezelfde rij door de contextkolom te taggen en door te geven aan de UDF via
USING COLUMNS
Schoonmaken
Als u alle objecten wilt verwijderen die in deze zelfstudie zijn gemaakt, voert u het volgende uit. Als u de stappen voor het maskeren van voorwaardelijke e-mails hebt overgeslagen, mislukken de DROP POLICY mask_email_by_consent_policy en DROP FUNCTION mask_email_by_consent verklaringen, zoals verwacht.
DROP POLICY hide_eu_customers ON SCHEMA abac_tutorial.customers;
DROP POLICY redact_ssn_policy ON SCHEMA abac_tutorial.customers;
DROP POLICY mask_email_by_consent_policy ON SCHEMA abac_tutorial.customers;
DROP FUNCTION IF EXISTS abac_tutorial.customers.is_not_eu_address;
DROP FUNCTION IF EXISTS abac_tutorial.customers.redact_ssn;
DROP FUNCTION IF EXISTS abac_tutorial.customers.mask_email_by_consent;
DROP TABLE IF EXISTS abac_tutorial.customers.profiles;
DROP SCHEMA IF EXISTS abac_tutorial.customers CASCADE;
Als u de pii en consent beheerde tags wilt verwijderen, gebruikt u de gebruikersinterface van Catalog Explorer.