Интеграции · Yandex DataLens

Подключение Yandex DataLens к Octo

Octo работает с DataLens от имени сервисного аккаунта в вашем облаке. Вы создаёте аккаунт, выдаёте ему роли только на нужные воркбуки, выпускаете авторизованный ключ и сохраняете его в секретах пространства Octo по защищённой ссылке.

Что Octo сможет делать.

Агенты Octo обращаются к DataLens Public API от имени сервисного аккаунта, по документации Yandex. Что именно им доступно, определяют роли, которые вы выдадите на шаге 2.

Умеет

  • Показывать список дашбордов, чартов и датасетов
  • Читать настройки объектов: из чего собран чарт, какие поля в датасете
  • Получать данные датасетов, чтобы ответить на вопрос или собрать отчёт
  • Выдавать доступ к воркбуку пользователю или группе
  • Готовить встраивание (embed) чартов и дашбордов

Не делает

  • Не видит воркбуки, на которые у сервисного аккаунта нет ролей
  • Не меняет объекты, если вы выдали только роли просмотра

Ключ хранится в секретах пространства и доступен агенту. По нему агент получает короткоживущие IAM-токены (до 12 часов) и с ними вызывает API DataLens.

Сохранить ключ можно по ссылке, которую пришлёт Octo; удалить сохранённый ключ может владелец пространства.

Шаг 1

Создайте сервисный аккаунт.

Сервисный аккаунт создаётся в каталоге Yandex Cloud. Для этого нужна роль iam.serviceAccounts.admin или выше на каталог.

  1. Откройте консоль Yandex Cloud и выберите каталог в верхней панели.
  2. Перейдите в сервис Identity and Access Management.
  3. Нажмите «Создать сервисный аккаунт», укажите имя, например octo-datalens, и нажмите «Создать».
  • Имя: от 3 до 63 символов, строчные латинские буквы, цифры и дефисы; начинается с буквы и не заканчивается дефисом.
  • Перенести аккаунт в другой каталог потом нельзя, поэтому выберите каталог сразу.
  • Роли на каталог или облако этому аккаунту не нужны: доступ к DataLens выдаётся на следующем шаге.

Шаг 2

Выдайте доступ к DataLens.

В DataLens доступ двухуровневый: роль на организацию открывает сервис, а роли на воркбуки и коллекции определяют, какие объекты видны. По умолчанию выдавайте только datalens.visitor на организацию и роли просмотра на нужные воркбуки или коллекции.

Организация: доступ к сервисуdatalens.visitor
Воркбук: чтение объектов и данныхdatalens.workbooks.viewer
Коллекция: чтение всех вложенных воркбуковdatalens.collections.viewer
Воркбук: выдача доступа другим, встраивание и публикацияdatalens.workbooks.admin
Коллекция: то же для всех вложенных воркбуковdatalens.collections.admin
  • На организацию назначьте сервисному аккаунту роль datalens.visitor. По документации она нужна каждому, кто работает с DataLens в организации, и сама по себе не открывает ни одного воркбука. Роль назначается в разделе прав доступа организации в Cloud Center так же, как пользователю.
  • Только чтение. Выдайте datalens.workbooks.viewer на нужные воркбуки или datalens.collections.viewer на коллекцию: роль на коллекцию распространяется на все вложенные коллекции и воркбуки.
  • Только если Octo должен делиться и встраивать. Менять права доступа может только роль администрирования: datalens.workbooks.admin на воркбук или datalens.collections.admin на коллекцию; к ней же в документации отнесены встраивание и публикация. Роль администрирования на воркбук позволяет Octo выдавать к нему доступ кому угодно и встраивать его — выдавайте её только на те воркбуки, где это для вас допустимо.
  • Роли на воркбук назначаются в DataLens: страница воркбука → «Доступ» → «Добавить пользователя» → выберите субъект и уровень доступа → «Сохранить». Роли DataLens можно назначать сервисным аккаунтам.

Не выдавайте без необходимости широкие роли на организацию: datalens.admin даёт полный доступ ко всем воркбукам и коллекциям, datalens.instances.admin — права администратора экземпляра, а datalens.metaReader позволяет читать все объекты организации через раздел Audit в API. Для Octo они не нужны.

Важно: ключ хранится у агента Octo, поэтому всё, что разрешают роли сервисного аккаунта, может быть запущено просьбой любого участника чата или текстом, подложенным в содержимое дашборда или датасета, — вплоть до выдачи доступа к воркбуку всем подряд. Ключ хранится в секретах пространства и доступен агенту; если ключ мог утечь — удалите его в Yandex Cloud, он действует до удаления.

Шаг 3

Создайте авторизованный ключ.

