Управление правами доступа к функции
Вы можете сделать функцию публичной или приватной, посмотреть, какие роли на нее назначены, отозвать их или назначить новые.
Сделать функцию публичной
Чтобы любой пользователь мог вызвать функцию без передачи заголовка авторизации, сделайте ее публичной.
- В консоли управления перейдите в каталог, в котором находится функция.
- Выберите сервис Cloud Functions.
- Выберите функцию, которую хотите сделать публичной.
- На странице Обзор, в разделе Общая информация, переведите переключатель Публичная функция в активное состояние.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы сделать функцию публичной, выполните команду:
yc serverless function allow-unauthenticated-invoke <имя функции>
Результат:
done (1s)
Сделать функцию публичной можно с помощью метода API setAccessBindings.
Сделать функцию приватной
Чтобы функцию могли вызвать только пользователи, у которых есть права на ее вызов, сделайте функцию приватной.
Примечание
Если на облако или каталог всем неавторизованным пользователям (системная группа allUsers
) выданы права на вызов функции, функция будет публичной вне зависимости от ее настроек. Как отозвать роль.
- В консоли управления перейдите в каталог, в котором находится функция.
- Выберите сервис Cloud Functions.
- Выберите функцию, которую хотите сделать приватной.
- На странице Обзор, в разделе Общая функция, переведите переключатель Публичная функция в неактивное состояние.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы сделать функцию приватной, выполните команду:
yc serverless function deny-unauthenticated-invoke <имя функции>
Результат:
done (1s)
Посмотреть роли, назначенные на функцию
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы посмотреть роли, назначенные на функцию, выполните команду:
yc serverless function list-access-bindings <имя функции>
Результат:
+------------------------------+--------------+-----------------------+
| ROLE ID | SUBJECT TYPE | SUBJECT ID |
+------------------------------+--------------+-----------------------+
| serverless.functions.invoker | system | allAuthenticatedUsers |
+------------------------------+--------------+-----------------------+
Посмотреть роли, назначенные на функцию, можно с помощью метода API listAccessBindings.
Примечание
Роли, назначенные на каталог или облако, автоматически наследуются функцией. При этом они не отображаются в списке ролей, назначенных на нее. Подробнее о просмотре ролей.
Назначить роли на функцию
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Выполните команду, чтобы назначить роль на функцию:
- пользователю:
yc serverless function add-access-binding \ --id <идентификатор функции> \ --user-account-id <идентификатор пользователя> \ --role <роль>
done (1s)
- сервисному аккаунту:
yc serverless function add-access-binding \ --id <идентификатор функции> \ --service-account-id <идентификатор сервисного аккаунта> \ --role <роль>
done (1s)
- всем авторизованным пользователям (системная группа
allAuthenticatedUsers
):yc serverless function add-access-binding \ --id <идентификатор функции> \ --all-authenticated-users \ --role <роль>
done (1s)
Назначить роли на функцию можно с помощью метода API setAccessBindings.
Отозвать роли, назначенные на функцию
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Выполните команду, чтобы отозвать роль на функцию:
- у пользователя:
yc serverless function remove-access-binding \ --id <идентификатор функции> \ --user-account-id <идентификатор пользователя> \ --role <роль>
done (1s)
- у сервисного аккаунта:
yc serverless function remove-access-binding \ --id <идентификатор функции> \ --service-account-id <идентификатор сервисного аккаунта> \ --role <роль>
done (1s)
- у всех авторизованных пользователей (системная группа
allAuthenticatedUsers
):yc serverless function remove-access-binding \ --id <идентификатор функции> \ --all-authenticated-users \ --role <роль>
done (1s)
Отозвать роли на функцию можно с помощью метода API updateAccessBindings.