Yandex Cloud
Поиск
Связаться с намиПопробовать бесплатно
  • Истории успеха
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
  • Marketplace
    • Доступны в регионе
    • Инфраструктура и сеть
    • Платформа данных
    • Искусственный интеллект
    • Безопасность
    • Инструменты DevOps
    • Бессерверные вычисления
    • Управление ресурсами
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Партнёрская программа
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Калькулятор цен
    • Тарифы
    • Акции и free tier
  • Истории успеха
  • Документация
  • Блог
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ТОО «Облачные Сервисы Казахстан»
Yandex Managed Service for Trino
  • Начало работы
    • Все инструкции
      • Управление доступом
      • Получение правил доступа
      • Назначение правил для объектов каталогов
      • Назначение правил для схем
      • Назначение правил для таблиц
      • Назначение правил для функций
      • Назначение правил для процедур
      • Назначение правил для запросов
      • Назначение правил для системных свойств сессии
      • Назначение правил для свойств сессии каталога
      • Удаление правил доступа
  • Справочник Terraform
  • Квоты и лимиты
  • Управление доступом
  • Правила тарификации
  • Метрики Yandex Monitoring
  • Аудитные логи Audit Trails
  • История изменений

В этой статье:

  • Назначить правила при создании кластера
  • Tables-privileges
  • Назначить правила для существующего кластера
  • Пример назначения правил доступа к таблицам
  1. Пошаговые инструкции
  2. Правила доступа к объектам
  3. Назначение правил для таблиц

Назначение правил доступа к таблицам в Managed Service for Trino

Статья создана
Yandex Cloud
Улучшена
mmerihsesh
Обновлена 14 января 2026 г.
  • Назначить правила при создании кластера
  • Tables-privileges
  • Назначить правила для существующего кластера
  • Пример назначения правил доступа к таблицам

Правила доступа к таблицам определяют, какие действия пользователи могут совершать над таблицами в кластере Managed Service for Trino.

Для каждой пары «пользователь–таблица» правила применяются следующим образом:

  • Правила проверяются в порядке их объявления. Применяется первое найденное правило, которое соответствует паре «пользователь–таблица».
  • Если ни одно из заданных правил не соответствует паре «пользователь–таблица», пользователю запрещаются любые действия над таблицей.
  • Если не задано ни одно правило доступа к таблицам, каждый пользователь может выполнять любые действия над любой таблицей.
  • Правила доступа к таблицам применяются совместно с общими правилами доступа к объектам каталогов.

Назначить правила при создании кластераНазначить правила при создании кластера

Правила доступа к таблицам можно назначить одновременно с созданием кластера Managed Service for Trino.

Важно

Указанные в правилах имена таблиц и схем не проверяются на валидность. Ошибка в имени таблицы или схемы приведет к некорректной работе правила.

CLI
Terraform
gRPC API

Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

