1. Заберите роли DataLens
Удалите у сервисного аккаунта роли на воркбуки и коллекции (воркбук → «Доступ») и роль datalens.visitor на организацию в Cloud Center. Это вступает в силу в течение нескольких минут, в том числе для уже выданных токенов.
Octo работает с DataLens от имени сервисного аккаунта в вашем облаке. Вы создаёте аккаунт, выдаёте ему роли только на нужные воркбуки, выпускаете авторизованный ключ и сохраняете его в секретах пространства Octo по защищённой ссылке.
Агенты Octo обращаются к DataLens Public API от имени сервисного аккаунта, по документации Yandex. Что именно им доступно, определяют роли, которые вы выдадите на шаге 2.
Ключ хранится в секретах пространства и доступен агенту. По нему агент получает короткоживущие IAM-токены (до 12 часов) и с ними вызывает API DataLens.
Сохранить ключ можно по ссылке, которую пришлёт Octo; удалить сохранённый ключ может владелец пространства.
Шаг 1
Сервисный аккаунт создаётся в каталоге Yandex Cloud. Для этого нужна роль iam.serviceAccounts.admin или выше на каталог.
octo-datalens, и нажмите «Создать».Шаг 2
В DataLens доступ двухуровневый: роль на организацию открывает сервис, а роли на воркбуки и коллекции определяют, какие объекты видны. По умолчанию выдавайте только datalens.visitor на организацию и роли просмотра на нужные воркбуки или коллекции.
datalens.visitordatalens.workbooks.viewerdatalens.collections.viewerdatalens.workbooks.admindatalens.collections.admindatalens.visitor. По документации она нужна каждому, кто работает с DataLens в организации, и сама по себе не открывает ни одного воркбука. Роль назначается в разделе прав доступа организации в Cloud Center так же, как пользователю.datalens.workbooks.viewer на нужные воркбуки или datalens.collections.viewer на коллекцию: роль на коллекцию распространяется на все вложенные коллекции и воркбуки.datalens.workbooks.admin на воркбук или datalens.collections.admin на коллекцию; к ней же в документации отнесены встраивание и публикация. Роль администрирования на воркбук позволяет Octo выдавать к нему доступ кому угодно и встраивать его — выдавайте её только на те воркбуки, где это для вас допустимо.Не выдавайте без необходимости широкие роли на организацию: datalens.admin даёт полный доступ ко всем воркбукам и коллекциям, datalens.instances.admin — права администратора экземпляра, а datalens.metaReader позволяет читать все объекты организации через раздел Audit в API. Для Octo они не нужны.
Важно: ключ хранится у агента Octo, поэтому всё, что разрешают роли сервисного аккаунта, может быть запущено просьбой любого участника чата или текстом, подложенным в содержимое дашборда или датасета, — вплоть до выдачи доступа к воркбуку всем подряд. Ключ хранится в секретах пространства и доступен агенту; если ключ мог утечь — удалите его в Yandex Cloud, он действует до удаления.
Шаг 3
Авторизованный ключ — пара из открытого и закрытого ключа. По нему Octo получает IAM-токены от имени сервисного аккаунта.
Закрытый ключ показывается один раз: Yandex Cloud его не хранит, и получить его повторно нельзя. Если файл потерян, удалите ключ и создайте новый. Храните файл как пароль, не пересылайте его в чатах и почте. В Octo сохраните содержимое именно этого JSON-файла без изменений: в нём есть поля id, service_account_id, private_key, public_key, key_algorithm и created_at.
Шаг 4
ID организации нужен, чтобы Octo обращался к DataLens именно вашей организации. Найти его можно одним из двух способов.
Шаг 5
Попросите Octo в чате: «запроси ключи DATALENS_SA_KEY и DATALENS_ORG_ID» — он пришлёт защищённую ссылку, где вы вставите содержимое JSON-файла и ID организации.
DATALENS_SA_KEY вставьте в поле «Значение» всё содержимое JSON-файла ключа, как есть. В строке DATALENS_ORG_ID — ID организации из шага 4./keys. Octo ответит: «🔑 Добавьте ключи/секреты для этого пространства (откроется безопасно, видно только вам)» — с кнопкой «🔑 Добавить ключи». На странице введите «Название» и «Значение» для каждого ключа («+ Ещё» добавляет строку) и нажмите «Сохранить ключи»./keys возвращает ссылку: «🔑 Управление ключами этого пространства: …». Ссылка действует 24 часа.Не отправляйте ключ сообщением в чат — только через страницу по ссылке. Если ключ всё же попал в переписку, удалите его в Yandex Cloud и выпустите новый.
Удаление ключа не обрывает доступ мгновенно: уже выданный IAM-токен действует до 12 часов, а ссылки встраивания — до 10 часов. Чтобы закрыть доступ полностью, сделайте все шаги.
Удалите у сервисного аккаунта роли на воркбуки и коллекции (воркбук → «Доступ») и роль datalens.visitor на организацию в Cloud Center. Это вступает в силу в течение нескольких минут, в том числе для уже выданных токенов.
Если Octo встраивал чарты или дашборды, в настройках встраивания воркбука удалите ключи встраивания, которые создал Octo (например, с названием «Octo»). Ссылки, подписанные ими, перестанут открываться.
Identity and Access Management → «Сервисные аккаунты» → ваш аккаунт → блок «Авторизованные ключи» → меню ключа → «Удалить». Новые токены по нему получить будет нельзя. Можно удалить и сам сервисный аккаунт.
Удалите ключи DATALENS_SA_KEY и DATALENS_ORG_ID в кабинете (страница ключей пространства), кнопкой «Удалить». В Telegram эту страницу открывает команда /keys и кнопка «🔑 Добавить ключи». Удалять ключи может владелец пространства.
Шаги и роли сверены с документацией Yandex Cloud. Интерфейс консоли может меняться: если названия кнопок отличаются, ориентируйтесь на эти страницы.
Другие подключения и защита данных в Octo.
Попросите Octo в чате запросить ключи DATALENS_SA_KEY и DATALENS_ORG_ID или напишите нам, если нужна помощь с настройкой ролей.