Разрешения

Обзор

Системный администратор Workplace может управлять возможностями и функциями, доступными в рамках отдельных интеграций, создавая приложения и предоставляя им определенные разрешения. Каждое приложение получает название в соответствии с услугами, которые с ним связаны. С приложениями связываются уникальные маркеры доступа и разрешения, от которых зависит, какую именно информацию это приложение может считывать и записывать.

В этом руководстве подробнее описана модель приложений и разрешений.

Настройка разрешений при редактировании приложения пользовательской интеграции

Доступные разрешения

Каждому приложению Workplace можно предоставить собственный набор разрешений, позволяющих контролировать доступные ему функции API Graph и API Account Management.

Разрешения, которое вы предоставляете новому приложению, действуют для всех аккаунтов в пределах вашего сообщества. Владельцам аккаунтов не требуется предоставлять приложению какие-либо дополнительные разрешения, чтобы воспользоваться его функциями. В этом заключается отличие от модели разрешений Facebook, где каждый пользователь отдельно предоставляет приложению разрешения при входе.

Ниже приведен полный список всех разрешений, которые доступны для интеграций, а также сведения о возможном использовании каждого из них.

РазрешениеОписание

Чтение контента группы

Чтение публикаций и комментариев в выбранных группах.

read_group

С помощью этого разрешения можно создать интеграцию, которая загружает весь контент из выбранных групп.

Если ваша интеграция будет выступать в роли бота в группе, используйте вместо этого разрешение бота упоминаний.

Управление контентом группы

Управление публикациями и комментариями в выбранных группах.

write_group

С помощью этого разрешения можно создать интеграцию, которая публикует в группах определенный контент, например еженедельный отчет из какой-либо внутренней службы либо уведомления о статусе службы от бота.

Чтение хроники пользователя

Просмотр публикаций, размещаемых участниками группы в своих хрониках.

read_user_feed

С помощью этого разрешения можно создать интеграцию, которая:

  • загружает весь контент из хроники участника группы;
  • подписывается на изменения поля статуса в профиле пользователя.

Управление хроникой пользователя

Размещение публикаций и комментариев в хронике любого пользователя группы.

write_user_feed

С помощью этого разрешения можно реализовать интеграцию, которая создает или редактирует публикации в хронике участника группы.

Бот упоминаний

Просмотр публикации, в которой бот был упомянут, и ответ на комментарии.

bot_mention

Это разрешение используется для создания ботов в группах Workplace.

Управление группами

Создание, редактирование и удаление выбранных групп и их участников.

manage_group

С помощью этого разрешения можно создать интеграцию, которая автоматически генерирует группы и заполняет их участниками на основании организационной структуры или проектных групп.

Если интеграция с этим разрешением предназначена для работы с какими-то конкретными группами, она не сможет создавать новые.

Управление аккаунтами

Подготовка, обновление и деактивация аккаунтов через API Account Management.

manage_accounts

С помощью этого разрешения можно создать интеграцию со службой подготовки аккаунтов, например поставщиком идентификации, инструментом Active Directory Sync или пользовательским клиентом API Account Management.

Активировав это разрешение, вы также сможете включить разрешение, позволяющее автоматически приглашать пользователей в Workplace после их добавления с использованием этой интеграции.

Управление значками

Назначение значков пользователям в сообществе Workplace.

manage_badges

С этим разрешением интеграция сможет:

  • назначать значки участникам;
  • получать список значков, назначенных тому или иному участнику;
  • получать список всех доступных значков.

Чтение электронных адресов пользователей

Просмотр электронного адреса любого пользователя группы.

read_user_email

Это разрешение позволяет получить адрес электронной почты, связанный с аккаунтом пользователя Workplace.

Чтение рабочего профиля

Доступ к информации о пользователях из каталога в режиме только чтения.

read_user_work_profile

Позволяет приложению загружать сведения об отделе, подразделении, организации, основном адресе, основном номере телефона, должности и поле пользователя.

Чтение организационной схемы

Доступ к информации о руководителях и подчиненных пользователей в режиме только чтения.

read_user_org_chart

Позволяет приложению загружать сведения о руководителях и подчиненных пользователей.

Отправка сообщения любому пользователю

Обмен сообщениями чата с любым участником сообщества.

message

Это разрешение используется для создания ботов в рабочем чате.

Чтение всех сообщений

Чтение сообщений чата от любого участника сообщества.

read_all_messages

С помощью этого разрешения можно реализовать интеграцию соответствия правилам, которая будет контролировать допустимость использования Чата Workplace.

Удаление сообщений чата

delete_messages

С помощью этого разрешения можно позволить приложению удалять сообщения чата из переписки определенного пользователя (т. е. реализовать политику удержания данных).

Чтение журналов безопасности

Доступ к подробным сведениям о событиях безопасности, в том числе попыткам входа и запросам на сброс пароля.

receive_security_logs

С помощью этого разрешения можно реализовать интеграцию соответствия правилам, которая будет контролировать допустимость использования Чата Workplace.