Чтобы задать правила доступа к таблицам:

  1. Создайте файл access_control.yaml и добавьте в него следующее содержимое:

    tables:
      # Правило 1
      - privileges: [<список_разрешений>]
        table:
          names:
            any: [<список_имен_таблиц>]
          name_regexp: <регулярное_выражение>
        schema:
          names:
            any: [<список_имен_схем>]
          name_regexp: <регулярное_выражение>
        catalog:
          name_regexp: <регулярное_выражение>
        columns:
          # Правило доступа к столбцу 1
          - name: <имя_столбца>
            access: <доступность_столбца>
            mask: <SQL-выражение>
          # Правило доступа к столбцу 2
          - <Параметры_доступа_к_столбцу_2>
          ...
          # Правило доступа к столбцу N
          - <Параметры_доступа_к_столбцу_N>
        filter: <SQL-выражение>           
        groups: [<список_идентификаторов_групп>]
        users: [<список_идентификаторов_пользователей>]
        description: <описание_правила>
      # Правило 2
      - <Параметры_правила_2>
      ...
      # Правило N
      - <Параметры_правила_N>
    

    Где:

    • tables — список правил для таблиц. Все параметры правила являются опциональными: privileges, table, schema, catalog, columns, filter, groups, users и description.

    • privileges — список разрешенных действий над таблицами:

      • SELECT — чтение данных.
      • INSERT — вставка данных.
      • DELETE — удаление данных.
      • UPDATE — обновление данных.
      • OWNERSHIP — создание и удаление таблицы, изменение состава столбцов, добавление к ней комментариев.
      • GRANT_SELECT — создание VIEW c чтением данных из таблицы.

      Если параметр privileges не указан, правило запрещает выполнение любых действий над таблицами.

      Примечание

      Чтобы воспользоваться правом OWNERSHIP на таблицу, требуется уровень доступа ALL к каталогу, в котором находится таблица.

    • table — таблицы, на которые распространяется правило. Если параметр table не указан, правило распространяется на все таблицы.

      • names — список имен таблиц.
      • name_regexp — регулярное выражение. Правило распространяется на таблицы, имена которых соответствуют регулярному выражению.

      Вы можете указать только один из параметров: names или name_regexp.

    • schema — схемы, на которые распространяется правило. Если параметр schema не указан, правило распространяется на все схемы.

      • names — список имен схем.
      • name_regexp — регулярное выражение. Правило распространяется на схемы, имена которых соответствуют регулярному выражению.

      Вы можете указать только один из параметров: names или name_regexp.

    • catalog — каталоги кластера, на которые распространяется правило. Если параметр catalog не указан, правило распространяется на все каталоги кластера.

      • name_regexp — регулярное выражение. Правило распространяется на каталоги, имена которых соответствуют регулярному выражению.
    • columns — список правил, определяющих доступ пользователей к столбцам таблицы. Каждое правило включает в себя обязательные параметры name и access, а также опциональный параметр mask.

      • name — имя столбца.
      • access — доступность столбца:
        • ALL — столбец доступен.
        • NONE — столбец недоступен.
      • mask — SQL-выражение для маскирования столбца. При чтении пользователь получит результат выражения вместо значения в этом столбце. SQL-выражение должно иметь тип, совпадающий с типом маскируемой колонки. Если параметр mask не указан или содержит пустую строку, для этого столбца маскирование не будет использоваться.

      Если для столбца таблицы не указано правило доступа, этот столбец доступен.

    • filter — булево SQL-выражение, определяющее доступ пользователей к строкам таблицы. Пользователь получит доступ к строке, только если выражение вернет TRUE. Вычисление SQL-выражения происходит от имени пользователя, выполняющего запрос. Если параметр filter не указан или содержит пустую строку, пользователям доступны все строки таблицы.

    • groups — список идентификаторов групп, на которые распространяется правило. Если параметр groups не указан, правило распространяется на все группы пользователей.

    • users — список идентификаторов пользователей, на которых распространяется правило. Если параметр users не указан, правило распространяется на всех пользователей.

    • description — описание правила.

  2. Посмотрите описание команды CLI для создания кластера:

    yc managed-trino cluster create --help
    
  3. Выполните команду:

    yc managed-trino cluster create \
      ...
      --access-control-from-file access_control.yaml
    

    Доступные параметры кластера и их описания см. в инструкции.

  1. Создайте конфигурационный файл Terraform с планом инфраструктуры.

  2. Добавьте в конфигурационный файл ресурс yandex_trino_access_control, содержащий список правил tables.

    resource "yandex_trino_cluster" "<имя_кластера>" {
      ...
    }
    
    resource "yandex_trino_catalog" "<имя_каталога_1>" {
      ...
    }
    
    resource "yandex_trino_catalog" "<имя_каталога_2>" {
      ...
    }
    
    ...
    
    resource "yandex_trino_catalog" "<имя_каталога_N>" {
      ...
    }
    
    resource "yandex_trino_access_control" "trino_access_control" {
      ...
      cluster_id  = yandex_trino_cluster.<имя_кластера>.id
      tables = [
        # Правило 1
        {
          privileges    = ["<список_разрешений>"]
          table     = {
            names       = ["<список_имен_таблиц>"]
            name_regexp = "<регулярное_выражение>"
          }
          schema        = {
            names       = ["<список_имен_схем>"]
            name_regexp = "<регулярное_выражение>"
          }
          catalog       = {
            ids         = [
              yandex_trino_catalog.<имя_каталога_1>.id,
              yandex_trino_catalog.<имя_каталога_2>.id,
              ... 
              yandex_trino_catalog.<имя_каталога_N>.id
            ]
            name_regexp = "<регулярное_выражение>"
          }
          columns       = [
            # Правило доступа к столбцу 1
            {
              name      = "<имя_столбца>"
              access    = "<доступность_столбца>"
              mask      = "<SQL-выражение>"
            },
            # Правило доступа к столбцу 2
            {
              ...
            },
            ...
            # Правило доступа к столбцу N
            {
              ...
            }                       
          ]
          filter       = "<SQL-выражение>"
          users         = ["<список_идентификаторов_пользователей>"]
          groups        = ["<список_идентификаторов_групп>"]
          description   = "<описание_правила>"
        },
        # Правило 2
        {
          ... 
        },
        ...
        # Правило N
        {
          ... 
        }
      ]
      ...
    }
    

    Где:

    • tables — список блоков правил для таблиц. Все параметры правила являются опциональными: privileges, table, schema, catalog, columns, filter, groups, users и description.

    • privileges — список разрешенных действий над таблицами:

      • SELECT — чтение данных.
      • INSERT — вставка данных.
      • DELETE — удаление данных.
      • UPDATE — обновление данных.
      • OWNERSHIP — создание и удаление таблицы, изменение состава столбцов, добавление к ней комментариев.
      • GRANT_SELECT — создание VIEW c чтением данных из таблицы.

      Если параметр privileges не указан, правило запрещает выполнение любых действий над таблицами.

      Примечание

      Чтобы воспользоваться правом OWNERSHIP на таблицу, требуется уровень доступа ALL к каталогу, в котором находится таблица.

    • table — таблицы, на которые распространяется правило. Если параметр table не указан, правило распространяется на все таблицы.

      • names — список имен таблиц.
      • name_regexp — регулярное выражение. Правило распространяется на таблицы, имена которых соответствуют регулярному выражению.

      Вы можете указать только один из параметров: names или name_regexp.

    • schema — схемы, на которые распространяется правило. Если параметр schema не указан, правило распространяется на все схемы.

      • names — список имен схем.
      • name_regexp — регулярное выражение. Правило распространяется на схемы, имена которых соответствуют регулярному выражению.

      Вы можете указать только один из параметров: names или name_regexp.

    • catalog — каталоги кластера, на которые распространяется правило. Если блок catalog не указан, правило распространяется на все каталоги кластера.

      • ids — список идентификаторов каталогов. Указанные каталоги должны создаваться в том же манифесте.
      • name_regexp — регулярное выражение. Правило распространяется на каталоги, имена которых соответствуют регулярному выражению.

      Вы можете указать только один из параметров: ids или name_regexp.

    • columns — список блоков правил, определяющих доступ пользователей к столбцам таблицы. Каждое правило включает в себя обязательные параметры name и access, а также опциональный параметр mask.

      • name — имя столбца.
      • access — доступность столбца:
        • ALL — столбец доступен.
        • NONE — столбец недоступен.
      • mask — SQL-выражение для маскирования столбца. При чтении пользователь получит результат выражения вместо значения в этом столбце. SQL-выражение должно иметь тип, совпадающий с типом маскируемой колонки. Если параметр mask не указан или содержит пустую строку, для этого столбца маскирование не будет использоваться.

      Если для столбца таблицы не указано правило доступа, этот столбец доступен.

    • filter — булево SQL-выражение, определяющее доступ пользователей к строкам таблицы. Пользователь получит доступ к строке, только если выражение вернет TRUE. Вычисление SQL-выражения происходит от имени пользователя, выполняющего запрос. Если параметр filter не указан или содержит пустую строку, пользователям доступны все строки таблицы.

    • groups — список идентификаторов групп, на которые распространяется правило. Если параметр groups не указан, правило распространяется на все группы пользователей.

    • users — список идентификаторов пользователей, на которых распространяется правило. Если параметр users не указан, правило распространяется на всех пользователей.

    • description — описание правила.

  3. Проверьте корректность настроек.

    1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.

    2. Выполните команду:

      terraform validate
      

      Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  4. Подтвердите изменение ресурсов.

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

      Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

    2. Если вас устраивают планируемые изменения, внесите их:

      1. Выполните команду:

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

