salesforce developer console 匿名执行是以什么身份执行的

在 Salesforce 开发者控制台中的"匿名执行"代码(Anonymous Apex)是以当前登录用户的身份执行的。执行时会根据该用户的权限、共享设置和数据访问权限来决定代码的实际访问范围。

因此,在匿名执行中:

  • 代码会遵守当前用户的数据访问控制(Sharing Rules),只能访问当前用户有权限查看或编辑的数据。
  • 如果需要以"系统模式"执行(忽略共享规则),可以在匿名 Apex 中使用 without sharing 关键字声明一个类并在其中执行相关逻辑。

如果管理员账号对某个字段不可见,那么在开发者控制台的匿名执行中也无法访问该字段。这是因为匿名执行会遵循当前用户的字段级别安全性(Field-Level Security,FLS),即便是管理员账号,如果该字段在配置中对管理员不可见,匿名执行也无法访问。

解决方案

如果需要在匿名执行中访问受限字段,可以尝试以下方法:

  1. 检查和调整字段级别安全性:确认管理员账号是否具备该字段的读取或写入权限。
  2. 在系统模式下执行代码 :将需要的逻辑封装到 without sharing 的类方法中,并通过执行匿名 Apex 调用该方法。注意,这仅忽略共享规则,但不忽略字段级别的安全性。因此,仍然需要确保管理员对该字段的访问权限已被授予。
  3. 权限集或配置文件更新:直接为管理员配置所需字段的访问权限。这样,匿名执行时可以直接访问这些字段。

系统模式 下执行代码时,Salesforce 会忽略共享规则(Sharing Rules) ,但不会忽略字段级别安全性(Field-Level Security, FLS)。因此,即使代码运行在系统模式下,如果当前用户对某个字段没有可见权限,系统模式下的代码依然无法访问该字段。

关键点总结

  • 系统模式:忽略共享规则,允许代码访问所有记录数据,但不忽略字段级别安全性。
  • 字段级别安全性(FLS):即使在系统模式下,字段级别安全性仍然生效,无法访问当前用户无权限查看的字段。

解决方案

如果希望在系统模式下访问特定字段,可以考虑:

  1. 检查权限配置:确保管理员或执行代码的用户有该字段的访问权限。
  2. 绕过字段级别安全性 :在某些情况下,可以在自定义接口(如 REST API)中,通过 Schema.DescribeFieldResult 检查字段权限并动态执行逻辑。

不过存在一种情况,即在系统模式下执行的 Apex 代码可以忽略字段级别安全性(FLS) 。在 Salesforce 中,触发器(Triggers)批处理(Batch Apex)计划任务(Scheduled Apex) 以及某些 非匿名执行 的 Apex 类会在系统模式下运行,并能够访问所有字段和记录数据,而不受字段级别安全性的限制。

因此,匿名执行(Anonymous Apex) 是遵循当前用户的字段权限的,但其他在系统模式下执行的 Apex(如触发器和批处理)可以直接访问字段,即使当前用户没有权限。

区分匿名执行与系统模式下的执行

  1. 匿名执行(Anonymous Apex):始终遵循当前用户的字段级别安全性。
  2. 触发器、批处理和计划任务:在系统模式下运行,不受字段级别安全性影响,能够访问所有字段。

示例场景

  • 如果在开发者控制台使用匿名执行代码测试访问字段权限,则会受到字段级别安全性限制。
  • 但在触发器或批处理类中,即使用户没有对某个字段的访问权限,代码依然可以访问并操作该字段。

因此,如果希望绕过字段级别安全性,可以通过触发器或批处理类的方式来执行逻辑,这些运行在系统模式下的代码不受字段权限限制。

相关推荐
卓怡学长2 小时前
w255基于springboot仓库管理系统
java·数据库·spring boot·spring·intellij-idea
启雀AI3 小时前
生物医疗行业如何建设合规、安全、可复用的知识库?
人工智能·安全·软件构建·知识图谱·知识库
Sirius Wu4 小时前
OpenClaw Skill:Matplotlib 可视化技能 + 沙箱双层隔离完整详解
服务器·网络·人工智能·安全·ai·架构·aigc
J-Tony115 小时前
【Redis】 Redis 是单线程还是多线程
服务器·数据库·mysql
这个DBA有点耶5 小时前
SQL调优进阶:从“优化一条SQL”到“优化一个系统”的思维升级
java·大数据·数据库·sql·程序人生·dba·改行学it
冬奇Lab5 小时前
每日一个开源项目(第160篇):Destructive Command Guard - 在 AI Agent 运行 rm -rf 之前拦截它
人工智能·安全·开源
IvorySQL5 小时前
PG 日报|SQL/PGQ 图查询基于联接重写机制实现
数据库·人工智能·sql·postgresql·区块链·ivorysql
ChainSafeAI0026 小时前
Summer.fi 遭600万美元漏洞攻击,安全警报拉响
安全
数聚天成DeepSData8 小时前
遥感农业数据集下载全攻略
数据库·人工智能·深度学习·机器学习·自然语言处理·数据挖掘
一勺菠萝丶8 小时前
生产环境平滑升级实战-Nginx维护页数据库迁移与安全回滚
数据库·nginx·安全