安全开发生命周期 - 模式

了解有关 Well-Architected Trust → 安全开发生命周期的更多信息

安全性必须在开发生命周期中集成,从初始设计到部署和运营。这些模式支持向左轮班安全实践,解决常见漏洞,并保护您的部署漏斗。

模式

何处查看好样的
开发 | 工具✅ IDE 安全扫描集成到开发人员工作流中
开发 | 设计✅ 使用 STRIDE 方法在设计阶段完成威胁建模
开发 | 要求✅ 用户数据趋势图中包含的安全要求和验收标准
开发 | 源控制✅ 提交前挂钩强制实施安全策略(秘密扫描、代码分析)
开发 | 培训✅ 开发人员安全培训定期刷新,以反映不断变化的威胁
开发 | CI/CD✅ CI/CD 漏斗中的自动安全测试失败基于重要发现
开发 | 代码审查✅ 身份验证、授权和数据访问代码需要安全同行审查
开发 | 代码分析✅ 通过棉签和静态分析强制执行安全编码标准
开发 | 依赖性✅ 依赖性漏洞扫描对每个提交运行
开发 | 测试✅ 渗透测试范围包含正式发布前的新功能

反模式

何处查看什么不好的样子
开发 | 测试⚏ 安全测试推迟到发布前手动审核
开发 | 培训⚏ 仅在入职期间进行一次安全培训
开发 | 代码审查安全团队在合并后审查代码
开发 | 设计⚏ 架构更改时威胁模型不会更新
开发 | 源控制禁用密码扫描以减少误报
开发 | CI/CD发布截止日期临近时忽略的安全发现

模式

何处查看好样的
注入✅ SOQL 查询使用绑定变量防止注入
注入✅ 在 SOQL、SOSL 或动态查询中使用前,用户输入已验证和消毒
注入✅ 动态 SOQL 仅限于受信输入
访问控制✅ CRUD 和 FLS 权限使用 Security.stripInaccessible() 强制执行
XSS✅ Lightning 组件在 UI 渲染中逃避用户生成的内容
注入✅ 外部 API 集成验证和消毒所有输入
访问控制✅ 来宾用户访问权限最小化和严重受限
身份验证✅ 用于外部身份验证的命名凭据(非硬编码凭据)
身份验证✅ 使用 PKCE 正确实施 OAuth 2.0 流
会话管理✅ 会话安全策略强制实施超时和 IP 限制
配置✅ 安全健康检查每季度审查一次,高风险发现已修复
访问控制✅ 审核自定义元数据和权限,防止过度使用

反模式

何处查看什么不好的样子
注入使用带有用户输入的字符串连接构建的 SOQL 查询
访问控制授予来宾用户简档创建、更新或删除权限
XSSLightning 组件在模板中使用未转义的表达式
身份验证外部集成在代码中使用硬编码凭据
记录调试日志包含敏感数据,例如密码或 PII
访问控制忽略 FLS 和 CRUD 检查,因为“我们控制所有用户”
配置安全运行状况检查结果被忽略或无限期推迟

模式

何处查看好样的
漏斗 | 源控制✅ 分支保护规则强制实施所需的审查和状态检查
漏斗 | 访问控制✅ 部署漏斗使用具有最低所需权限的服务帐户
漏斗 | 密码✅ 存储在安全库中的密码(从不存储在源控制或环境变量中)
漏斗 | 部署✅ 生产部署需要授权人员的手动审批权限
漏斗 | 审计✅ 部署日志通过批准跟踪捕获谁部署了什么
漏斗 | 验证✅ 部署前验证包含安全扫描和合规检查
漏斗 | 访问控制✅ 漏斗管理访问权限需要多重身份验证
漏斗 | 监控✅ 漏斗配置更改会触发安全团队通知
漏斗 | 验证✅ 部署后自动验证确认预期的安全控制处于活动状态
漏斗 | 依赖性✅ 部署前评估了安全影响的依赖更新

反模式

何处查看什么不好的样子
漏斗 | 密码提交到版本控制的密码(即使稍后移除)
漏斗 | 源控制任何人都可以合并到主/生产分支,而无需审核
漏斗 | 访问控制部署漏斗以管理员级别权限运行
漏斗 | 部署生产部署完全自动化,无需审批门
漏斗 | 审计部署日志不会捕获谁发起或批准了更改
漏斗 | 验证忽略或绕过失败的安全扫描,以满足截止日期
漏斗 | 监控漏斗配置更改未跟踪或审核
漏斗 | 验证部署后验证仅检查功能正确性

模式

何处查看好样的
测试 | 静态分析✅ Salesforce Code Analytics 在开发人员 IDE 中运行以获得即时反馈,并作为自动网关在 CI/CD 漏斗中运行
测试 | 渗透测试✅ 对暴露在不可信用户的自定义应用程序进行渗透测试,特别是 Experience Cloud 站点和面向公众的 API
测试 | 单元测试✅ 以具有不同权限简档的用户身份运行注重安全的 Apex 单元测试
测试 | 依赖性✅ 依赖性扫描会监控 AgentExchange 软件包和 JavaScript 库是否存在已知漏洞
测试 | 安全审查✅ 为每个 AppExchange 或 AgentExchange 安全审查提交准备静态分析报告
测试 | 安全审查✅ 在解决方案集成第三方 Web 应用程序或服务时准备的动态扫描(渗透测试)报告
测试 | 依赖性✅ 订阅和监控已安装软件包的安全建议

反模式

何处查看什么不好的样子
测试 | 覆盖范围⚏ 安全测试仅依赖于静态分析等单一技术
测试 | 单元测试Apex 测试验证功能行为,但绝不以较低权限用户身份运行
测试 | 安全审查无需所需的静态分析或动态扫描报表即可准备 AppExchange 或 AgentExchange 提交
测试 | 渗透测试跳过面向公众的 Experience Cloud 站点和 API 的渗透测试

另请参阅: