Подготовка к Security Review

Добрый день, Коммьюнити. В этой статье я хотел бы поделиться с вами своим опытом подготовки managed package к прохождению Security Review (чтобы пекедж можно было разместить на AppExchange, он должен быть заапрувлен Security командой Salesforce).

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

Из каких основных шагов состоит весь этот процесс:

  1. Написание кода.
  2. Сборка пакета.
  3. Подготовка документации.

Теперь поподробнее.

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

Есть и специфические для Apex/Salesforce требования. Тут есть, что почитать:

Такой литературы очень много, но суть, думаю, понятна.

Для автоматическойго проверки кода можно использовать различные сканеры. Например, сам Salesforce использует Checkmarx - можно просканировать всю оргу и получить отчет на почту. А тут немного о самом сканере. Советую прогонять код не только в самом конце, а и в процессе написания. Во-первых, количество попыток не бесконечно. Во-вторых, в отчетах указываются не все ошибки/риски. Если их действительно много, то вы увидите только часть, и новый скан покажет просто продолжение списка. Кроме того, если вВаш пакет взаимодействует со сторонними сервисами, то они тоже должны быть “безопасными”. Более детально я опишу это в следующем пункте.

Сборка пакета. Я использовал Visual Studio Code + SFDX. SFDX позволяет собирать managed package 2-го поколения на своем ПК прямо через консоль. А вообще, у Salesforce очень подробная документация по этой штуковине. Там в том числе и про различия между пакетами 1-го и 2-го поколения в том числе.

Конечную версию пакета надо установить на Salesforce энв и просканировать еще раз во время регистрации на Security Review.

Подготовка документации. Когда код написан, сканер кода не показывает рисков, пакет собран, можно начинать регистрацию пакета для Security Review. Это, наверное, самый специфичный и муторный шаг. Что нужно указать/предоставить:

  • контактная информация Salesforce партнера
  • логин/пароль к Salesforce энву, куда установлен пакет
  • подробно описать суть приложения, какие кастомные объекты используются
  • если пакет взаимодействует с каким-то сторонним сервисом, то нужно приложить также отчет об уязвимостях данного сервиса. Да, надо сканировать даже сторонние эндпоинты. Тут, обычно, два варианта: сервис вВаш или нет. Если ваш, то надо использовать Chimera Scan, предварительно подложив в root директорию файл со специальным токеном. Если сервис - сторонний, то можно использовать, например, ZAP - надо настроить его как прокси и запускать сканирование. В обоих случаях, надо устранять все риски, у которых уровень выше Info. Как быть со сторонним сервисом? Отказываться от его использования и искать более защищенные альтернативы, по всей видимости. Поэтому, я бы тоже советовал сканировать такие сервисы не в самом конце, а на начальном этапе моделирования приложения.

Когда все описано/задокументировано, нажимаем Submit и ждем. А ждать придется 6-8 недель. Потом Security команда Salesforce попросит предоставить verification code, когда попробует залогиниться, или внести указанные IP адреса в список доверенных (это по моему опыту). После этого опять может пройти несколько недель. Потом могут возникнуть комментарии по коду/архитектуре/структуре пакета. И т.д.

В общем, будьте готовы, что весь этот процесс может занять не один, и даже не два месяца.

Если подытожить, то я бы выделил следующие основные моменты:

  1. Проверять качество кода на всех этапах разработки.
  2. Если планируется взаимодействие со сторонними сервисами, то сначала удостовериться, что они безопасны.
  3. Быть готовым предоставить доступ для Security команды Salesforce к энву с установленным пакетом.

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

Спасибо за внимание.

5 Вподобань