Назначение правил доступа к функциям в Managed Service for Trino
Правила доступа к функциям определяют, какие действия пользователи могут совершать над пользовательскими функциями в кластере Managed Service for Trino.
Примечание
Нельзя ограничить выполнение функций, размещённых в виртуальной схеме system.builtin (встроенных функций Trino).
Для каждой пары «пользователь–функция» правила применяются следующим образом:
- Правила проверяются в порядке их объявления. Применяется первое найденное правило, которое соответствует паре «пользователь–функция».
- Если ни одно из заданных правил не соответствует паре «пользователь–функция», пользователю запрещаются любые действия над функцией.
- Если не задано ни одно правило доступа к функциям, каждый пользователь может выполнять только встроенные функции.
- Правила доступа к функциям применяются совместно с общими правилами доступа к объектам каталогов.
Назначить правила при создании кластера
Правила доступа к функциям можно назначить одновременно с созданием кластера Managed Service for Trino.
Важно
Указанные в правилах имена функций и схем не проверяются на валидность. Ошибка в имени функции или схемы приведет к некорректной работе правила.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы задать правила доступа к функциям:
-
Создайте файл
access_control.yamlи добавьте в него следующее содержимое:functions: # Правило 1 - privileges: [<список_разрешений>] function: names: any: [<список_имен_функций>] name_regexp: <регулярное_выражение> schema: names: any: [<список_имен_схем>] name_regexp: <регулярное_выражение> catalog: name_regexp: <регулярное_выражение> groups: [<список_идентификаторов_групп>] users: [<список_идентификаторов_пользователей>] description: <описание_правила> # Правило 2 - <Параметры_правила_2> ... # Правило N - <Параметры_правила_N>Где:
-
functions— список правил для функций. Все параметры правила являются опциональными:privileges,function,schema,catalog,groups,usersиdescription. -
privileges— список разрешенных действий над функциями:EXECUTE— вызов функции.GRANT_EXECUTE— вызов функции для созданияVIEW.OWNERSHIP— создание и удаление функции.
Если параметр
privilegesне указан, правило запрещает выполнение любых действий над функциями.Примечание
Чтобы воспользоваться правом
OWNERSHIPна функцию, требуется уровень доступаALLк каталогу, в котором находится функция. -
function— функции, на которые распространяется правило. Если параметрfunctionне указан, правило распространяется на все функции.names— список имен функций.name_regexp— регулярное выражение. Правило распространяется на функции, имена которых соответствуют регулярному выражению.
Вы можете указать только один из параметров:
namesилиname_regexp. -
schema— схемы, на которые распространяется правило. Если параметрschemaне указан, правило распространяется на все схемы.names— список имен схем.name_regexp— регулярное выражение. Правило распространяется на схемы, имена которых соответствуют регулярному выражению.
Укажите только один из параметров:
namesилиname_regexp. -
catalog— каталоги кластера, на которые распространяется правило. Если параметрcatalogне указан, правило распространяется на все каталоги кластера.name_regexp— регулярное выражение. Правило распространяется на каталоги, имена которых соответствуют регулярному выражению.
-
groups— список идентификаторов групп, на которые распространяется правило. Если параметрgroupsне указан, правило распространяется на все группы пользователей. -
users— список идентификаторов пользователей, на которых распространяется правило. Если параметрusersне указан, правило распространяется на всех пользователей. -
description— описание правила.
-
-
Посмотрите описание команды CLI для создания кластера:
yc managed-trino cluster create --help -
Выполните команду:
yc managed-trino cluster create \ ... --access-control-from-file access_control.yamlДоступные параметры кластера и их описания см. в инструкции.
-
Создайте конфигурационный файл Terraform с планом инфраструктуры.
-
Добавьте в конфигурационный файл ресурс
yandex_trino_access_control, содержащий список правилfunctions.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 functions = [ # Правило 1 { privileges = ["<список_разрешений>"] function = { 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 = "<регулярное_выражение>" } users = ["<список_идентификаторов_пользователей>"] groups = ["<список_идентификаторов_групп>"] description = "<описание_правила>" }, # Правило 2 { ... }, ... # Правило N { ... } ] ... }Где:
-
functions— список блоков правил для функций. Все параметры правила являются опциональными:privileges,function,schema,catalog,groups,usersиdescription. -
privileges— список разрешенных действий над функциями:EXECUTE— вызов функции.GRANT_EXECUTE— вызов функции для созданияVIEW.OWNERSHIP— создание и удаление функции.
Если параметр
privilegesне указан, правило запрещает выполнение любых действий над функциями.Примечание
Чтобы воспользоваться правом
OWNERSHIPна функцию, требуется уровень доступаALLк каталогу, в котором находится функция. -
function— функции, на которые распространяется правило. Если блокfunctionне указан, правило распространяется на все функции.names— список имен функций.name_regexp— регулярное выражение. Правило распространяется на функции, имена которых соответствуют регулярному выражению.
Вы можете указать только один из параметров:
namesилиname_regexp. -
schema— схемы, на которые распространяется правило. Если блокschemaне указан, правило распространяется на все схемы.names— список имен схем.name_regexp— регулярное выражение. Правило распространяется на схемы, имена которых соответствуют регулярному выражению.
Вы можете указать только один из параметров:
namesилиname_regexp. -
catalog— каталоги кластера, на которые распространяется правило. Если блокcatalogне указан, правило распространяется на все каталоги кластера.ids— список идентификаторов каталогов. Указанные каталоги должны создаваться в том же манифесте.name_regexp— регулярное выражение. Правило распространяется на каталоги, имена которых соответствуют регулярному выражению.
Вы можете указать только один из параметров:
idsилиname_regexp.
-
groups— список идентификаторов групп, на которые распространяется правило. Если параметрgroupsне указан, правило распространяется на все группы пользователей. -
users— список идентификаторов пользователей, на которых распространяется правило. Если параметрusersне указан, правило распространяется на всех пользователей. -
description— описание правила.
-
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Создайте файл
body.jsonи добавьте в него следующее содержимое:{ <Параметры_кластера> ... "trino": { "catalogs": [ { "name": "имя_каталога_1", ... }, { "name": "имя_каталога_2", ... }, ... { "name": "имя_каталога_N", ... } ] ... "access_control": { "functions": [ { "privileges": [ "<список_разрешений>" ], "function": { "names": { "any": [ "<список_имен_функций>" ] }, "name_regexp": "<регулярное_выражение>" }, "schema": { "names": { "any": [ "<список_имен_схем>" ] }, "name_regexp": "<регулярное_выражение>" }, "catalog": { "names": { "any": [ "<имя_каталога_1>", "<имя_каталога_2>", ... "<имя_каталога_N>" ] }, "name_regexp": "<регулярное_выражение>" }, "users": [ "<список_идентификаторов_пользователей>" ], "groups": [ "<список_идентификаторов_групп>" ], "description": "<описание_правила>" }, { <Блок_правила_2> }, ... { <Блок_правила_N> } ] } } }Где:
-
access_control— конфигурация прав доступа в рамках кластера. -
functions— список блоков правил для функций. Все параметры правила являются опциональными:privileges,function,schema,catalog,groups,usersиdescription. -
privileges— список разрешенных действий над функциями:EXECUTE— вызов функции.GRANT_EXECUTE— вызов функции для созданияVIEW.OWNERSHIP— создание и удаление функции.
Если параметр
privilegesне указан, правило запрещает выполнение любых действий над функциями.Примечание
Чтобы воспользоваться правом
OWNERSHIPна функцию, требуется уровень доступаALLк каталогу, в котором находится функция. -
function— функции, на которые распространяется правило. Если блокfunctionне указан, правило распространяется на все функции.names— список имен функций.name_regexp— регулярное выражение. Правило распространяется на функции, имена которых соответствуют регулярному выражению.
Блок
functionдолжен содержать либо вложенный блокnames, либо параметрname_regexp. -
schema— схемы, на которые распространяется правило. Если блокschemaне указан, правило распространяется на все схемы.names— список имен схем.name_regexp— регулярное выражение. Правило распространяется на схемы, имена которых соответствуют регулярному выражению.
Блок
schemaдолжен содержать либо вложенный блокnames, либо параметрname_regexp. -
catalog— каталоги, на которые распространяется правило. Если блокcatalogне указан, правило распространяется на все каталоги кластера.names— список имен каталогов. Каталоги должны создаваться в этом же вызове ClusterService/Create.name_regexp— регулярное выражение. Правило распространяется на каталоги, имена которых соответствуют регулярному выражению.
Блок
catalogдолжен содержать либо вложенный блокnames, либо параметрname_regexp.
-
groups— список идентификаторов групп, на которые распространяется правило. Если параметрgroupsне указан, правило распространяется на все группы пользователей. -
users— список идентификаторов пользователей, на которых распространяется правило. Если параметрusersне указан, правило распространяется на всех пользователей. -
description— описание правила.
Доступные параметры кластера и их описания см. в инструкции.
-
-
Воспользуйтесь вызовом 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 -
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Назначить правила для существующего кластера
Правила доступа к функциям можно назначить или обновить в уже существующем кластере Managed Service for Trino.
Важно
Указанные в правилах имена функций и схем не проверяются на валидность. Ошибка в имени функции или схемы приведет к некорректной работе правила.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы задать правила доступа к функциям:
-
Если правила доступа еще не заданы, создайте файл
access_control.yamlи добавьте в него следующее содержимое:functions: # Правило 1 - privileges: [<список_разрешений>] function: names: any: [<список_имен_функций>] name_regexp: <регулярное_выражение> schema: names: any: [<список_имен_схем>] name_regexp: <регулярное_выражение> catalog: ids: any: [<список_идентификаторов_каталогов>] names: any: [<список_имен_каталогов>] name_regexp: <регулярное_выражение> groups: [<список_идентификаторов_групп>] users: [<список_идентификаторов_пользователей>] description: <описание_правила> # Правило 2 - <Параметры_правила_2> ... # Правило N - <Параметры_правила_N>Где:
-
functions— список правил для функций. Все параметры правила являются опциональными:privileges,function,schema,catalog,groups,usersиdescription. -
privileges— список разрешенных действий над функциями:EXECUTE— вызов функции.GRANT_EXECUTE— вызов функции для созданияVIEW.OWNERSHIP— создание и удаление функции.
Если параметр
privilegesне указан, правило запрещает выполнение любых действий над функциями.Примечание
Чтобы воспользоваться правом
OWNERSHIPна функцию, требуется уровень доступаALLк каталогу, в котором находится функция. -
function— функции, на которые распространяется правило. Если параметрfunctionне указан, правило распространяется на все функции.names— список имен функций.name_regexp— регулярное выражение. Правило распространяется на функции, имена которых соответствуют регулярному выражению.
Вы можете указать только один из параметров:
namesилиname_regexp. -
schema— схемы, на которые распространяется правило. Если параметрschemaне указан, правило распространяется на все схемы.names— список имен схем.name_regexp— регулярное выражение. Правило распространяется на схемы, имена которых соответствуют регулярному выражению.
Вы можете указать только один из параметров:
namesилиname_regexp. -
catalog— каталоги, на которые распространяется правило. Если параметрcatalogне указан, правило распространяется на все каталоги кластера.ids— список идентификаторов каталогов. Указанные каталоги должны существовать.names— список имен каталогов. Указанные каталоги должны существовать.name_regexp— регулярное выражение. Правило распространяется на каталоги, имена которых соответствуют регулярному выражению.
Вы можете указать только один из параметров:
ids,namesилиname_regexp.
-
groups— список идентификаторов групп, на которые распространяется правило. Если параметрgroupsне указан, правило распространяется на все группы пользователей. -
users— список идентификаторов пользователей, на которых распространяется правило. Если параметрusersне указан, правило распространяется на всех пользователей. -
description— описание правила.
-
-
Если правила доступа уже заданы, откройте файл
access_control.yamlи внесите в него изменения. Вы можете:- добавить новые правила;
- изменить параметры существующих правил;
- удалить ненужные правила.
-
Выполните команду:
yc managed-trino cluster set-access-control <имя_или_идентификатор_кластера> \ --from-file access_control.yamlИдентификатор и имя кластера можно запросить со списком кластеров в каталоге.
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
-
Если правила доступа еще не заданы, добавьте ресурс
yandex_trino_access_control, содержащий список правилfunctions.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 functions = [ # Правило 1 { privileges = ["<список_разрешений>"] function = { 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 = "<регулярное_выражение>" } users = ["<список_идентификаторов_пользователей>"] groups = ["<список_идентификаторов_групп>"] description = "<описание_правила>" }, # Правило 2 { ... }, ... # Правило N { ... } ] ... }Где:
-
functions— список блоков правил для функций. Все параметры правила являются опциональными:privileges,function,schema,catalog,groups,usersиdescription. -
privileges— список разрешенных действий над функциями:EXECUTE— вызов функции.GRANT_EXECUTE— вызов функции для созданияVIEW.OWNERSHIP— создание и удаление функции.
Если параметр
privilegesне указан, правило запрещает выполнение любых действий над функциями.Примечание
Чтобы воспользоваться правом
OWNERSHIPна функцию, требуется уровень доступаALLк каталогу, в котором находится функция. -
function— функции, на которые распространяется правило. Если блокfunctionне указан, правило распространяется на все функции.names— список имен функций.name_regexp— регулярное выражение. Правило распространяется на функции, имена которых соответствуют регулярному выражению.
Вы можете указать только один из параметров:
namesилиname_regexp. -
schema— схемы, на которые распространяется правило. Если блокschemaне указан, правило распространяется на все схемы.names— список имен схем.name_regexp— регулярное выражение. Правило распространяется на схемы, имена которых соответствуют регулярному выражению.
Вы можете указать только один из параметров:
namesилиname_regexp. -
catalog— каталоги кластера, на которые распространяется правило. Если блокcatalogне указан, правило распространяется на все каталоги кластера.ids— список идентификаторов каталогов. Указанные каталоги должны существовать или создаваться в том же манифесте.name_regexp— регулярное выражение. Правило распространяется на каталоги, имена которых соответствуют регулярному выражению.
Вы можете указать только один из параметров:
idsилиname_regexp.
-
groups— список идентификаторов групп, на которые распространяется правило. Если параметрgroupsне указан, правило распространяется на все группы пользователей. -
users— список идентификаторов пользователей, на которых распространяется правило. Если параметрusersне указан, правило распространяется на всех пользователей. -
description— описание правила.
-
-
Если правила доступа уже заданы, внесите правки в описание ресурса
yandex_trino_access_control. Вы можете:- добавить новые правила;
- изменить параметры существующих правил;
- удалить ненужные правила.
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Если правила доступа еще не заданы, создайте файл
body.jsonи добавьте в него следующее содержимое:{ "cluster_id": "<идентификатор_кластера>", "update_mask": { "paths": [ "trino.access_control.functions" ] }, "trino": { "access_control": { "functions": [ { "privileges": [ "<список_разрешений>" ], "function": { "names": { "any": [ "<список_имен_функций>" ] }, "name_regexp": "<регулярное_выражение>" }, "schema": { "names": { "any": [ "<список_имен_схем>" ] }, "name_regexp": "<регулярное_выражение>" }, "catalog": { "ids": { "any": [ "<список_идентификаторов_каталогов>" ] }, "names": { "any": [ "<имя_каталога_1>", "<имя_каталога_2>", ... "<имя_каталога_N>" ] }, "name_regexp": "<регулярное_выражение>" }, "users": [ "<список_идентификаторов_пользователей>" ], "groups": [ "<список_идентификаторов_групп>" ], "description": "<описание_правила>" }, { <Блок_правила_2> }, ... { <Блок_правила_N> } ] } } }Где:
-
cluster_id— идентификатор кластера.Идентификатор кластера можно получить со списком кластеров в каталоге.
-
update_mask— перечень изменяемых параметров в виде массива строкpaths[].Формат перечисления настроек
"update_mask": { "paths": [ "<настройка_1>", "<настройка_2>", ... "<настройка_N>" ] }Важно
При изменении кластера все параметры изменяемого объекта, которые не были явно переданы в запросе, будут переопределены на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре
update_mask. -
access_control— конфигурация прав доступа в рамках кластера. -
functions— список блоков правил для функций. Все параметры правила являются опциональными:privileges,function,schema,catalog,groups,usersиdescription. -
privileges— список разрешенных действий над функциями:EXECUTE— вызов функции.GRANT_EXECUTE— вызов функции для созданияVIEW.OWNERSHIP— создание и удаление функции.
Если параметр
privilegesне указан, правило запрещает выполнение любых действий над функциями.Примечание
Чтобы воспользоваться правом
OWNERSHIPна функцию, требуется уровень доступаALLк каталогу, в котором находится функция. -
function— функции, на которые распространяется правило. Если блокfunctionне указан, правило распространяется на все функции.names— список имен функций.name_regexp— регулярное выражение. Правило распространяется на функции, имена которых соответствуют регулярному выражению.
Блок
functionдолжен содержать либо вложенный блокnames, либо параметрname_regexp. -
schema— схемы, на которые распространяется правило. Если блокschemaне указан, правило распространяется на все схемы.names— список имен схем.name_regexp— регулярное выражение. Правило распространяется на схемы, имена которых соответствуют регулярному выражению.
Блок
schemaдолжен содержать либо вложенный блокnames, либо параметрname_regexp. -
catalog— каталоги, на которые распространяется правило. Если блокcatalogне указан, правило распространяется на все каталоги кластера.ids— список идентификаторов каталогов. Указанные каталоги должны существовать.names— список имен каталогов. Указанные каталоги должны существовать.name_regexp— регулярное выражение. Правило распространяется на каталоги, имена которых соответствуют регулярному выражению.
Блок
catalogдолжен содержать либо один из вложенных блоковidsилиnames, либо параметрname_regexp.
-
groups— список идентификаторов групп, на которые распространяется правило. Если параметрgroupsне указан, правило распространяется на все группы пользователей. -
users— список идентификаторов пользователей, на которых распространяется правило. Если параметрusersне указан, правило распространяется на всех пользователей. -
description— описание правила.
-
-
Если правила уже заданы, откройте существующий файл
body.jsonс правилами и внесите в него правки. Вы можете:- добавить новые правила;
- изменить параметры существующих правил;
- удалить ненужные правила.
-
Воспользуйтесь вызовом 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 -
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Пример назначения правил доступа к функциям
Допустим, вам нужно настроить правила доступа к пользовательским функциям в кластере Trino:
- Запретить любые действия над функциями пользователю с идентификатором
banned_user_id. - Разрешить пользователям из группы с идентификатором
admins_group_idсоздавать и удалять любые функции, а также вызывать их для созданияVIEW. - Разрешить всем остальным пользователям вызывать функции с именами вида
.*_public.
Файл access_control.yaml для такого набора правил выглядит так:
functions:
- users:
- banned_user_id
- groups:
- admins_group_id
privileges:
- GRANT_EXECUTE
- OWNERSHIP
- function:
name_regexp: ".*_public"
privileges:
- EXECUTE
Конфигурационный файл для такого набора правил выглядит так:
resource "yandex_trino_access_control" "trino_access_control" {
...
cluster_id = <идентификатор_кластера>
functions = [
{
users = ["banned_user_id"]
},
{
groups = ["admins_group_id"]
privileges = ["GRANT_EXECUTE", "OWNERSHIP"]
},
{
function = {
name_regexp = ".*_public"
}
privileges = ["EXECUTE"]
}
]
...
}
Файл body.json для такого набора правил выглядит так:
{
"cluster_id": "<идентификатор_кластера>",
"update_mask": {
"paths": [
"trino.access_control.functions"
]
},
"trino": {
"access_control": {
"functions": [
{
"users": [
"banned_user_id"
]
},
{
"groups": [
"admins_group_id"
],
"privileges": [
"GRANT_EXECUTE",
"OWNERSHIP"
]
},
{
"function": {
"name_regexp": ".*_public"
},
"privileges": [
"EXECUTE"
]
}
]
}
}
}