限制连接的应用程序的访问 (Salesforce)

Restrict access of a connected app (Salesforce)

将连接的应用程序的范围限制为一组对象的最佳方法是什么?我目前的解决方案是使用 Manage user data via APIs 范围,但仍然授予比所需更多的访问权限。

我经常看到的一个解决方案是创建一个具有受限个人资料的用户并与该用户联系,但随后您会丢失用户在连接的应用程序中进行的操作的上下文,因此该解决方案不起作用

棘手,你通常不会。 (考虑在 https://salesforce.stackexchange.com/ 上发帖,可能会有我没想到的聪明方法)。

您可以将连接的应用程序从“所有用户都可以自行授权”切换为“admin-approved 用户已预授权”,然后仅允许某些配置文件/权限集使用该应用程序。但其中大部分是“只是”通过 API 启用连接并将其剪切为仅说 Chatter 或 OpenId 标识符。与没有范围的 SOAP APIs 相比,这已经是一个改进,应用程序可以完全模拟用户,在 UI.

中做他们能做的一切

Profiles/permission sets/sharing 即使在不是很明显的情况下,规则也是“唯一”的方式,例如 Lighting Connect Salesforce 到 Salesforce 或命名凭据访问另一个组织。

如果您不能限制配置文件的可见性并且访问用户可以看到的所有表是不可接受的...

  • 您可以创建一系列 Apex 类 公开某些查询、更新等并授予配置文件访问这些 类 - 但没有完整的 api 访问权限?您甚至可以让他们通过任何 SOQL(邪恶),但在返回结果之前使用 with sharing, WITH SECURITY_ENFORCED, stripInaccessible + 对表格的自定义限制
  • 你可以查看 https://developer.salesforce.com/docs/atlas.en-us.238.0.apexref.meta/apexref/apex_class_Auth_ConnectedAppPlugin.htm 虽然我怀疑它 运行 只在连接时,而不是在每个请求时。因此,如果用户有权查看某些敏感数据,您充其量可以拒绝访问,这不是很好
  • 如果对象很少,您需要通过应用程序阻止更新 - Quiddity 可能是可行的方法。如果操作从 REST 上下文开始,则在触发器中抛出错误?
  • 给出 Transaction Security trailhead a go. If it looks promising (there's way to check "application" and "queried entities" according to this) - 可能是一个解决方案。不过,您可能不得不付出代价,上次我检查了事件监控和交易安全的酷位隐藏在一个额外的付费插件后面(独立或与平台加密和 Field Audit Track 捆绑到 Salesforce Shield 解决方案中)
  • 2 次登录?专用于查询内容的用户,但 inserts/updates 运行 宁作为您的最终用户?