Freigeben über


Lernprogramm: Konfigurieren von ABAC

Von Bedeutung

Dieses Feature befindet sich in der Public Preview.

In diesem Lernprogramm wird das Konfigurieren von Richtlinien für Zeilenfilter und Spaltenmasken-attributbasierte Zugriffssteuerung (ABAC) im Unity-Katalog vorgestellt.

In diesem Beispiel sollte ein US-Analyseteam nicht auf EU-Kundendatensätze oder SSNs zugreifen können. Sie sollten jedoch in der Lage sein, auf andere Kunden und Kundendaten in derselben Tabelle zuzugreifen. Dieses Lernprogramm enthält die folgenden Schritte:

  1. Erstellen eines geregelten Tags
  2. Erstellen eines Unity-Katalogkatalogs, eines Schemas und einer Tabelle
  3. Anwenden geregelter Tags auf Spalten
  4. Erstellen einer UDF zum Ausblenden der Daten eines EU-Mitglieds
  5. Erstellen einer Zeilenfilterrichtlinie
  6. Erstellen einer UDF zum Verbergen von Sozialversicherungsnummern
  7. Erstellen einer Spaltenmaskenrichtlinie
  8. Wählen Sie Ihre Tabelle anhand der Richtlinien aus.

Eine Demo zum Konfigurieren von ABAC finden Sie unter Discover Attribute-Based Access Control (ABAC) mit Unity Catalog.

Computeanforderungen

  • Sie müssen compute on Databricks Runtime 16.4 oder höher verwenden.
  • Serverless Compute funktioniert immer mit ABAC.

Die Berechnung älterer Runtimes kann nicht auf tabellen zugreifen, die durch ABAC gesichert sind. Als temporäre Problemumgehung können Sie ABAC so konfigurieren, dass sie nur auf eine bestimmte Gruppe angewendet wird. Fügen Sie die Benutzer hinzu, die Sie auf diese Gruppe beschränken möchten. Benutzer, die sich nicht in der Gruppe befinden, können weiterhin auf die Tabellen zugreifen.

Schritt 1: Erstellen eines geregelten Tags

Um ein geregeltes Tag zu erstellen, müssen Sie über die Create-Berechtigung für das geregelte Tag auf Kontoebene verfügen. Konto- und Arbeitsbereichsadministratoren verfügen standardmäßig über CREATE.

  1. Klicken Sie im Azure Databricks-Arbeitsbereich auf das Datensymbol.Katalog.

  2. Klicken Sie auf die Schaltfläche Verwaltete Tags>.

  3. Klicken Sie auf " Gesteuertes Tag erstellen".

  4. Geben Sie den Tag-Schlüssel pii ein.

  5. Geben Sie eine Beschreibung für das geregelte Tag ein.

  6. Geben Sie die zulässigen Werte für das Tag ein: ssn und address. Nur diese Werte können diesem Tagschlüssel zugewiesen werden.

    Anleitung: Erstellen einer Tag-Policy.

  7. Klicken Sie auf "Erstellen".

Warnung

Tagdaten werden als Nur-Text gespeichert und können global repliziert werden. Verwenden Sie keine Tagnamen, Werte oder Deskriptoren, die die Sicherheit Ihrer Ressourcen gefährden könnten. Verwenden Sie beispielsweise keine Tagnamen, Werte oder Deskriptoren, die persönliche oder vertrauliche Informationen enthalten.

Schritt 2: Erstellen der Kundentabelle

Um diese Schritte auszuführen, müssen Sie über die CREATE CATALOG Berechtigung für Ihren Unity-Katalog-Metastore verfügen. Sie können die Tabelle auch in einem Schema erstellen, für das Sie über die CREATE TABLE Berechtigung verfügen.

  1. Klicken Sie auf der Seitenleiste auf +Neu>Notebook.
  2. Wählen Sie SQL als Notebooksprache aus.
  3. Klicken Sie auf Verbinden, und fügen Sie das Notizbuch an eine Computeressource an.
  4. Fügen Sie dem Notizbuch die folgenden Befehle hinzu, und führen Sie sie aus:
