Для разработчиков

Шифрование и безопасный контур

Доступно только на тарифе Корпорация

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

Обе находятся на одной вкладке: Настройки пространства > Безопасность. И обе меняют в API одно и то же — ссылка на файл перестаёт вести в хранилище и начинает вести в Пачку. Если ваша интеграция скачивает вложения, эта страница про неё.

Настройки видит только владелец пространства. Администратору вкладка недоступна.

Безопасный контур

Владелец перечисляет публичные IP-адреса, с которых работают сотрудники: раздел Управление белым списком IP для доступа к вложениям. Принимаются IPv4, IPv6 и запись подсети в нотации CIDR — например, 8.8.8.8 или 203.0.113.0/24. Адреса добавляются по одному.

Настройки безопасного контура

Отдельного переключателя у этой возможности нет: контур действует, пока список непустой, и перестаёт действовать, как только он опустел.

Файл, загруженный с адреса из списка, скачивается только с адресов из списка. Признак проставляется один раз, в момент отправки, и остаётся с файлом навсегда. Пересланная копия наследует его от оригинала.

Сотрудник видит у такого вложения замок, а при попытке скачать снаружи — «Файл защищен» и «Скачивание возможно только из корпоративной сети».

Просмотр во внешнем контуре

По умолчанию защищённое вложение снаружи не открывается вовсе: превью скрыто, тип файла не показывается. Переключатель Разрешить просмотр вложений смягчает это — снаружи можно посмотреть, но не скачать и не переслать за пределы Пачки.

Через API послабление не действует. Метод GETСкачивание файла отдаёт файл целиком или отказывает — промежуточного состояния «показать, но не отдать» у него нет, и параметр target доступа не открывает.

Что происходит при очистке списка

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

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

Продвинутое шифрование

Пространство шифрует данные собственным ключом из вашего хранилища ключей: поддерживаются Yandex KMS, Cloud.ru и Vault. В настройках указываются идентификатор ключа KMS и JSON-ключ сервисного аккаунта, а провайдер определяется по ключу сам.

Настройки продвинутого шифрования

Шифруется текст сообщений и часть вложений. Что именно зашифровано у конкретного файла, API не показывает — понять можно только по виду ссылки в url.

Шифрование применяется к новым сообщениям. Всё, что отправлено до включения, остаётся как было: обратной перешифровки нет.

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

Рядом лежит отдельный переключатель Шифровать push-уведомления — он шифрует текст перед отправкой через сервисы Apple и Google и к вложениям отношения не имеет.

Что меняется для интеграции

Пока обе настройки выключены, в поле url вложения приходит прямая ссылка в хранилище: она действует до 7 дней и скачивается обычным запросом без заголовков.

Как только файл оказывается защищённым или зашифрованным, в url приходит адрес метода GETСкачивание файла. Такую ссылку нельзя открыть в браузере или отдать стороннему сервису — она работает только с заголовком Authorization, и токену нужен скоуп files:read.

Различить два случая по полям ответа нельзя: состав объекта файла одинаковый. Ориентируйтесь на саму ссылку — ведёт она в хранилище или в Пачку.

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

Отказы, которые вы увидите:

  • 403 с кодом confidential_download_denied — файл не отдаётся. Так метод отвечает на защищённый файл, запрошенный снаружи контура, и на файл, в котором нашли вирус.
  • 400 с кодом decryption_failed — расшифровать не удалось. Обычно это значит, что хранилище ключей недоступно или ключ отозван.

Зашифрованный файл всегда приходит целиком и вложением: параметр target для него не действует.

Журнал аудита

Обращения к ключу видны в методе GETЖурнал аудита событий: kms_encrypt — при шифровании, kms_decrypt — при расшифровке. В details приходят chat_id, message_id и reason, по которому видно повод:

reasonСобытиеКогда пишется
message_createkms_encryptТекст сообщения зашифрован после отправки или правки
message_store_for_searchkms_encryptТекст зашифрованного сообщения записан в поисковый индекс: после отправки, после правки и при переиндексации
file_uploadkms_encryptВложение зашифровано после отправки
file_downloadkms_decryptЗашифрованное вложение скачано

Актор у этих событий — автор сообщения или вложения. Когда файл скачивает другой сотрудник, его адрес и клиент приходят в ip_address и user_agent, а сам он в записи не назван. Показ зашифрованного сообщения в журнал не пишется.

Изменения самих настроек — правка списка адресов, включение и выключение шифрования — в журнал не пишутся.