Udostępnij przez


Samouczek: konfigurowanie usługi ABAC

Ważne

Ta funkcja jest dostępna w publicznej wersji testowej.

W tym samouczku przedstawiono sposób konfigurowania polityk kontroli dostępu opartych na atrybutach (ABAC) w Unity Catalog, obejmujących filtr wiersza oraz maskę kolumn.

W tym przykładzie amerykański zespół analityczny nie powinien mieć dostępu do rekordów klientów z UE ani sieci SSN. Powinny jednak mieć dostęp do innych klientów i danych klientów w tej samej tabeli. Ten samouczek obejmuje następujące kroki:

  1. Tworzenie tagu zarządzanego
  2. Utwórz katalog Unity Catalog, schemat i tabelę.
  3. Nakładanie tagów na kolumny podlegające reglamentacji
  4. Utwórz funkcję zdefiniowaną przez użytkownika do ukrywania danych członków UE
  5. Utwórz zasady filtrowania wierszy
  6. Utwórz funkcję UDF do ukrywania numerów ubezpieczenia społecznego (SSN)
  7. Tworzenie zasad maski kolumn
  8. Wybierz swoją tabelę według zasad

Aby zapoznać się z pokazem konfigurowania usługi ABAC, zobacz Odnajdywanie kontroli dostępu Attribute-Based (ABAC) przy użyciu wykazu aparatu Unity.

Wymagania dotyczące obliczeń

  • Należy użyć obliczeń w środowisku Databricks Runtime 16.4 lub nowszym.
  • Bezserwerowe obliczenia zawsze działają z modelem ABAC.

Środowisko obliczeniowe ze starszymi środowiskami uruchomieniowymi nie może uzyskać dostępu do tabel zabezpieczonych przez usługę ABAC. Jako tymczasowe obejście można skonfigurować funkcję ABAC tak, aby miała zastosowanie tylko do określonej grupy. Dodaj użytkowników, których chcesz ograniczyć do tej grupy. Użytkownicy, którzy nie znajdują się w grupie, nadal mogą uzyskiwać dostęp do tabel.

Krok 1. Tworzenie tagu zarządzanego

Aby utworzyć tag zarządzany, musisz mieć uprawnienia CREATE tagu zarządzanego na poziomie konta. Administratorzy kont i obszarów roboczych domyślnie mają uprawnienia CREATE.

  1. W obszarze roboczym usługi Azure Databricks kliknij ikonę Dane.Wykaz.

  2. Kliknij przycisk Zarządzane tagi > .

  3. Kliknij pozycję Utwórz tag zarządzany.

  4. Wprowadź klucz tagu pii.

  5. Wprowadź opis tagu zarządzanego.

  6. Wprowadź dozwolone wartości tagu: ssn i address. Do tego klucza tagu można przypisać tylko te wartości.

    Samouczek: tworzenie zasad tagów.

  7. Kliknij pozycję Utwórz.

Ostrzeżenie

Dane tagów są przechowywane jako zwykły tekst i mogą być replikowane globalnie. Nie używaj nazw tagów, wartości ani deskryptorów, które mogą naruszyć bezpieczeństwo zasobów. Na przykład nie należy używać nazw tagów, wartości ani deskryptorów zawierających informacje osobiste lub poufne.

Krok 2: Utwórz tabelę klientów

Aby wykonać te kroki, musisz mieć CREATE CATALOG uprawnienie do metastore katalogu Unity. Tabelę możesz również utworzyć w schemacie, do którego masz uprawnienia CREATE TABLE.

  1. Na pasku bocznym kliknij pozycję +Nowy>Notes.
  2. Wybierz SQL jako język notesu.
  3. Kliknij pozycję Połącz i dołącz notes do zasobu obliczeniowego.
  4. Dodaj następujące polecenia do notesu i uruchom je:
-- 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');

Krok 3: Dodaj zarządzane tagi do kolumn PII

  1. Dodaj następujące polecenie do notesu i uruchom je:
-- 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');