-- Create catalog (if not already exists)
CREATE CATALOG IF NOT EXISTS abac;
USE CATALOG abac;

-- Create schema
CREATE SCHEMA IF NOT EXISTS customers;
USE SCHEMA customers;

-- Create table
CREATE TABLE IF NOT EXISTS profiles (
    First_Name STRING,
    Last_Name STRING,
    Phone_Number STRING,
    Address STRING,
    SSN STRING
)
USING DELTA;

-- Insert data
INSERT INTO profiles (First_Name, Last_Name, Phone_Number, Address, SSN)
VALUES
('John', 'Doe', '123-456-7890', '123 Main St, NY', '123-45-6789'),
('Jane', 'Smith', '234-567-8901', '456 Oak St, CA', '234-56-7890'),
('Alice', 'Johnson', '345-678-9012', '789 Pine St, TX', '345-67-8901'),
('Bob', 'Brown', '456-789-0123', '321 Maple St, FL', '456-78-9012'),
('Charlie', 'Davis', '567-890-1234', '654 Cedar St, IL', '567-89-0123'),
('Emily', 'White', '678-901-2345', '987 Birch St, WA', '678-90-1234'),
('Frank', 'Miller', '789-012-3456', '741 Spruce St, WA', '789-01-2345'),
('Grace', 'Wilson', '890-123-4567', '852 Elm St, NV', '890-12-3456'),
('Hank', 'Moore', '901-234-5678', '963 Walnut St, CO', '901-23-4567'),
('Ivy', 'Taylor', '012-345-6789', '159 Aspen St, AZ', '012-34-5678'),
('Liam', 'Connor', '111-222-3333', '12 Abbey Street, Dublin, Ireland EU', '111-22-3333'),
('Sophie', 'Dubois', '222-333-4444', '45 Rue de Rivoli, Paris, France Europe', '222-33-4444'),
('Hans', 'Müller', '333-444-5555', '78 Berliner Str., Berlin, Germany E.U.', '333-44-5555'),
('Elena', 'Rossi', '444-555-6666', '23 Via Roma, Milan, Italy Europe', '444-55-6666'),
('Johan', 'Andersson', '555-666-7777', '56 Drottninggatan, Stockholm, Sweden EU', '555-66-7777');

Schritt 3: Hinzufügen von geregelten Tags zu den PII-Spalten

  1. Fügen Sie dem Notizbuch den folgenden Befehl hinzu, und führen Sie ihn aus:
-- Add the governed tag to ssn column
ALTER TABLE abac.customers.profiles
ALTER COLUMN SSN
SET TAGS ('pii' = 'ssn');

-- Add governed tag to address column
ALTER TABLE abac.customers.profiles
ALTER COLUMN Address
SET TAGS ('pii' = 'address');

Schritt 4: Erstellen einer UDF zum Suchen von EU-Adressen

  1. Fügen Sie dem Notizbuch den folgenden Befehl hinzu, und führen Sie ihn aus:
-- Determine if an address is not in the EU
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
);

Diese UDF überprüft, ob eine angegebene Zeichenfolge nicht auf Europa oder die EU verweist. Wenn eine dieser Teilzeichenfolgen gefunden wird, wird FALSE zurückgegeben (d. h. es handelt sich um eine EU-Adresse). Wenn keine der Teilzeichenfolgen gefunden wird, wird WAHR zurückgegeben (d. h. es handelt sich nicht um eine EU-Adresse).

Schritt 5: Erstellen einer Zeilenfilterrichtlinie

