
Salesforce Policy Deviation Checker
Опубликовано в качестве open source компанией NCC Group Plc - https://www.nccgroup.com/
Разработано Джеромом Смитом (@exploresecurity) Благодарность Стивену Томкинсону (@neonbunny9)
https://www.github.com/nccgroup/SFPolDevChk
Выпущено под лицензией AGPL - обратитесь к LICENSE за дополнительной информацией.
В Salesforce политики паролей и настройки сеансов, заданные на уровне организации, могут быть переопределены настройками на уровне профиля. Хотя это предусмотрено архитектурой, любые изменения в этих областях внутри профиля, даже если позже они будут отменены, чтобы соответствовать настройкам организации, приводят к тому, что профиль рассинхронизируется с организацией. Другими словами, последующие изменения политик паролей и настроек сеансов на уровне организации больше не будут распространяться на эти профили. Со временем, по мере добавления и копирования профилей, это может привести к случайной неправильной конфигурации для определённых групп пользователей. SFPolDevChk показывает, какие профили были рассинхронизированы таким образом, и проверяет политики паролей и настройки сеансов каждого из них, чтобы выявить любые отклонения от заданных на уровне организации.
Требования:
requests для Python (описан в )requirements.txtСоздайте JSON-файл конфигурации (чтобы учётные данные не оставались в истории консоли):
{
"hostname": "somewhere.my.salesforce.com",
"username": "",
"password": "",
"token": "<optional token>"
"debug": <optional debug level (0, 1 or 2)>
}
Затем выполните:
git clone https://github.com/nccgroup/SFPolDevChk
pip install -r requirements.txt
python3 sfpoldevchk.py <config_file>

В приведённом выше примере строка для профиля 'Read Only' в остальном пуста. Это связано с тем, что политика паролей для этого профиля на тот момент совпадала с политикой, заданной для организации. Однако если настройки организации изменятся, пользователи, назначенные этому профилю, не получат автоматически обновлённую политику паролей (повторный запуск инструмента тогда покажет различия).
Этот инструмент выполняет операции только для чтения. Поэтому может быть удивительно видеть требование 'Modify Metadata Through Metadata API Functions' для учётной записи, используемой для запуска инструмента. Однако на момент написания данной документации не представляется возможным настроить учётную запись с правами только на чтение к Metadata API. Из https://developer.salesforce.com/docs/atlas.en-us.226.0.api_meta.meta/api_meta/meta_quickstart_prereqs.htm:
Определите пользователя, у которого есть разрешение API Enabled и разрешение Modify Metadata Through Metadata API Functions или разрешение Modify All Data. Эти разрешения необходимы для доступа к вызовам Metadata API. Если пользователю требуется доступ к метаданным, но не к данным, включите разрешение Modify Metadata Through Metadata API Functions. В противном случае включите разрешение Modify All Data.
Поэтому было признано предпочтительным использовать разрешение 'Modify Metadata Through Metadata API Functions' в качестве минимального требования вместо 'Modify All Data'. (Для интереса был проведён тест с использованием 'View All Data' — результат был неудачным.)