Krok 4: Utwórz funkcję zdefiniowaną przez użytkownika, aby znaleźć adresy UE

  1. Dodaj następujące polecenie do notesu i uruchom je:
-- 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
);

Ta funkcja UDF sprawdza, czy ten ciąg znaków nie wydaje się odnosić do Europy ani UE. Jeśli którykolwiek z tych podciągów zostanie znaleziony, funkcja zwraca wartość FALSE, co oznacza, że jest to adres w UE. Jeśli żaden z podciągów znaków nie zostanie znaleziony, zwraca wartość TRUE (co oznacza, że nie jest to adres w Unii Europejskiej).

Krok 5. Tworzenie zasad filtru wierszy

Aby utworzyć politykę na obiekcie, musisz mieć MANAGE na obiekcie lub być jego właścicielem. Aby dodać UDF do polityki, musisz mieć EXECUTE w UDF i musi znajdować się w katalogu Unity.

  1. Kliknij ikonę Dane.Wykaz.

  2. Kliknij katalog abac utworzony wcześniej.

  3. Kliknij kartę Zasady .

  4. Kliknij pozycję Nowe zasady.

  5. Ogólnie:

    • W polu Nazwa wprowadź hide_eu_customers.
    • W polu Opis wprowadź opis zasad.
    • W polu Zastosowano do... wyszukaj i wybierz uczestników, do których mają zastosowanie zasady. W tym przykładzie możesz użyć grupy Wszyscy użytkownicy konta.
    • Pozostaw z wyjątkiem... puste.
    • W Zakresie wybierz katalog abac i Wszystkie schematy.

    Przykładowe ustawienia zasad filtrowania wierszy ABAC dla sekcji Ogólne.

  6. W obszarze Cel wybierz pozycję Ukryj wiersze tabeli.

  7. W warunkach kliknij Wybierz istniejący. Następnie kliknij ikonę Funkcji.Wybierz funkcję.

  8. W menu Wybierz funkcję kliknij katalog abac, schemat customers, a następnie funkcję, którą utworzyłeś wcześniej is_not_eu_address.

  9. Kliknij opcję Wybierz.

    Przykładowe ustawienia zasad filtrowania wierszy ABAC dla sekcji

  10. Opcjonalnie możesz przetestować funkcję maskowania, rozwijając pozycję Funkcja Test i podając dane wejściowe. Na przykład wprowadzenie 78 Berliner Str., Berlin, Germany E.U. i kliknięcie polecenia Uruchom test poprawnie zwraca wartość FALSE (Hide row).

    Przykładowy test funkcji maskowania filtru wierszy ABAC.

  11. W Parametrach funkcji:

    • Wybierz Mapuj kolumnę na parametr, jeśli ma konkretny tag.
    • Wyszukaj pii. Wybierz opcję pii : address.

    Przykładowe ustawienia zasad filtrowania wierszy ABAC w sekcji Parametry funkcji.

  12. Kliknij pozycję Create policy (Utwórz zasady).

Krok 6. Testowanie zasad

  1. Wróć do notesu i uruchom następujące polecenie:
SELECT DISTINCT * FROM abac.customers.profiles

Zwracane są tylko wiersze dotyczące rezydentów spoza UE.

First_Name Nazwisko Numer telefonu Adres numer ubezpieczenia społecznego (SSN)
Wdzięk Wilson 890-123-4567 852 Elm St, NV 890-12-3456
Alicja Johnson 345-678-9012 789 Pine St, TX 345-67-8901
Bluszcz Taylor 012-345-6789 159 Aspen St, AZ 012-34-5678
Szczery Młynarz 789-012-3456 741 ul. Świerkowa, WA 789-01-2345
Jane Borkowski 234-567-8901 456 Oak St, CA 234-56-7890
John Łania 123-456-7890 123 Main St, NY 123-45-6789
Charlie Davis 567-890-1234 654 Cedar St, IL 567-89-0123
Emily Biała 678-901-2345 987 Birch St, WA 678-90-1234
Hank Moore 901-234-5678 963 Walnut ul., CO 901-23-4567
Robert Brązowy 456-789-0123 321 Maple St, FL 456-78-9012