Um eine Richtlinie für ein Objekt zu erstellen, müssen Sie MANAGE für das Objekt haben oder Eigentümer des Objekts sein. Um einer Richtlinie eine UDF hinzuzufügen, muss EXECUTE der UDF zugewiesen sein und sie muss im Unity-Katalog enthalten sein.

  1. Klicken Sie auf das Symbol Katalog.

  2. Klicken Sie auf den abac Katalog, den Sie zuvor erstellt haben.

  3. Klicken Sie auf die Registerkarte Richtlinien.

  4. Klicken Sie auf Neue Richtlinie.

  5. Im Allgemeinen:

    • Geben Sie unter Namehide_eu_customers ein.
    • Geben Sie für Beschreibung eine Beschreibung für Ihre Richtlinie ein.
    • Für Angewendet auf... suchen Sie nach und wählen Sie die Hauptpersonen aus, auf die diese Richtlinie angewendet wird. In diesem Beispiel können Sie die Gruppe "Alle Kontobenutzer" verwenden.
    • Lassen Sie außer... leer.
    • Wählen Sie für "Bereich" den abac Katalog und "Alle Schemas" aus.

    Beispiel für ABAC-Zeilenfilterrichtlinieneinstellungen für den Abschnitt

  6. Für Zweck wählen Sie "Tabellenzeilen ausblenden" aus.

  7. Klicken Sie unter "Bedingungen" auf "Vorhandenes Auswählen". Klicken Sie dann auf das Funktionssymbol.Wählen Sie die Funktion aus.

  8. Klicken Sie im Menü " Funktion auswählen " auf den abac Katalog, das customers Schema und dann auf die is_not_eu_address Zuvor erstellte Funktion.

  9. Klicke auf Auswählen.

    Beispiel für ABAC-Zeilenfilterrichtlinieneinstellungen für den Abschnitt

  10. Optional können Sie die Maskierungsfunktion testen, indem Sie die Testfunktion erweitern und eine Eingabe bereitstellen. Beispielsweise führt das Eingeben von 78 Berliner Str., Berlin, Germany E.U. und das Klicken auf "Test ausführen" das korrekte Ergebnis zurück FALSE (Hide row).

    Beispiel für den ABAC-Zeilenfilter-Maskierungsfunktionstest.

  11. In Funktionsparametern:

    • Wählen Sie „Spalte dem Parameter zuordnen“, wenn sie ein bestimmtes Tag hat.
    • Suchen Sie nach pii. Wählen Sie pii : address aus.

    Beispiel für ABAC-Zeilenfilterrichtlinieneinstellungen für den Abschnitt

  12. Klicken Sie auf Create policy.

Schritt 6: Testen Ihrer Richtlinie

  1. Kehren Sie zu Ihrem Notizbuch zurück, und führen Sie den folgenden Befehl aus:
SELECT DISTINCT * FROM abac.customers.profiles

Nur die nicht EU-ansässigen Zeilen werden zurückgegeben.

Vorname Nachname Telefonnummer Adresse Sozialversicherungsnummer
Gnade Wilson 890-123-4567 852 Elm St, NV 890-12-3456
Alina Johnson 345-678-9012 789 Pine St, TX 345-67-8901
Efeu Taylor 012-345-6789 159 Aspen St, AZ 012-34-5678
Freimütig Müller 789-012-3456 741 Fichten st, WA 789-01-2345
Jane Schmied 234-567-8901 456 Oak St, CA 234-56-7890
John Hirschkuh 123-456-7890 123 Main St, NY 123-45-6789
Charlie Davis 567-890-1234 654 Cedar St, IL 567-89-0123
Emily Weiß 678-901-2345 987 Birke St, WA 678-90-1234
Strähne Moore 901-234-5678 963 Walnuss St, CO 901-23-4567
Bubikopf Braun 456-789-0123 321 Maple St, FL 456-78-9012

Sie können weiterhin eine Spaltenmaskenrichtlinie erstellen.

Schritt 7: Erstellen einer UDF zum Maskieren von SSNs

  1. Fügen Sie dem Notizbuch den folgenden Befehl hinzu, und führen Sie ihn aus:
-- Masks any SSN input by returning a fully masked value
CREATE FUNCTION mask_SSN(ssn STRING)
RETURN '***-**-****' ;

