Безопасность#
Аутентификация#
CedrusData поддерживает аутентификацию через OAuth2 client credentials flow (свойство credential
) и Bearer-токен (свойство token
).
OAuth2 аутентификация#
Аутентификация в каталоге возможна через OAuth2 client credentials flow. Для этого в клиента Iceberg REST Catalog необходимо передать параметр credential
.
Данный параметр представляет собой пару значений client_id:client_secret
. В CedrusData Catalog роль этой пары значений выполняет
постоянный токен доступа, который вы можете получить с помощью команды access-token create.
Используйте аутентификацию через OAuth2 client credentials flow, если у вас есть системный пользователь,
которому необходимо аутентифицировать других пользователей. Например, этот вариант подходит для работы с каталогом из CedrusData или Trino,
в конфигурации которых задан credential
системного пользователя, а операции над каталогом совершают другие пользователи.
Последовательность событий:
Движок отправляет в CedrusData Catalog значение
credential
и имя пользователя, которого необходимо аутентифицировать. Пользователь, который владеет постоянным токеном, называется actor. Пользователь, которого необходимо аутентифицировать, называется subject. Actor и subject могут быть одним и тем же пользователем.Каталог проверяет, что
credential
(то есть постоянный токен доступа) зарегистрирован в системе, и его владелец (actor) активен. Если постоянный токен доступа не найден или его владелец деактивирован, каталог вернет ошибку.Каталог проверяет, что пользователь, для которого запрошена аутентификация (subject) активен. Каталог вернет ошибку, если actor не имеет привилегии на создание временных токенов (
access-token.create-temporary
), или если subject деактивирован.Каталог создает временный токен доступа, и возвращает его движку. Пользователь движка выполняет последующие операции, используя временный токен доступа.
Движок может запросить создание нового временного токена доступа для пользователя, если время жизни временного токен подходит к концу. Для этого движок отправляет в CedrusData Catalog текущий временный токен, а движок возвращает новый временный токен. Продление возможно, только если пользователь (subject) имеет привилегию на создание временных токенов (
access-token.create-temporary
).
Разные движки предлагают различные способы передачи параметра credential
:
CedrusData: параметр каталога Iceberg
iceberg.rest-catalog.oauth2.credential
Trino: параметр каталога Iceberg
iceberg.rest-catalog.oauth2.credential
Apache Spark: параметр сессии
spark.sql.catalog.<имя_каталога>.credential
Apache Flink: параметр каталога
credential
Bearer аутентификация#
Аутентификация в каталоге возможна через Bearer токен. Для этого в клиента Iceberg REST Catalog необходимо передать параметр token
.
В CedrusData роль токена может выполнять постоянный или временный токены доступа,
которые вы можете получить с помощью команд access-token create и access-token create-temporary.
Используйте аутентификацию через Bearer токен, если вам не нужно осуществлять имперсонацию других пользователей. Например, этот вариант аутентификации хорошо подойдет, для пользователей, запускающих задачи Apache Spark.
Разные движки предлагают различные способы передачи параметра token
:
CedrusData: параметр каталога Iceberg
iceberg.rest-catalog.oauth2.token
Trino: параметр каталога Iceberg
iceberg.rest-catalog.oauth2.token
Apache Spark: параметр сессии
spark.sql.catalog.<имя_каталога>.token
Apache Flink: параметр каталога
token
Авторизация#
Каждый объект Iceberg имеет собственный набор привилегий. Для выполнения той или иной операции над объектом пользователь должен иметь соответствующую привилегию, назначенную ему посредством роли.