Авторизация#

CedrusData Catalog использует комбинацию role-based access control (RBAC) и discretionary access control (DAC) для организации доступа к объектам каталога.

Принципал имеет право совершить операцию над объектом, если он является его владельцем или ему назначена роль с необходимым правами доступа.

Примечание

В настоящее время CedrusData Catalog поддерживает только две предопределенные роли builtin.admin и builtin.iceberg.admin, описанные ниже. В ближайших релизах будет добавлена возможность создания новых ролей с произвольным списком привилегий.

Владельцы объектов#

Все объекты каталога, за исключением принципалов и постоянных токенов доступа, имеют владельцев. Владелец имеет неограниченные права доступа к объекту.

Назначение владельца происходит автоматически при создании объекта. Изначальным владельцем объекта всегда является пользователь, вызвавший команду создания объекта. Владелец объекта может быть изменен путем вызова команды grant-ownership, которая определена для каждого типа объекта.

Примечание

Объект может не иметь владельца, если он был создан в CedrusData Catalog до версии 458-10. Для таких объектов владелец не учитывается для проверки прав доступа. Вы можете использовать команду grant-ownership, чтобы назначить владельца такому объекту.

CedrusData Catalog вернет ошибку при попытке удаления принципала, который является владельцем хотя бы одного объекта.

Роли#

Роли — это специальные учетные записи для управления доступом к объектам каталога. Роли могут быть назначены пользователям или другим ролям командой role grant и отозваны командой role revoke.

Роли наследуют права доступа у других ролей.

Роль может быть назначена владельцем объекта. В таком случае все члены данной роли (включая транзитивные) получают право выполнения любых операций над объектом.

Роли могут быть назначены права доступа. В настоящее время CedrusData Catalog поддерживает только фиксированный набор прав доступа, назначенных двум системным ролям:

  • builtin.admin — суперпользователь, имеет право выполнять любые операции

  • builtin.iceberg.admin — Имеет право взаимодействовать c файловыми системами и выполнять любые действия над объектами Iceberg: catalog, namespace, table, view, object group

Поддержка гранулярных привилегий будет доступна в ближайших версиях продукта.

Процесс авторизации#

Когда пользователь выполняет операцию над объектом, CedrusData Catalog производит следующую последовательность действий:

  1. Формирует список принципалов, чьи права доступа будут использованы для авторизации операции. В данный список попадает текущий пользователь и назначенные ему роли, включая транзитивные.
    Например, если пользователю alice предоставлена роль editor, а роли editor предоставлена роль viewer, то система будет использовать права доступа принципалов [alice, editor, viewer] для авторизации операции

  2. Выбирает набор действий над текущим или родительскими объектами, подлежащих авторизации в рамках данной операции. Например, для создания таблицы Iceberg, пользователь должен иметь доступ к (1) namespace, в котором будет создана таблица; (2) каталогу, в котором находится namespace; (3) файловой системе, с которой работает каталог.

  3. Авторизует каждое действие относительно списка принципалов, полученного на первом шаге. Например, запись метаданных таблицы Iceberg в файловую систему будет авторизована, если один из принципалов [alice, editor, viewer] является владельцем файловой системы.