Подробнее см. в документации провайдера Terraform.

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Клонируйте репозиторий cloudapi:

    cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
    

    Далее предполагается, что содержимое репозитория находится в директории ~/cloudapi/.

  3. Создайте файл body.json и добавьте в него следующее содержимое:

    {
      <Параметры_кластера>
      ...
      "trino": {
        "catalogs": [
          {
            "name": "имя_каталога_1",
            ...
          },
          {
            "name": "имя_каталога_2",
            ...
          },
          ...
          {
            "name": "имя_каталога_N",
            ...
          }
        ]
        ...
        "access_control": {
          "tables": [
            {
              "privileges": [
                "<список_разрешений>"
              ],
              "table": {
                "names": {
                  "any": [
                    "<список_имен_таблиц>"
                  ]
                },
                "name_regexp": "<регулярное_выражение>"
              },
              "schema": {
                "names": {
                  "any": [
                    "<список_имен_схем>"
                  ]
                },
                "name_regexp": "<регулярное_выражение>"
              },
              "catalog": {
                "names": {
                  "any": [
                    "<имя_каталога_1>",
                    "<имя_каталога_2>",
                    ...
                    "<имя_каталога_N>"
                  ]
                },
                "name_regexp": "<регулярное_выражение>"
              },
              "columns": [
                {
                  "name": "<имя_столбца>",
                  "access": "<доступность_столбца>",
                  "mask": "<SQL-выражение>"
                },
                {
                  <Правило_доступа_к_столбцу_2>
                },
                ...
                {
                  <Правило_доступа_к_столбцу_N>
                }
              ],
              "filter": "<SQL-выражение>",
              "users": [
                "<список_идентификаторов_пользователей>"
              ],
              "groups": [
                "<список_идентификаторов_групп>"
              ],
              "description": "<описание_правила>"
            },
            {
              <Блок_правила_2>
            },
            ...
            {
              <Блок_правила_N>
            }
          ]
        }
      }
    }
    

    Где:

    • access_control — конфигурация прав доступа в рамках кластера.

    • tables — список блоков правил для таблиц. Все параметры правила являются опциональными: privileges, table, schema, catalog, columns, filter, groups, users и description.

    • privileges — список разрешенных действий над таблицами:

      • SELECT — чтение данных.
      • INSERT — вставка данных.
      • DELETE — удаление данных.
      • UPDATE — обновление данных.
      • OWNERSHIP — создание и удаление таблицы, изменение состава столбцов, добавление к ней комментариев.
      • GRANT_SELECT — создание VIEW c чтением данных из таблицы.

      Tables-privilegesTables-privileges

      Если параметр privileges не указан, правило запрещает выполнение любых действий над таблицами.

      Примечание

      Чтобы воспользоваться правом OWNERSHIP на таблицу, требуется уровень доступа ALL к каталогу, в котором находится таблица.

    • table — таблицы, на которые распространяется правило. Если блок table не указан, правило распространяется на все таблицы.

      • names — список имен таблиц.
      • name_regexp — регулярное выражение. Правило распространяется на таблицы, имена которых соответствуют регулярному выражению.

      Блок table должен содержать либо вложенный блок names, либо параметр name_regexp.

    • schema — схемы, на которые распространяется правило. Если блок schema не указан, правило распространяется на все схемы.

      • names — список имен схем.
      • name_regexp — регулярное выражение. Правило распространяется на схемы, имена которых соответствуют регулярному выражению.

      Блок schema должен содержать либо вложенный блок names, либо параметр name_regexp.

    • catalog — каталоги, на которые распространяется правило. Если блок catalog не указан, правило распространяется на все каталоги кластера.

      • names — список имен каталогов. Каталоги должны создаваться в этом же вызове ClusterService/Create.
      • name_regexp — регулярное выражение. Правило распространяется на каталоги, имена которых соответствуют регулярному выражению.

      Блок catalog должен содержать либо вложенный блок names, либо параметр name_regexp.

    • columns — список блоков правил, определяющих доступ пользователей к столбцам таблицы. Каждое правило включает в себя обязательные параметры name и access, а также опциональный параметр mask.

      • name — имя столбца.
      • access — доступность столбца:
        • ALL — столбец доступен.
        • NONE — столбец недоступен.
      • mask — SQL-выражение для маскирования столбца. При чтении пользователь получит результат выражения вместо значения в этом столбце. SQL-выражение должно иметь тип, совпадающий с типом маскируемой колонки. Если параметр mask не указан или содержит пустую строку, для этого столбца маскирование не будет использоваться.

      Если для столбца таблицы не указано правило доступа, этот столбец доступен.

    • filter — булево SQL-выражение, определяющее доступ пользователей к строкам таблицы. Пользователь получит доступ к строке, только если выражение вернет TRUE. Вычисление SQL-выражения происходит от имени пользователя, выполняющего запрос. Если параметр filter не указан или содержит пустую строку, пользователям доступны все строки таблицы.

    • groups — список идентификаторов групп, на которые распространяется правило. Если параметр groups не указан, правило распространяется на все группы пользователей.

    • users — список идентификаторов пользователей, на которых распространяется правило. Если параметр users не указан, правило распространяется на всех пользователей.

    • description — описание правила.

    Доступные параметры кластера и их описания см. в инструкции.

  4. Воспользуйтесь вызовом ClusterService/Create и выполните запрос, например с помощью gRPCurl:

    grpcurl \
        -format json \
        -import-path ~/cloudapi/ \
        -import-path ~/cloudapi/third_party/googleapis/ \
        -proto ~/cloudapi/yandex/cloud/trino/v1/cluster_service.proto \
        -rpc-header "Authorization: Bearer $IAM_TOKEN" \
        -d @ \
        trino.api.cloud.yandex.net:443 \
        yandex.cloud.trino.v1.ClusterService.Create \
        < body.json
    
  5. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