Diese UDF gibt eine vollständig maskierte SSN-Zeichenfolge ('***-**-**-****') zurück.

Schritt 8: Erstellen einer Spaltenmaskierungsrichtlinie

Um eine Richtlinie für ein Objekt zu erstellen, müssen Sie MANAGE für das Objekt haben oder Eigentümer des Objekts sein. Um einer Richtlinie eine UDF hinzuzufügen, muss EXECUTE der UDF zugewiesen sein und sie muss im Unity-Katalog enthalten sein.

  1. Klicken Sie auf das Symbol Katalog.

  2. Klicken Sie auf den abac Katalog, den Sie zuvor erstellt haben.

  3. Klicken Sie auf die Registerkarte Richtlinien.

  4. Klicken Sie auf Neue Richtlinie.

  5. Im Allgemeinen:

    • Geben Sie unter Namemask_ssn ein.
    • Geben Sie für Beschreibung eine Beschreibung für Ihre Richtlinie ein.
    • Für Angewendet auf... suchen Sie nach und wählen Sie die Hauptpersonen aus, auf die diese Richtlinie angewendet wird. In diesem Beispiel können Sie die Gruppe "Alle Kontobenutzer" verwenden.
    • Lassen Sie außer... leer.
    • Wählen Sie für "Bereich" den abac Katalog und "Alle Schemas" aus.

    Beispiel für ABAC-Spaltenmaskenrichtlinieneinstellungen im Abschnitt

  6. Wählen Sie "Zweck" aus, um Spaltendaten zu maskieren.

  7. Bedingungen:

    • Wählen Sie Spalte maskieren, wenn sie ein bestimmtes Tag enthält. Suchen Sie nach pii, und wählen Sie pii : ssn aus.
    • Klicken Sie auf "Vorhandenes auswählen". Klicken Sie dann auf das Funktionssymbol.Wählen Sie die Funktion aus.
    • Klicken Sie im Menü " Funktion auswählen " auf den abac Katalog, das customers Schema und dann auf die mask_ssn Zuvor erstellte Funktion.
  8. Klicke auf Auswählen.

    Beispiel für ABAC-Spaltenmaskenrichtlinieneinstellungen im Abschnitt

  9. Optional können Sie die Maskierungsfunktion testen, indem Sie die Testfunktion erweitern und eine Eingabe bereitstellen. Beispielsweise führt das Eingeben von 901-234-5678 und das Klicken auf "Test ausführen" das korrekte Ergebnis zurück ***-**-****.

    Beispiel ABAC-Spaltenmaskenfunktionstest.

  10. Klicken Sie auf Create policy.

Schritt 9: Testen Ihrer Richtlinie

  1. Kehren Sie zu Ihrem Notizbuch zurück, und führen Sie den folgenden Befehl aus:
SELECT * FROM abac.customers.profiles

Die SSNs kehren nun als ***-***-***. Nur Nicht-EU-Einwohner werden zurückgegeben, da auch die Zeilenfilter-Maske aktiviert ist.

Vorname Nachname Telefonnummer Adresse Sozialversicherungsnummer
Jane Schmied 234-567-8901 456 Oak St, CA ***-**-****
Alina Johnson 345-678-9012 789 Pine St, TX ***-**-****
Charlie Davis 567-890-1234 654 Cedar St, IL ***-**-****
Gnade Wilson 890-123-4567 852 Elm St, NV ***-**-****
Bubikopf Braun 456-789-0123 321 Maple St, FL ***-**-****
Strähne Moore 901-234-5678 963 Walnuss St, CO ***-**-****
Efeu Taylor 012-345-6789 159 Aspen St, AZ ***-**-****
Emily Weiß 678-901-2345 987 Birke St, WA ***-**-****
Freimütig Müller 789-012-3456 741 Fichten st, WA ***-**-****
John Hirschkuh 123-456-7890 123 Main St, NY ***-**-****