Назначить права на каталог
Чтобы предоставить доступ к Iceberg REST Catalog, назначьте роль существующему пользователю, группе или сервисному аккаунту. Отдельную учетную запись каталога создавать не требуется.
Если пользователь или группа еще не созданы, воспользуйтесь инструкцией Создать пользователя или Создать группу. Сервисный аккаунт Kubernetes можно создать командой kubectl create serviceaccount <имя_сервисного_аккаунта> -n <пространство_имен>.
Через CLI
-
Создайте файл
stacklandrestcatalogaccessbinding.yamlс конфигурацией ресурсаStacklandRestCatalogAccessBinding. Выберите один вариант манифеста в зависимости от нужной области доступа:КаталогПространство именТаблицаПредставлениеapiVersion: stacklandrestcatalog.stackland.yandex.cloud/v1alpha1 kind: StacklandRestCatalogAccessBinding metadata: name: analytics-reader spec: catalogRef: analytics subject: kind: User name: analytics-user catalog: role: readerapiVersion: stacklandrestcatalog.stackland.yandex.cloud/v1alpha1 kind: StacklandRestCatalogAccessBinding metadata: name: analytics-reader spec: catalogRef: analytics subject: kind: User name: analytics-user namespace: namespacePath: [sales, reports] role: readerapiVersion: stacklandrestcatalog.stackland.yandex.cloud/v1alpha1 kind: StacklandRestCatalogAccessBinding metadata: name: analytics-reader spec: catalogRef: analytics subject: kind: User name: analytics-user table: namespacePath: [sales, reports] name: orders role: readerapiVersion: stacklandrestcatalog.stackland.yandex.cloud/v1alpha1 kind: StacklandRestCatalogAccessBinding metadata: name: analytics-reader spec: catalogRef: analytics subject: kind: User name: analytics-user view: namespacePath: [sales, reports] name: recent_orders role: readerВо всех примерах пользователю
analytics-userназначается рольreaderна выбранный объект каталогаanalytics. Замените имя пользователя и данные объекта на нужные. Пространство имен Iceberg в примерах состоит из двух сегментов:salesиreports.Параметры:
spec.catalogRef— имя ресурсаStacklandRestCatalogв том же пространстве имен, где создается назначение прав.spec.subject.kind— тип получателя роли:User,GroupилиServiceAccount.spec.subject.name— имя пользователя, группы или сервисного аккаунта. ДляUserвместо имени можно указать идентификатор вspec.subject.id.spec.subject.namespace— пространство имен сервисного аккаунта. Обязательно приkind: ServiceAccount.roleв блокеspec.catalog,spec.namespace,spec.tableилиspec.view— роль на выбранный объект:auditor,viewer,reader,writer,editorилиadmin.
Для назначения роли на отдельное пространство имен Iceberg, таблицу или представление вместо
spec.catalogзадайте соответствующую область действия. В одном ресурсе можно указать только одну область и одну роль. -
Примените манифест:
kubectl apply -f stacklandrestcatalogaccessbinding.yaml -n <пространство_имен> -
Проверьте состояние назначения прав:
kubectl get stacklandrestcatalogaccessbinding analytics-reader -n <пространство_имен>Дождитесь состояния
readyв столбцеPhase. Если нужное пространство имен Iceberg, таблица или представление еще не созданы, назначение остается в состоянииpendingResources. Если не удается определить получателя роли, назначение остается в состоянииpending.
Чтобы назначить еще одну роль или предоставить доступ другому получателю, создайте отдельный ресурс StacklandRestCatalogAccessBinding.
Через консоль управления
Через консоль управления можно назначить роль пользователю или группе. Для сервисного аккаунта используйте CLI.
-
Откройте проект и выберите пространство имен каталога.
-
В левом меню выберите REST Catalog → Каталоги.
-
Откройте каталог и перейдите на вкладку Доступ.
-
Нажмите Выдать доступ.
-
Заполните поля:
- Имя — имя назначения прав, уникальное в пространстве имен.
- Субъект — пользователь или группа, которым нужно предоставить доступ.
- Цель — Каталог, Пространство имен, Таблица или Представление.
- Пространство имен каталога — путь к пространству имен Iceberg. Обязателен для всех целей, кроме каталога. Введите непустые сегменты через
/, напримерsales/reports. Точки внутри сегментов не допускаются. - Имя таблицы или Имя представления — имя объекта для соответствующей цели.
- Уровень доступа — роль
auditor,viewer,reader,writer,editorилиadmin.
-
Нажмите Выдать доступ. Новое назначение появится на вкладке Доступ.
Одно назначение предоставляет одну роль на один объект. Для другой роли или другого объекта создайте отдельное назначение.
Изменить назначение прав
В существующем назначении можно изменить роль или область доступа. Чтобы выбрать другой каталог, пользователя или группу, отзовите назначение и создайте новое.
Через CLI
-
Откройте ресурс для редактирования:
kubectl edit stacklandrestcatalogaccessbinding <имя_назначения> -n <пространство_имен> -
Измените роль или блок области доступа. В
specдолжен остаться ровно один блок:catalog,namespace,tableилиview. -
Сохраните изменения и дождитесь состояния
ready.
Через консоль управления
- На вкладке Доступ каталога откройте нужное назначение и нажмите Редактировать.
- Измените Цель, путь к пространству имен Iceberg, имя объекта или Уровень доступа. Поля Имя и Субъект доступны только для чтения.
- Нажмите Сохранить и дождитесь применения изменений.