Назначить правила для существующего кластераНазначить правила для существующего кластера

Правила доступа к таблицам можно назначить или обновить в уже существующем кластере Managed Service for Trino.

Важно

Указанные в правилах имена таблиц и схем не проверяются на валидность. Ошибка в имени таблицы или схемы приведет к некорректной работе правила.

CLI
Terraform
gRPC API

Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

Чтобы задать правила доступа к таблицам:

  1. Если правила доступа еще не заданы, создайте файл access_control.yaml и добавьте в него следующее содержимое:

    tables:
      # Правило 1
      - privileges: [<список_разрешений>]
        table:
          names:
            any: [<список_имен_таблиц>]
          name_regexp: <регулярное_выражение>
        schema:
          names:
            any: [<список_имен_схем>]
          name_regexp: <регулярное_выражение>
        catalog:
          ids:
            any: [<список_идентификаторов_каталогов>]
          names:
            any: [<список_имен_каталогов>]
          name_regexp: <регулярное_выражение>
        columns:
          # Правило доступа к столбцу 1
          - name: <имя_столбца>
            access: <доступность_столбца>
            mask: <SQL-выражение>
          # Правило доступа к столбцу 2
          - <Параметры_доступа_к_столбцу_2>
          ...
          # Правило доступа к столбцу N
          - <Параметры_доступа_к_столбцу_N>
        filter: <SQL-выражение>           
        groups: [<список_идентификаторов_групп>]
        users: [<список_идентификаторов_пользователей>]
        description: <описание_правила>
      # Правило 2
      - <Параметры_правила_2>
      ...
      # Правило N
      - <Параметры_правила_N>
    

    Где:

    • tables — список правил для таблиц. Все параметры правила являются опциональными: privileges, table, schema, catalog, columns, filter, groups, users и description.

    • privileges — список разрешенных действий над таблицами:

      • SELECT — чтение данных.
      • INSERT — вставка данных.
      • DELETE — удаление данных.
      • UPDATE — обновление данных.
      • OWNERSHIP — создание и удаление таблицы, изменение состава столбцов, добавление к ней комментариев.
      • GRANT_SELECT — создание VIEW c чтением данных из таблицы.

      Если параметр privileges не указан, правило запрещает выполнение любых действий над таблицами.

      Примечание

      Чтобы воспользоваться правом OWNERSHIP на таблицу, требуется уровень доступа ALL к каталогу, в котором находится таблица.

    • table — таблицы, на которые распространяется правило. Если параметр table не указан, правило распространяется на все таблицы.

      • names — список имен таблиц.
      • name_regexp — регулярное выражение. Правило распространяется на таблицы, имена которых соответствуют регулярному выражению.

      Вы можете указать только один из параметров: names или name_regexp.

    • schema — схемы, на которые распространяется правило. Если параметр schema не указан, правило распространяется на все схемы.

      • names — список имен схем.
      • name_regexp — регулярное выражение. Правило распространяется на схемы, имена которых соответствуют регулярному выражению.

      Вы можете указать только один из параметров: names или name_regexp.

    • catalog — каталоги, на которые распространяется правило. Если параметр catalog не указан, правило распространяется на все каталоги кластера.

      • ids — список идентификаторов каталогов. Указанные каталоги должны существовать.
      • names — список имен каталогов. Указанные каталоги должны существовать.
      • name_regexp — регулярное выражение. Правило распространяется на каталоги, имена которых соответствуют регулярному выражению.

      Вы можете указать только один из параметров: ids, names или name_regexp.

    • columns — список правил, определяющих доступ пользователей к столбцам таблицы. Каждое правило включает в себя обязательные параметры name и access, а также опциональный параметр mask.

      • name — имя столбца.
      • access — доступность столбца:
        • ALL — столбец доступен.
        • NONE — столбец недоступен.
      • mask — SQL-выражение для маскирования столбца. При чтении пользователь получит результат выражения вместо значения в этом столбце. SQL-выражение должно иметь тип, совпадающий с типом маскируемой колонки. Если параметр mask не указан или содержит пустую строку, для этого столбца маскирование не будет использоваться.

      Если для столбца таблицы не указано правило доступа, этот столбец доступен.

    • filter — булево SQL-выражение, определяющее доступ пользователей к строкам таблицы. Пользователь получит доступ к строке, только если выражение вернет TRUE. Вычисление SQL-выражения происходит от имени пользователя, выполняющего запрос. Если параметр filter не указан или содержит пустую строку, пользователям доступны все строки таблицы.

    • groups — список идентификаторов групп, на которые распространяется правило. Если параметр groups не указан, правило распространяется на все группы пользователей.

    • users — список идентификаторов пользователей, на которых распространяется правило. Если параметр users не указан, правило распространяется на всех пользователей.

    • description — описание правила.

  2. Если правила доступа уже заданы, откройте файл access_control.yaml и внесите в него изменения. Вы можете:

    • добавить новые правила;
    • изменить параметры существующих правил;
    • удалить ненужные правила.
  3. Выполните команду:

    yc managed-trino cluster set-access-control <имя_или_идентификатор_кластера> \
      --from-file access_control.yaml
    

    Идентификатор и имя кластера можно запросить со списком кластеров в каталоге.

  1. Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.

    О том, как создать такой файл, см. в разделе Создание кластера.

  2. Если правила доступа еще не заданы, добавьте ресурс yandex_trino_access_control, содержащий список правил tables.

    resource "yandex_trino_cluster" "<имя_кластера>" {
      ...
    }
    
    resource "yandex_trino_catalog" "<имя_каталога_1>" {
      ...
    }
    
    resource "yandex_trino_catalog" "<имя_каталога_2>" {
      ...
    }
    
    ...
    
    resource "yandex_trino_catalog" "<имя_каталога_N>" {
      ...
    }
    
    resource "yandex_trino_access_control" "trino_access_control" {
      ...
      cluster_id  = yandex_trino_cluster.<имя_кластера>.id
      tables = [
        # Правило 1
        {
          privileges    = ["<список_разрешений>"]
          table     = {
            names       = ["<список_имен_таблиц>"]
            name_regexp = "<регулярное_выражение>"
          }
          schema        = {
            names       = ["<список_имен_схем>"]
            name_regexp = "<регулярное_выражение>"
          }
          catalog       = {
            ids         = [
              yandex_trino_catalog.<имя_каталога_1>.id,
              yandex_trino_catalog.<имя_каталога_2>.id,
              ... 
              yandex_trino_catalog.<имя_каталога_N>.id
            ]
            name_regexp = "<регулярное_выражение>"
          }
          columns       = [
            # Правило доступа к столбцу 1
            {
              name      = "<имя_столбца>"
              access    = "<доступность_столбца>"
              mask      = "<SQL-выражение>"
            },
            # Правило доступа к столбцу 2
            {
              ...
            },
            ...
            # Правило доступа к столбцу N
            {
              ...
            }                       
          ]
          filter       = "<SQL-выражение>"
          users         = ["<список_идентификаторов_пользователей>"]
          groups        = ["<список_идентификаторов_групп>"]
          description   = "<описание_правила>"
        },
        # Правило 2
        {
          ... 
        },
        ...
        # Правило N
        {
          ... 
        }
      ]
      ...
    }
    

    Где:

    • tables — список блоков правил для таблиц. Все параметры правила являются опциональными: privileges, table, schema, catalog, columns, filter, groups, users и description.

    • privileges — список разрешенных действий над таблицами:

      • SELECT — чтение данных.
      • INSERT — вставка данных.
      • DELETE — удаление данных.
      • UPDATE — обновление данных.
      • OWNERSHIP — создание и удаление таблицы, изменение состава столбцов, добавление к ней комментариев.
      • GRANT_SELECT — создание VIEW c чтением данных из таблицы.

      Если параметр privileges не указан, правило запрещает выполнение любых действий над таблицами.

      Примечание

      Чтобы воспользоваться правом OWNERSHIP на таблицу, требуется уровень доступа ALL к каталогу, в котором находится таблица.

    • table — таблицы, на которые распространяется правило. Если параметр table не указан, правило распространяется на все таблицы.

      • names — список имен таблиц.
      • name_regexp — регулярное выражение. Правило распространяется на таблицы, имена которых соответствуют регулярному выражению.

      Вы можете указать только один из параметров: names или name_regexp.

    • schema — схемы, на которые распространяется правило. Если параметр schema не указан, правило распространяется на все схемы.

      • names — список имен схем.
      • name_regexp — регулярное выражение. Правило распространяется на схемы, имена которых соответствуют регулярному выражению.

      Вы можете указать только один из параметров: names или name_regexp.

    • catalog — каталоги кластера, на которые распространяется правило. Если блок catalog не указан, правило распространяется на все каталоги кластера.

      • ids — список идентификаторов каталогов. Указанные каталоги должны существовать или создаваться в том же манифесте.
      • name_regexp — регулярное выражение. Правило распространяется на каталоги, имена которых соответствуют регулярному выражению.

      Вы можете указать только один из параметров: ids или name_regexp.

    • columns — список блоков правил, определяющих доступ пользователей к столбцам таблицы. Каждое правило включает в себя обязательные параметры name и access, а также опциональный параметр mask.

      • name — имя столбца.
      • access — доступность столбца:
        • ALL — столбец доступен.
        • NONE — столбец недоступен.
      • mask — SQL-выражение для маскирования столбца. При чтении пользователь получит результат выражения вместо значения в этом столбце. SQL-выражение должно иметь тип, совпадающий с типом маскируемой колонки. Если параметр mask не указан или содержит пустую строку, для этого столбца маскирование не будет использоваться.

      Если для столбца таблицы не указано правило доступа, этот столбец доступен.

    • filter — булево SQL-выражение, определяющее доступ пользователей к строкам таблицы. Пользователь получит доступ к строке, только если выражение вернет TRUE. Вычисление SQL-выражения происходит от имени пользователя, выполняющего запрос. Если параметр filter не указан или содержит пустую строку, пользователям доступны все строки таблицы.

    • groups — список идентификаторов групп, на которые распространяется правило. Если параметр groups не указан, правило распространяется на все группы пользователей.

    • users — список идентификаторов пользователей, на которых распространяется правило. Если параметр users не указан, правило распространяется на всех пользователей.

    • description — описание правила.

  3. Если правила доступа уже заданы, внесите правки в описание ресурса yandex_trino_access_control. Вы можете:

    • добавить новые правила;
    • изменить параметры существующих правил;
    • удалить ненужные правила.
  4. Проверьте корректность настроек.

    1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.

    2. Выполните команду:

      terraform validate
      

      Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  5. Подтвердите изменение ресурсов.

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

      Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

    2. Если вас устраивают планируемые изменения, внесите их:

      1. Выполните команду:

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

