Поделиться через


Руководство по настройке ABAC

Это важно

Эта функция доступна в бета-версии.

В этом руководстве объясняется, как настроить политики управления доступом на основе атрибутов (ABAC) с использованием фильтров строк и масок столбцов в каталоге Unity Catalog.

В этом примере команда аналитики США не должна иметь доступ к записям клиентов ЕС или SSN, однако они должны иметь доступ к другим клиентам и данным клиентов в той же таблице. В этом руководстве приведено следующее:

  1. Включение политик тегов и бета-версий ABAC
  2. Создание политики тегов
  3. Создание каталога Unity, схемы и таблицы
  4. Применение управляемых тегов к столбцам
  5. Создание UDF для скрытия данных члена ЕС
  6. Создание политики фильтрации строк
  7. Создайте UDF для скрытия номеров SSN
  8. Создание политики маски столбцов
  9. Выбор таблицы с помощью политик

Шаг 1. Включение политик тегов и бета-версий ABAC

  1. Войдите в консоль учетной записи в качестве администратора учетной записи.

  2. На боковой панели щелкните предварительный просмотр.

  3. Установите переключатель для политики тегов на "Вкл".

  4. В качестве администратора рабочей области щелкните имя пользователя в верхней строке рабочей области Azure Databricks.

  5. В меню выберите "Предварительные просмотры".

  6. Установите переключатель управления доступом на основе атрибутов в значение On.

Шаг 2. Создание политики тегов

Чтобы создать политику тегов, необходимо иметь разрешение на создание политики тегов на уровне аккаунта. Администраторы учетных записей и рабочих областей по умолчанию имеют разрешение на создание.

  1. В рабочей области Azure Databricks щелкните значок данных.Каталог.

  2. На странице быстрого доступа нажмите кнопку "Политики тегов > ".

  3. Нажмите кнопку "Создать политику тегов".

  4. Введите ключ тега pii.

  5. Введите описание политики тегов.

  6. Введите допустимые значения для тега: ssn и address. Только эти значения можно назначить этому ключу тега.

    Руководство. Создание политики тегов.

  7. Нажмите кнопку Создать.

Это важно

Данные тегов можно реплицировать глобально. Не используйте имена тегов или значения, которые могут нарушить безопасность ваших ресурсов. Например, не используйте имена тегов, содержащие личную или конфиденциальную информацию.

Шаг 3. Создание таблицы клиентов

Чтобы выполнить эти действия, необходимо иметь CREATE CATALOG разрешение в метахранилище каталога Unity. Вы также можете создать таблицу в схеме, для которой у вас есть CREATE TABLE разрешение.

  1. На боковой панели нажмите +Создать>записную книжку.
  2. Выберите SQL язык записной книжки.
  3. Нажмите кнопку "Подключить" и подключите записную книжку к вычислительному ресурсу.
  4. Добавьте следующие команды в записную книжку и запустите их:
-- 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');

Шаг 4. Добавление управляемых тегов в столбцы PII

  1. Добавьте следующую команду в записную книжку и запустите ее:
-- 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');

Шаг 5. Создание UDF для поиска адресов ЕС

  1. Добавьте следующую команду в записную книжку и запустите ее:
-- 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
);

Этот UDF проверяет, не ссылается ли данная строка на Европу или ЕС. Если найдены какие-либо из этих подстроок, возвращает значение FALSE (то есть адрес ЕС). Если ни одна из подстроок не найдена, возвращает значение TRUE (то есть это не адрес ЕС).

Шаг 6. Создание политики фильтрации строк

  1. Щелкните значок данных.Каталог.

  2. Рядом с каталогом abac щелкните значок меню Kebab кебаб..

  3. Нажмите кнопку "Открыть" в обозревателе каталогов.

  4. Перейдите на вкладку "Политики ".

  5. Щелкните Создать политику.

  6. В разделе Общие сведения введите имя hide_eu_customers и описание для вашей политики.

  7. В субъектах:

    • В приложении "Применено к...", найдите и выберите субъекты, к которым применяется политика. В этом примере можно использовать группу всех пользователей учетной записи.
    • Оставьте Кроме... пустым.

    Политика внесена в ABAC.

  8. В типе и целевом объекте:

    • В типе политики выберите "Фильтр строк".
    • В целевом объекте политики выберите abac каталог для области политики.
    • Оставьте условие уровня таблицы пустым.
  9. В Функции выберите is_not_eu_address функцию, которую вы создали в abac.customers.

  10. Рядом с столбцом "Когда" выберите значение тега.

  11. В "Ключ" выберите pii, а в "Значение" выберите address.

    ABAC применил политику фильтрации строк.

  12. Нажмите кнопку "Создать политику".