Выход

Завершение всех активных сеансов участников.

logout

С помощью этого разрешения можно завершить сеанс пользователя в Workplace.

Создание предпросмотров ссылок

Предпросмотр с форматированием для ссылок, публикуемых в Workplace.

link_unfurling

Приложения с этим разрешением могут генерировать авторизованные предпросмотры для ссылок, публикуемых в Workplace.

Управление рабочими профилями

Чтение и обновление рабочих профилей в Workplace.

manage_profiles

Это разрешение для приложения объединяет в себе разрешения на чтение read_user_work_profile и read_user_org_chart. Приложения с этим разрешением также могут обновлять данные аккаунта (имя, отдел, подразделение, должность, организацию, номера телефонов и т. п.).

Подготовка аккаунтов пользователей

Подготовка аккаунтов в Workplace.

provision_accounts

Приложения с этим разрешением могут выполнять подготовку, активацию и удаление аккаунтов Workplace (если они не заняты). Это разрешение также позволяет обновлять флаг активности, поля электронного адреса, имени, даты найма и флаг приглашения участника.

Чтение данных об участии в группах

Получение списка участников группы и списка групп, участником которых является пользователь.

list_group_members

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

Управление контентом Библиотеки знаний

Создание, редактирование и удаление важной информации о компании в Библиотеке знаний.

manage_knowledge_library

Приложения с этим разрешением могут создавать и изменять контент в Библиотеке знаний. С этим разрешением интеграция сможет:

  • создавать, обновлять и удалять категории;
  • создавать дочерние категории;
  • загружать фото, видео и другие файлы в категорию;
  • создавать, обновлять и удалять быстрые ссылки.

Чтение контента Библиотеки знаний

Чтение важной информации о компании в Библиотеке знаний.

read_knowledge_library

Приложения с этим разрешением получают доступ к контенту Библиотеки знаний. С этим разрешением интеграция сможет:

  • получать список категорий;
  • получать контент для определенной категории;
  • получать список быстрых ссылок.

Экспорт данных о сотрудниках

Экспорт списка текущих сотрудников и данных об их действиях в формате CSV.

export_employee_data

Приложения с этим разрешением могут запланировать задание на экспорт данных, в результате выполнения которого будет сгенерирован файл CSV со списком всех пользователей Workplace. Этот файл также содержит данные пользователей, в том числе информацию о последних действиях в Workplace.

Бот для группового чата

Боты могут взаимодействовать с групповым чатом.

bot_group_chat

Приложения с этим разрешением могут взаимодействовать с пользователями группового чата. С помощью этого разрешения можно реализовать интеграцию, которая создает групповой чат с несколькими участниками или управляет им.

Это разрешение зависит от разрешения message.

Управление опросами

Создание, обновление, удаление и чтение настроек опроса.

manage_surveys

Приложения с этим разрешением могут создавать, обновлять, удалять и читать настройки опроса.

Чтение сведений об опросе

Чтение настроек опроса и получение связанных с ним обновлений Webhooks

read_surveys

Приложения с этим разрешением могут читать настройки опроса и получать связанные с ним обновления Webhooks.

Чтение сведений об опросе

Чтение настроек опроса и получение связанных с ним обновлений Webhooks

read_surveys

Приложения с этим разрешением могут читать настройки опроса и получать связанные с ним обновления Webhooks.

Чтение сведений о группе пользователей

Чтение сведений о группе пользователей.

read_people_sets

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

Управление группами пользователей

Управление группами пользователей.

manage_people_sets

Приложения с этим разрешением могут создавать, обновлять и удалять группы пользователей в Workplace.

Чтение важных публикаций

Чтение важных публикаций.

read_important_posts

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

Управление важными публикациями

Управление важными публикациями.

manage_important_posts

Позволяет интеграции помечать публикации группы как важные (такие публикации отображаются наверху ленты) и заранее останавливать продвижение важных публикаций.

Удаление информации профиля

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

remove_profile_information

Позволяет интеграции удалять поля профиля (например, имя и изображение профиля) деактивированных пользователей Workplace.

Разрешения уровня группы

Некоторые разрешения можно предоставлять интеграциям только для заданного набора групп. Благодаря этому у интеграции будет доступ только к определенному массиву контента.

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

Задать разрешения уровня группы для пользовательской интеграции можно с помощью панели доступа к группам в диалоге редактирования интеграции.

Предоставление разрешений уровня группы для этой интеграции

На уровне группы можно задать следующие разрешения:

  • чтение контента группы — чтение публикаций, комментариев и профилей участников выбранных групп;
  • управление контентом группы — управление публикациями и комментариями в выбранных группах;
  • управление группами — редактирование и удаление выбранных групп и их участников.

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

Процедура установки администратором

Если выбран режим, в котором администраторы групп могут включать для них интеграции, администратор группы увидит новую вкладку Интеграции на экране Управление группой, где сможет включить нужные интеграции для своей группы.

Пример приложения, которое теперь может активировать администратор группы