Подробнее см. в документации провайдера Terraform.

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Клонируйте репозиторий cloudapi:

    cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
    

    Далее предполагается, что содержимое репозитория находится в директории ~/cloudapi/.

  3. Если правила доступа еще не заданы, создайте файл body.json и добавьте в него следующее содержимое:

    {
      "cluster_id": "<идентификатор_кластера>",
      "update_mask": {
        "paths": [
          "trino.access_control.tables"
        ]
      },
      "trino": {
        "access_control": {
          "tables": [
            {
              "privileges": [
                "<список_разрешений>"
              ],
              "table": {
                "names": {
                  "any": [
                    "<список_имен_таблиц>"
                  ]
                },
                "name_regexp": "<регулярное_выражение>"
              },
              "schema": {
                "names": {
                  "any": [
                    "<список_имен_схем>"
                  ]
                },
                "name_regexp": "<регулярное_выражение>"
              },
              "catalog": {
                "names": {
                  "any": [
                    "<имя_каталога_1>",
                    "<имя_каталога_2>",
                    ...
                    "<имя_каталога_N>"
                  ]
                },
                "name_regexp": "<регулярное_выражение>"
              },
              "columns": [
                {
                  "name": "<имя_столбца>",
                  "access": "<доступность_столбца>",
                  "mask": "<SQL-выражение>"
                },
                {
                  <Правило_доступа_к_столбцу_2>
                },
                ...
                {
                  <Правило_доступа_к_столбцу_N>
                }
              ],
              "filter": "<SQL-выражение>",
              "users": [
                "<список_идентификаторов_пользователей>"
              ],
              "groups": [
                "<список_идентификаторов_групп>"
              ],
              "description": "<описание_правила>"
            },
            {
              <Блок_правила_2>
            },
            ...
            {
              <Блок_правила_N>
            }
          ]
        }
      }
    }
    

    Где:

    • cluster_id — идентификатор кластера.

      Идентификатор кластера можно получить со списком кластеров в каталоге.

    • update_mask — перечень изменяемых параметров в виде массива строк paths[].

      Формат перечисления настроек
      "update_mask": {
        "paths": [
          "<настройка_1>",
          "<настройка_2>",
          ...
          "<настройка_N>"
        ]
      }
      

      Важно

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

    • access_control — конфигурация прав доступа в рамках кластера.

    • tables — список блоков правил для таблиц. Все параметры правила являются опциональными: privileges, table, schema, catalog, columns, filter, groups, users и description.

    • privileges — список разрешенных действий над таблицами:

      • SELECT — чтение данных.
      • INSERT — вставка данных.
      • DELETE — удаление данных.
      • UPDATE — обновление данных.
      • OWNERSHIP — создание и удаление таблицы, изменение состава столбцов, добавление к ней комментариев.
      • GRANT_SELECT — создание VIEW c чтением данных из таблицы.

      Если параметр privileges не указан, правило запрещает выполнение любых действий над таблицами.

      Примечание

      Чтобы воспользоваться правом OWNERSHIP на таблицу, требуется уровень доступа ALL к каталогу, в котором находится таблица.

    • table — таблицы, на которые распространяется правило. Если блок table не указан, правило распространяется на все таблицы.

      • names — список имен таблиц.
      • name_regexp — регулярное выражение. Правило распространяется на таблицы, имена которых соответствуют регулярному выражению.

      Блок table должен содержать либо вложенный блок names, либо параметр name_regexp.

    • schema — схемы, на которые распространяется правило. Если блок schema не указан, правило распространяется на все схемы.

      • names — список имен схем.
      • name_regexp — регулярное выражение. Правило распространяется на схемы, имена которых соответствуют регулярному выражению.

      Блок schema должен содержать либо вложенный блок names, либо параметр name_regexp.

    • catalog — каталоги, на которые распространяется правило. Если блок catalog не указан, правило распространяется на все каталоги кластера.

      • ids — список идентификаторов каталогов. Указанные каталоги должны существовать.
      • names — список имен каталогов. Указанные каталоги должны существовать.
      • name_regexp — регулярное выражение. Правило распространяется на каталоги, имена которых соответствуют регулярному выражению.

      Блок catalog должен содержать либо один из вложенных блоков ids или names, либо параметр name_regexp.

    • columns — список блоков правил, определяющих доступ пользователей к столбцам таблицы. Каждое правило включает в себя обязательные параметры name и access, а также опциональный параметр mask.

      • name — имя столбца.
      • access — доступность столбца:
        • ALL — столбец доступен.
        • NONE — столбец недоступен.
      • mask — SQL-выражение для маскирования столбца. При чтении пользователь получит результат выражения вместо значения в этом столбце. SQL-выражение должно иметь тип, совпадающий с типом маскируемой колонки. Если параметр mask не указан или содержит пустую строку, для этого столбца маскирование не будет использоваться.

      Если для столбца таблицы не указано правило доступа, этот столбец доступен.

    • filter — булево SQL-выражение, определяющее доступ пользователей к строкам таблицы. Пользователь получит доступ к строке, только если выражение вернет TRUE. Вычисление SQL-выражения происходит от имени пользователя, выполняющего запрос. Если параметр filter не указан или содержит пустую строку, пользователям доступны все строки таблицы.

    • groups — список идентификаторов групп, на которые распространяется правило. Если параметр groups не указан, правило распространяется на все группы пользователей.

    • users — список идентификаторов пользователей, на которых распространяется правило. Если параметр users не указан, правило распространяется на всех пользователей.

    • description — описание правила.

  4. Если правила уже заданы, откройте существующий файл body.json с правилами и внесите в него правки. Вы можете:

    • добавить новые правила;
    • изменить параметры существующих правил;
    • удалить ненужные правила.
  5. Воспользуйтесь вызовом ClusterService.Update и выполните запрос, например с помощью gRPCurl:

    grpcurl \
      -format json \
      -import-path ~/cloudapi/ \
      -import-path ~/cloudapi/third_party/googleapis/ \
      -proto ~/cloudapi/yandex/cloud/trino/v1/cluster_service.proto \
      -rpc-header "Authorization: Bearer $IAM_TOKEN" \
      -d @ \
      trino.api.cloud.yandex.net:443 \
      yandex.cloud.trino.v1.ClusterService.Update \
      < body.json
    
  6. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