Шаг 7. Проверка политики

  1. Вернитесь в записную книжку и выполните следующую команду:
SELECT DISTINCT * FROM abac.customers.profiles

Возвращаются исключительно строки данных, не являющиеся резидентами ЕС.

First_Name Фамилия Номер телефона Адрес Номер социального страхования
Грация Уилсон 890-123-4567 852 Elm St, NV 890-12-3456
Алиса Джонсон 345-678-9012 789 улица Пайн, TX 345-67-8901
Плющ Тейлор 012-345-6789 159 ул. Аспен, AZ 012-34-5678
Откровенный Миллер 789-012-3456 741 Spruce St, WA 789-01-2345
Джейн Иванов 234-567-8901 улица Оук, 456, CA 234-56-7890
Джон Доу 123-456-7890 улица Главная, 123, Нью-Йорк 123-45-6789
Чарли Дэвис 567-890-1234 654 Кедр Ст, IL 567-89-0123
Эмили Белый 678-901-2345 987 Берч Улица, WA 678-90-1234
Хэнк Мур 901-234-5678 963 улица Грецкий орех, CO 901-23-4567
Боб Коричневый 456-789-0123 321 улица Кленовая, Флорида 456-78-9012

Вы можете продолжить создание политики маскирования столбцов.

Шаг 8. Создание UDF для маскирования SSN

  1. Добавьте следующую команду в записную книжку и запустите ее:
-- Masks any SSN input by returning a fully masked value
CREATE FUNCTION mask_SSN(ssn STRING)
RETURN '***-**-****' ;

Этот UDF возвращает полностью маскированную строку SSN ('*-****')

Шаг 9. Создание политики маски столбцов

  1. Щелкните значок данных.Каталог.

  2. Рядом с каталогом abac щелкните значок меню Kebab кебаб..

  3. Нажмите кнопку "Открыть" в обозревателе каталогов.

  4. Перейдите на вкладку "Политики ".

  5. Щелкните Создать политику.

  6. В разделе Общие сведения введите имя mask_ssn и описание для вашей политики.

  7. В субъектах:

    • В приложении "Применено к...", найдите и выберите субъекты, к которым применяется политика. В этом примере можно использовать группу всех пользователей учетной записи.
    • Оставьте Кроме... пустым.

    Политика маски столбцов, заполненная ABAC.

  8. В типе и целевом объекте:

    • В типе политики выберите "Маска столбца".
    • В целевом объекте политики выберите abac каталог для области политики.
    • Оставьте условие уровня таблицы пустым.
  9. В Функции выберите mask_SSN функцию, которую вы создали в abac.customers.

  10. Рядом с столбцом "Когда" выберите значение тега.

  11. В "Ключ" выберите pii, а в "Значение" выберите ssn.

    Политика маски столбцов, заполненная ABAC.

  12. Нажмите кнопку "Создать политику".

Шаг 10. Тестирование политики

  1. Вернитесь в записную книжку и выполните следующую команду:
SELECT * FROM abac.customers.profiles

Теперь номера социального страхования возвращаются как ***-***-***. Возвращаются только жители, не являющиеся гражданами ЕС, поскольку маска фильтрации строк также включена.

First_Name Фамилия Номер телефона Адрес Номер социального страхования
Джейн Иванов 234-567-8901 улица Оук, 456, CA ***-**-****
Алиса Джонсон 345-678-9012 789 улица Пайн, TX ***-**-****
Чарли Дэвис 567-890-1234 654 Кедр Ст, IL ***-**-****
Грация Уилсон 890-123-4567 852 Elm St, NV ***-**-****
Боб Коричневый 456-789-0123 321 улица Кленовая, Флорида ***-**-****
Хэнк Мур 901-234-5678 963 улица Грецкий орех, CO ***-**-****
Плющ Тейлор 012-345-6789 159 ул. Аспен, AZ ***-**-****
Эмили Белый 678-901-2345 987 Берч Улица, WA ***-**-****
Откровенный Миллер 789-012-3456 741 Spruce St, WA ***-**-****
Джон Доу 123-456-7890 улица Главная, 123, Нью-Йорк ***-**-****