Możesz nadal tworzyć zasady maski kolumn.

Krok 7: Utwórz funkcję zdefiniowaną przez użytkownika w celu maskowania numerów SSN

  1. Dodaj następujące polecenie do notesu i uruchom je:
-- Masks any SSN input by returning a fully masked value
CREATE FUNCTION mask_SSN(ssn STRING)
RETURN '***-**-****' ;

Ta funkcja UDF zwraca w pełni zamaskowany ciąg SSN ('***-**-****'),

Krok 8. Tworzenie zasad maski kolumn

Aby utworzyć politykę na obiekcie, musisz mieć MANAGE na obiekcie lub być jego właścicielem. Aby dodać UDF do polityki, musisz mieć EXECUTE w UDF i musi znajdować się w katalogu Unity.

  1. Kliknij ikonę Dane.Wykaz.

  2. Kliknij katalog abac utworzony wcześniej.

  3. Kliknij kartę Zasady .

  4. Kliknij pozycję Nowe zasady.

  5. Ogólnie:

    • W polu Nazwa wprowadź mask_ssn.
    • W polu Opis wprowadź opis zasad.
    • W polu Zastosowano do... wyszukaj i wybierz uczestników, do których mają zastosowanie zasady. W tym przykładzie możesz użyć grupy Wszyscy użytkownicy konta.
    • Pozostaw z wyjątkiem... puste.
    • W Zakresie wybierz katalog abac i Wszystkie schematy.

    Przykład ustawienia zasad maski kolumn ABAC dla sekcji Ogólne.

  6. W obszarze Cel wybierz pozycję Maskuj dane kolumny.

  7. W warunkach:

    • Wybierz pozycję Maskuj kolumnę, jeśli ma określony tag. Wyszukaj pii i wybierz pii : ssn.
    • Kliknij pozycję Wybierz istniejącą. Następnie kliknij ikonę Funkcji.Wybierz funkcję.
    • W menu Wybierz funkcję kliknij katalog abac, schemat customers, a następnie funkcję, którą utworzyłeś wcześniej mask_ssn.
  8. Kliknij opcję Wybierz.

    Przykład ustawienia zasad maski kolumn ABAC dla sekcji Warunki.

  9. Opcjonalnie możesz przetestować funkcję maskowania, rozwijając pozycję Funkcja Test i podając dane wejściowe. Na przykład wprowadzenie 901-234-5678 i kliknięcie polecenia Uruchom test poprawnie zwraca wartość ***-**-****.

    Przykładowy test funkcji maski kolumny ABAC.

  10. Kliknij pozycję Create policy (Utwórz zasady).

Krok 9. Testowanie zasad

  1. Wróć do notesu i uruchom następujące polecenie:
SELECT * FROM abac.customers.profiles

Numery SSN są teraz zwracane jako ***-***-***. Zwracani są tylko mieszkańcy spoza UE, ponieważ włączona jest również maska filtru wiersza.

First_Name Nazwisko Numer telefonu Adres numer ubezpieczenia społecznego (SSN)
Jane Borkowski 234-567-8901 456 Oak St, CA ***-**-****
Alicja Johnson 345-678-9012 789 Pine St, TX ***-**-****
Charlie Davis 567-890-1234 654 Cedar St, IL ***-**-****
Wdzięk Wilson 890-123-4567 852 Elm St, NV ***-**-****
Robert Brązowy 456-789-0123 321 Maple St, FL ***-**-****
Hank Moore 901-234-5678 963 Walnut ul., CO ***-**-****
Bluszcz Taylor 012-345-6789 159 Aspen St, AZ ***-**-****
Emily Biała 678-901-2345 987 Birch St, WA ***-**-****
Szczery Młynarz 789-012-3456 741 ul. Świerkowa, WA ***-**-****
John Łania 123-456-7890 123 Main St, NY ***-**-****