由 NCC Group Plc 以开源形式发布 - https://www.nccgroup.com/
开发者:Jerome Smith (@exploresecurity) 感谢 Stephen Tomkinson (@neonbunny9)
https://www.github.com/nccgroup/SFPolDevChk
根据 AGPL 发布 - 更多信息请参阅 LICENSE。
在 Salesforce 中,在顶层组织级别设置的密码策略和会话设置可能会被配置文件(Profile)级别所覆盖。尽管这是设计使然,但配置文件内这些区域的任何更改,即使之后恢复为与组织设置一致,也会导致该配置文件与组织失去同步。换言之,此后在组织级别对密码策略和会话设置所做的更改将不再传播到这些配置文件。随着时间推移,当配置文件被添加和复制时,这可能会导致某些用户群意外出现配置错误。SFPolDevChk 能够揭示哪些配置文件以这种方式失去同步,并检查每个配置文件的密码策略和会话设置,以突出显示与组织级别设置之间的任何偏差。
要求:
requests 模块(包含在 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 All Data' 相比,将 'Modify Metadata Through Metadata API Functions' 作为最低要求似乎更可取。(出于兴趣,我们使用 'View All Data' 运行了一个测试用例——结果失败了。)