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


Руководство: Предоставление доступа к проекту и базе данных новому пользователю

Это важно

Автомасштабирование Lakebase находится в бета-версии в следующих регионах: eastus2, westeurope, westus.

Автомасштабирование Lakebase — это последняя версия Lakebase с автомасштабированием вычислений, масштабированием до нуля, ветвлением и мгновенным восстановлением. Сравнение функций с Lakebase Provisioned см. в разделе выбора между версиями.

Узнайте, как настроить нового пользователя с доступом к проекту и базе данных Lakebase. В этом руководстве рассматриваются разрешения уровня проекта (для управления ресурсами Lakebase) и разрешения уровня базы данных (для доступа к данным через Postgres).

О двух системах разрешений

Lakebase Postgres использует два уровня разрешений:

  1. Разрешения проекта (ACL): управление действиями уровня платформы, такими как создание ветвей, управление вычислениями и управление параметрами проекта. Они управляются с помощью приложения Lakebase.

  2. Разрешения роли Postgres: управление доступом к данным в самой базе данных. Они управляются с помощью стандартных команд Postgres GRANT .

Эти системы не имеют автоматической синхронизации. Эти разрешения можно предоставить независимо или вместе в зависимости от требований вашей организации:

  • Предоставьте пользователям оба уровня доступа: к платформе и к базе данных.
  • Предоставьте только разрешения на проект пользователям, которые управляют инфраструктурой, но не должны запрашивать данные.
  • Предоставьте пользователям доступ только к базе данных, которым требуется запрашивать данные, но не нужно управлять ресурсами Lakebase (они могут подключаться с помощью таких средств, как psql сведения о подключении).

В этом руководстве показано, как настроить оба уровня доступа:

  • Предоставьте разрешения на проект, чтобы пользователи могли работать с ресурсами платформы Lakebase (в этом руководстве используется CAN MANAGE для полного доступа, и вы также можете предоставить ВОЗМОЖНОСТЬ ИСПОЛЬЗОВАНИЯ для доступа только для просмотра и использования).
  • Создание роли Postgres с соответствующими привилегиями базы данных для подключения к базе данных и запроса к ней

Разрешения по умолчанию

Все пользователи рабочей области наследуют разрешение CAN CREATE по умолчанию, что позволяет просматривать и создавать проекты. Чтобы предоставить дополнительный доступ к ресурсам и базам данных проекта, необходимо явно назначить CAN USE или CAN MANAGE.

Предпосылки

  • Проект Lakebase с базой данных
  • Администратор рабочей области или разрешение CAN MANAGE для проекта
  • Удостоверение пользователя Azure Databricks (адрес электронной почты) в той же рабочей области, где создан проект.

Сценарий. Добавление аналитика данных с доступом на чтение и запись

Давайте рассмотрим добавление аналитика данных с именем Alex Lopez , которому нужны:

  • Возможность создания ветвей, вычислений и баз данных (CAN MANAGE) и управления ими
  • Доступ на чтение и запись к таблицам в схеме public базы данных PostgreSQL
  • Возможность создания новых таблиц для анализа

Шаг 1. Предоставление разрешений на проект

Сначала предоставьте пользователю разрешение CAN MANAGE, чтобы они могли выполнять действия по управлению проектами.

  1. Перейдите к проекту в приложении Lakebase.
  2. Щелкните "Параметры" на левой боковой панели.
  3. Прокрутите страницу до раздела разрешений проекта.
  4. Нажмите кнопку "Предоставить разрешение".
  5. Найдите и выберите пользователя.
  6. Выберите разрешение CAN MANAGE .
  7. Нажмите Grant.

Предоставление разрешения CAN MANAGE

Возможности, которые предоставляет CAN MANAGE:

  • Создание и удаление ветвей
  • Управление вычислениями и настройка параметров проекта
  • Создание баз данных и ролей Postgres и управление ими
  • Полный контроль над операциями проекта

Замечание

CAN MANAGE предоставляет полный контроль над проектом, включая множество других действий. CAN USE позволяет просматривать и использовать ресурсы (список, представление, получение URI подключения и определенные операции ветви) без полного управления. Полный список всех уровней разрешений и конкретных действий, которые они позволяют, см. в ACL проекта Lakebase.

Шаг 2. Создание роли Postgres для пользователя

Теперь создайте роль OAuth, которая позволяет Алексу проходить проверку подлинности с помощью удостоверения Azure Databricks с токенами OAuth. У владельца проекта есть необходимые разрешения для создания ролей.

  1. Откройте редактор SQL Lakebase и подключитесь к проекту.

  2. databricks_auth Создайте расширение (если оно еще не включено):

    CREATE EXTENSION IF NOT EXISTS databricks_auth;
    
  3. databricks_create_role Используйте функцию для создания роли OAuth Postgres для Алекса:

    SELECT databricks_create_role('alex.lopez@databricks.com', 'USER');
    

При этом создается роль OAuth, которая:

  • Имеет то же имя, что и идентификатор Azure Databricks (alex.lopez@databricks.com)
  • Может аутентифицироваться с использованием токенов OAuth
  • Имеет привилегии LOGIN
  • У вас еще нет разрешений на базу данных (мы предоставим эти разрешения далее)

Замечание

О ролях OAuth:

  • Роли OAuth проходят проверку подлинности с помощью маркеров с ограниченным временем (срок действия истекает через 1 час)
  • Пользователи получают маркеры из диалогового окна подключения к приложению Lakebase
  • Лучше всего подходит для интерактивных сеансов и рабочих процессов, интегрированных с рабочей областью
  • Дополнительные сведения см. в разделе "Сведения о проверке подлинности"