Маркеры приложений и их использование

При создании нового приложения для Workplace генерируется маркер доступа для использования с API Graph, API Account Management или Webhooks.

Этот маркер доступа отображается только один раз, поэтому его необходимо надежно сохранить для дальнейшего использования в коде.

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

Срок действия маркеров приложений в Workplace никогда не истекает, и их не требуется обновлять, если только они не были сброшены вручную. После редактирования разрешений, предоставленных определенному приложению, существующий маркер остается действительным. Генерировать новый не требуется.

Если вам потребуется сделать маркер недействительным, его можно сбросить, нажав кнопку Сбросить маркер доступа в диалоге Редактирование приложения. Будет сгенерирован и отображен новый маркер, а существующий сразу же станет недействительным.

Безопасность маркеров

Маркеры доступа очень функциональны. Они служат для доступа к данным вашей компании в Workplace. При создании приложения определите минимальный набор разрешений, необходимый для реализации функций интеграции, и не предоставляйте разрешений, которые не нужны.

При сохранении маркеров или добавлении их в репозитории кода уделите самое пристальное внимание их защите от несанкционированного доступа.

Никогда не сохраняйте рабочие маркеры доступа в публичных репозиториях кода.

Учетные данные для доступа к API должны храниться и использоваться только в вашей собственной серверной среде и не должны копироваться или передаваться за ее пределы (например, в мобильные приложения или браузерные клиенты).

Для дополнительной защиты интеграции реализуйте белый список IP-адресов, чтобы ограничить область использования маркеров только серверами, адреса которых в него входят.

Добавление белого списка IP-адресов с целью ограничить область применения маркеров определенными серверами, а также включение проверочного кода на базе секрета приложения

Автоматическое удаление неиспользуемых разрешений

Если пользовательская интеграция не совершает никаких вызовов с использованием определенного разрешения в течение 30 дней, это разрешение удаляется. После того как это произойдет для пользовательской интеграции в первый раз, такое удаление можно будет запретить.

Если у вас настроена действительная подписка на Webhooks, отправляемые объекты Webhooks учитываются в качестве случаев использования соответствующего разрешения.

Средства контроля автоматического удаления разрешений

Проверочный код на базе секрета приложения

Срок действия маркеров приложений для Workplace не ограничен. Для дополнительной защиты в пользовательской интеграции можно настроить требование проверочного кода на базе секрета приложения. Если соответствующий параметр включен, вызовы API выполняются только из серверного кода, причем помимо маркера доступа в вызове потребуется указать проверочный код на базе секрета приложения, срок действия которого ограничен.

Чтобы сгенерировать проверочный код с ограниченным сроком действия, необходимо объединить маркер с меткой времени Unix, разделив их символом |, а затем создать из полученной строки хэш SHA-256, используя в качестве ключа секрет приложения. Вот пример на PHP:

$appsecret_proof = hash_hmac('sha256', $access_token.'|'.time(), $app_secret); 

Некоторые операционные системы и языки программирования возвращают метку времени в виде числа с плавающей запятой. Перед вычислением проверочного кода на базе секрета приложения не забудьте преобразовать его в целое. Некоторые языки программирования возвращают хэш в виде объекта-отпечатка. Не забудьте преобразовать его в шестнадцатеричный объект.

Чтобы выполнить вызов API с использованием проверочного кода на базе секрета приложения, передайте сгенерированный хэш в параметре appsecret_proof вместе с параметром appsecret_time, задав в качестве его значения метку времени, которая использовалась при хэшировании секрета приложения, а также маркер доступа.

GET https://graph.facebook.com/v2.9/community/groups?
&access_token={access-token}
&appsecret_proof={appsecret_proof}
&appsecret_time={appsecret_time}

Срок действия проверочного кода на базе секрета приложения с меткой времени истекает через пять минут, поэтому при выполнении каждого вызова API Graph рекомендуется сразу генерировать новый проверочный код.

Исследование функций API с помощью Postman

Postman — это инструмент, который широко используется для работы с веб-API. Вы можете воспользоваться программой Postman для исследования возможностей API Workplace, однако при этом возникает сложность, связанная с параметром $appsecret_proof: это значение рассчитывается и действует в течение пяти минут, поэтому было бы проще, если бы Postman мог генерировать его в момент запроса. Это можно реализовать с помощью выполняемых перед запросом скриптов и параметров Postman. В качестве отправной точки можно воспользоваться таким скриптом:

// Add to Postman's Pre-request Script Tab
var access_token = "replace-me";
var app_secret = "replace-me";
var time = (new Date().getTime()/1000|0);
postman.setEnvironmentVariable("access_token", access_token)
postman.setEnvironmentVariable("appsecret_time", time);
postman.setEnvironmentVariable("appsecret_proof", CryptoJS.HmacSHA256(access_token + '|' + time, app_secret));
Создайте активную среду (по умолчанию ее нет), а затем добавьте эти три параметра, которые рассчитываются в выполняемом перед запросом скрипте