Авторизованный ключ — пара из открытого и закрытого ключа. По нему Octo получает IAM-токены от имени сервисного аккаунта.

  1. В консоли Yandex Cloud выберите каталог с сервисным аккаунтом и откройте Identity and Access Management.
  2. Слева выберите «Сервисные аккаунты» и откройте созданный аккаунт.
  3. Нажмите «Создать новый ключ» → «Создать авторизованный ключ».
  4. Выберите алгоритм, при желании добавьте описание, например «Octo», и нажмите «Создать».
  5. В открывшемся окне нажмите «Скачать файл с ключами» и затем «Закрыть».

Закрытый ключ показывается один раз: Yandex Cloud его не хранит, и получить его повторно нельзя. Если файл потерян, удалите ключ и создайте новый. Храните файл как пароль, не пересылайте его в чатах и почте. В Octo сохраните содержимое именно этого JSON-файла без изменений: в нём есть поля id, service_account_id, private_key, public_key, key_algorithm и created_at.

Шаг 4

Найдите ID организации.

ID организации нужен, чтобы Octo обращался к DataLens именно вашей организации. Найти его можно одним из двух способов.

  • В DataLens: на панели слева откройте «Настройки сервиса» (если пункта не видно, сначала нажмите «Ещё»). Нажмите справа от названия организации, чтобы посмотреть и скопировать идентификатор.
  • В Cloud Center: откройте center.yandex.cloud. ID указан под названием организации, рядом есть кнопка копирования. Если организаций несколько, сначала переключитесь на нужную.

Шаг 5

Сохраните ключ в Octo.

Попросите Octo в чате: «запроси ключи DATALENS_SA_KEY и DATALENS_ORG_ID» — он пришлёт защищённую ссылку, где вы вставите содержимое JSON-файла и ID организации.

  1. Откройте ссылку. В Яндекс Мессенджере и Битрикс24 Octo пишет: «🔑 Добавьте запрошенные ключи для этого пространства (вход не нужен, ссылка действует 24 ч и только для этих ключей)».
  2. В строке DATALENS_SA_KEY вставьте в поле «Значение» всё содержимое JSON-файла ключа, как есть. В строке DATALENS_ORG_ID — ID организации из шага 4.
  3. Нажмите «Сохранить ключи». Значения после сохранения больше не показываются.
  • Telegram: можно отправить команду /keys. Octo ответит: «🔑 Добавьте ключи/секреты для этого пространства (откроется безопасно, видно только вам)» — с кнопкой «🔑 Добавить ключи». На странице введите «Название» и «Значение» для каждого ключа («+ Ещё» добавляет строку) и нажмите «Сохранить ключи».
  • Веб-чат: команда /keys возвращает ссылку: «🔑 Управление ключами этого пространства: …». Ссылка действует 24 часа.

Не отправляйте ключ сообщением в чат — только через страницу по ссылке. Если ключ всё же попал в переписку, удалите его в Yandex Cloud и выпустите новый.

Как отозвать доступ.

Удаление ключа не обрывает доступ мгновенно: уже выданный IAM-токен действует до 12 часов, а ссылки встраивания — до 10 часов. Чтобы закрыть доступ полностью, сделайте все шаги.

1. Заберите роли DataLens

Удалите у сервисного аккаунта роли на воркбуки и коллекции (воркбук → «Доступ») и роль datalens.visitor на организацию в Cloud Center. Это вступает в силу в течение нескольких минут, в том числе для уже выданных токенов.

2. Удалите ключ встраивания «Octo»

Если Octo встраивал чарты или дашборды, в настройках встраивания воркбука удалите ключи встраивания, которые создал Octo (например, с названием «Octo»). Ссылки, подписанные ими, перестанут открываться.

3. Удалите авторизованный ключ

Identity and Access Management → «Сервисные аккаунты» → ваш аккаунт → блок «Авторизованные ключи» → меню ключа → «Удалить». Новые токены по нему получить будет нельзя. Можно удалить и сам сервисный аккаунт.

4. Удалите секреты в Octo

Удалите ключи DATALENS_SA_KEY и DATALENS_ORG_ID в кабинете (страница ключей пространства), кнопкой «Удалить». В Telegram эту страницу открывает команда /keys и кнопка «🔑 Добавить ключи». Удалять ключи может владелец пространства.

Источники.

Шаги и роли сверены с документацией Yandex Cloud. Интерфейс консоли может меняться: если названия кнопок отличаются, ориентируйтесь на эти страницы.

  1. Роли в DataLens
  2. Организации в DataLens
  3. Как начать работать с DataLens Public API
  4. Права доступа к воркбукам и коллекциям
  5. Настройки сервиса DataLens
  6. Создание сервисного аккаунта
  7. Управление авторизованными ключами
  8. Назначение роли в организации
  9. Как узнать ID организации

Что почитать дальше.

Другие подключения и защита данных в Octo.

Подключите DataLens к своему пространству.

Попросите Octo в чате запросить ключи DATALENS_SA_KEY и DATALENS_ORG_ID или напишите нам, если нужна помощь с настройкой ролей.