Шаг 3. Предоставление разрешений базы данных Postgres

Теперь предоставьте Алексу необходимые им разрешения на базу данных. Мы предоставим им доступ для чтения и записи к схеме public .

-- Grant CONNECT permission on the database
GRANT CONNECT ON DATABASE databricks_postgres TO "alex.lopez@databricks.com";

-- Grant USAGE permission on the public schema (required to access objects in it)
GRANT USAGE ON SCHEMA public TO "alex.lopez@databricks.com";

-- Grant CREATE permission on the public schema (allows creating new tables)
GRANT CREATE ON SCHEMA public TO "alex.lopez@databricks.com";

-- Grant read-write access to all existing tables in public schema
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO "alex.lopez@databricks.com";

-- Grant permissions on future tables (so Alex can access new tables automatically)
ALTER DEFAULT PRIVILEGES IN SCHEMA public
    GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO "alex.lopez@databricks.com";

-- Grant permission to use sequences (needed for SERIAL columns)
GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO "alex.lopez@databricks.com";

-- Grant permissions on future sequences
ALTER DEFAULT PRIVILEGES IN SCHEMA public
    GRANT USAGE, SELECT ON SEQUENCES TO "alex.lopez@databricks.com";

Какие разрешения разрешены:

  • CONNECT: подключение к базе данных
  • USAGE в схеме: доступ к объектам в схеме
  • CREATE в схеме: создать новые таблицы, представления, функции
  • SELECT, INSERT, UPDATE, DELETE в таблицах: чтение и запись данных
  • Права доступа к последовательностям: используйте столбцы с автоинкрементом.

Шаг 4. Проверка подключения

Убедитесь, что Алекс может подключиться к базе данных и получить к ней доступ.

Использование редактора SQL Lakebase:

  1. Алекс открывает приложение Lakebase и переходит к проекту.

  2. Алекс открывает редактор SQL Lakebase.

  3. В редакторе SQL Алекс должен иметь возможность выполнять следующие запросы для проверки разрешений:

    -- Check role memberships
    SELECT rolname FROM pg_roles WHERE rolname = 'alex.lopez@databricks.com';
    
    -- Verify can read data
    SELECT * FROM your_table LIMIT 5;
    
    -- Verify can write data
    INSERT INTO your_table (column1, column2) VALUES ('test', 'value');
    
    -- Verify can create tables
    CREATE TABLE alex_analysis (
        id SERIAL PRIMARY KEY,
        notes TEXT,
        created_at TIMESTAMP DEFAULT NOW()
    );
    

Кроме того, с помощью psql:

Алекс также может подключаться из внешних инструментов, таких как psql:

  1. На панели мониторинга проекта нажмите кнопку "Подключить".
  2. Выберите ветвь, вычисления и базу данных.
  3. В раскрывающемся списке "Роли" выберите alex.lopez@databricks.com.
  4. psql Скопируйте фрагмент подключения.
  5. Нажмите кнопку "Копировать маркер OAuth ", чтобы получить маркер проверки подлинности.
  6. Подключитесь с помощью скопированной psql команды и введите маркер OAuth при появлении запроса на ввод пароля.
  7. Выполните те же запросы проверки, которые показаны выше.

Альтернатива: доступ к базе данных только для чтения

Для пользователей, которые должны запрашивать данные, не изменяя их, предоставьте те же разрешения проекта, но используйте более строгие разрешения базы данных:

Разрешения проекта

Предоставить CAN USE для доступа к проекту с правами только на просмотр и использование (например, URI подключения, список веток). Назначьте CAN MANAGE, чтобы разрешить создание баз данных, ролей и выполнение других операций проекта.

Разрешения базы данных

-- Create OAuth role
SELECT databricks_create_role('analyst@databricks.com', 'USER');

-- Grant CONNECT permission
GRANT CONNECT ON DATABASE databricks_postgres TO "analyst@databricks.com";

-- Grant USAGE on the public schema
GRANT USAGE ON SCHEMA public TO "analyst@databricks.com";

-- Grant SELECT-only access to all existing tables
GRANT SELECT ON ALL TABLES IN SCHEMA public TO "analyst@databricks.com";

-- Grant SELECT-only access to future tables
ALTER DEFAULT PRIVILEGES IN SCHEMA public
    GRANT SELECT ON TABLES TO "analyst@databricks.com";

-- Grant USAGE on sequences (needed to view sequence values)
GRANT USAGE ON ALL SEQUENCES IN SCHEMA public TO "analyst@databricks.com";

Это предоставляет:

  • Доступ на чтение ко всем таблицам
  • Просмотр структуры базы данных
  • Не удается изменить данные (нет INSERT, UPDATE, УДАЛЕН)
  • Не удается создать таблицы или другие объекты

Работа с группами и субъектами-службами

Вы можете выполнить тот же процесс, чтобы предоставить доступ к группам и служебным принципалам Azure Databricks. Предоставьте разрешения проекта через пользовательский интерфейс приложения Lakebase, создайте роли OAuth с помощью databricks_create_role()и предоставьте разрешения базы данных. Дополнительные сведения см. в разделе "Группы " и "Субъекты-службы".

Использование собственных ролей паролей Postgres

В качестве альтернативы ролям OAuth можно создавать собственные парольные роли Postgres для приложений, которые не могут обновлять токены каждый час, долговременных процессов или внешних инструментов, которые не поддерживают OAuth. Инструкции по созданию ролей паролей и управлению ими см. в разделе "Управление ролями Postgres".

Дальнейшие шаги