Пример назначения правил доступа к таблицамПример назначения правил доступа к таблицам

Допустим, вам нужно настроить правила доступа к таблицам в кластере Trino:

  1. Запретить любые действия над таблицами пользователю с идентификатором banned_user_id.
  2. Разрешить пользователям из группы с идентификатором admins_group_id выполнять любые действия над таблицами.
  3. Разрешить всем пользователям чтение данных из таблиц с именами sales и orders, причем:
    • Строка таблицы будет доступна, только если значение в столбце manager_id равно идентификатору текущего пользователя.
    • Значение в столбце client_phone, кроме четырех последних цифр, будет замаскировано символами ***.
  4. Запретить любые действия над таблицами всем остальным пользователям.
CLI
Terraform
gRPC API

Файл access_control.yaml для такого набора правил выглядит так:

tables:
  - users:
      - banned_user_id

  - groups:
      - admins_group_id
    privileges:
      - SELECT
      - INSERT
      - DELETE
      - UPDATE
      - OWNERSHIP
      - GRANT_SELECT

  - table:
      names:
        any:
          - sales
          - orders
    columns:
      - name: client_phone
        access: ALL
        mask: "'***' || substring(client_phone, -4)"
    filter: "manager_id = current_user"
    privileges:
      - SELECT

Конфигурационный файл для такого набора правил выглядит так:

resource "yandex_trino_access_control" "trino_access_control" {
  ...
  cluster_id  = <идентификатор_кластера>
  tables = [
    {
      users         = ["banned_user_id"]
    },
    {
      groups        = ["admins_group_id"]
      privileges    = ["SELECT", "INSERT", "DELETE", "UPDATE", "OWNERSHIP", "GRANT_SELECT"]
    },
    {
      table         = {
        names       = ["sales", "orders"]
      }
      columns       = [
        {
          name      = "client_phone"
          access    = "ALL"
          mask      = "'***' || substring(client_phone, -4)"
        }
      ]
      filter        = "manager_id = current_user"
      privileges    = ["SELECT"]
    }
  ]
  ...
}

Файл body.json для такого набора правил выглядит так:

{
  "cluster_id": "<идентификатор_кластера>",
  "update_mask": {
    "paths": [
      "trino.access_control.tables"
    ]
  },
  "trino": {
    "access_control": {
      "tables": [
        {
          "users": [
            "banned_user_id"
          ]
        },
        {
          "groups": [
            "admins_group_id"
          ],
          "privileges": [
            "SELECT",
            "INSERT",
            "DELETE",
            "UPDATE",
            "OWNERSHIP",
            "GRANT_SELECT"
          ]
        },
        {
          "table": {
            "names": {
              "any": [
                "orders",
                "sales"
              ]
            }
          },
          "columns": [
            {
              "name": "client_phone",
              "access": "ALL",
              "mask": "'***' || substring(client_phone, -4)"
            }
          ],            
          "filter": "manager_id = current_user",
          "privileges": [
            "SELECT"
          ]
        }
      ]
    }
  }
}

Была ли статья полезна?

Предыдущая
Назначение правил для схем
Следующая
Назначение правил для функций
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ТОО «Облачные Сервисы Казахстан»