---
schema_version: "1"
id: b96c6dba9554289bc5c98e2a89140e3106f2b3c3d48d66bd25d7a543b87a118c
title: 安全开发生命周期 - 模式
collection: architect
version: current
locale: zh-cn
portal_url: https://docs.salesforce.com/architect/current/zh-cn/well-architected/guides/trust-secure-development-patterns.md
canonical_url: https://architect.salesforce.com/docs/architect/zh-cn/well-architected/guide/trust-secure-development-patterns.html
source_site: architect.salesforce.com
content_type: documentation
content_hash: f7796d0460105a13dc8200ad413362f7955084a79c7b4d854cc4230cc1091be8
products:
  - 架构良好的框架
  - Architect Site Content Repo
---
# 安全开发生命周期 - 模式

了解有关 Well-Architected [Trust](/docs/architect/zh-cn/well-architected/guide/trust.html) → [安全开发生命周期](/docs/architect/zh-cn/well-architected/guide/trust.html#secure-development-lifecycle)的更多信息

安全性必须在开发生命周期中集成，从初始设计到部署和运营。这些模式支持向左轮班安全实践，解决常见漏洞，并保护您的部署漏斗。

## 轮班左侧安全性

**模式**

| 何处查看 | 好样的 |
| --- | --- |
| 开发 \| 工具                      | ✅ IDE 安全扫描集成到开发人员工作流中 |
| 开发 \| 设计                       | ✅ 使用 STRIDE 方法在设计阶段完成威胁建模 |
| 开发 \| 要求                 | ✅ 用户数据趋势图中包含的安全要求和验收标准 |
| 开发 \| 源控制               | ✅ 提交前挂钩强制实施安全策略（秘密扫描、代码分析） |
| 开发 \| 培训                     | ✅ 开发人员安全培训定期刷新，以反映不断变化的威胁 |
| 开发 \| CI/CD                        | ✅ CI/CD 漏斗中的自动安全测试失败基于重要发现 |
| 开发 \| 代码审查                  | ✅ 身份验证、授权和数据访问代码需要安全同行审查 |
| 开发 \| 代码分析                | ✅ 通过棉签和静态分析强制执行安全编码标准 |
| 开发 \| 依赖性                 | ✅ 依赖性漏洞扫描对每个提交运行 |
| 开发 \| 测试                      | ✅ 渗透测试范围包含正式发布前的新功能 |

**反模式**

| 何处查看 | 什么不好的样子 |
| --- | --- |
| 开发 \| 测试                      | ⚏ 安全测试推迟到发布前手动审核 |
| 开发 \| 培训                     | ⚏ 仅在入职期间进行一次安全培训 |
| 开发 \| 代码审查                  | 安全团队在合并后审查代码 |
| 开发 \| 设计                       | ⚏ 架构更改时威胁模型不会更新 |
| 开发 \| 源控制               | 禁用密码扫描以减少误报 |
| 开发 \| CI/CD                        | 发布截止日期临近时忽略的安全发现 |

## 适用于 Salesforce 的 OWASP 前 10 名

**模式**

| 何处查看 | 好样的 |
| --- | --- |
| 注入                                   | ✅ SOQL 查询使用绑定变量防止注入 |
| 注入                                   | ✅ 在 SOQL、SOSL 或动态查询中使用前，用户输入已验证和消毒 |
| 注入                                   | ✅ 动态 SOQL 仅限于受信输入 |
| 访问控制                              | ✅ CRUD 和 FLS 权限使用 Security.stripInaccessible() 强制执行 |
| XSS                                         | ✅ Lightning 组件在 UI 渲染中逃避用户生成的内容 |
| 注入                                   | ✅ 外部 API 集成验证和消毒所有输入 |
| 访问控制                              | ✅ 来宾用户访问权限最小化和严重受限 |
| 身份验证                              | ✅ 用于外部身份验证的命名凭据（非硬编码凭据） |
| 身份验证                              | ✅ 使用 PKCE 正确实施 OAuth 2.0 流 |
| 会话管理                          | ✅ 会话安全策略强制实施超时和 IP 限制 |
| 配置                               | ✅ 安全健康检查每季度审查一次，高风险发现已修复 |
| 访问控制                              | ✅ 审核自定义元数据和权限，防止过度使用 |

**反模式**

| 何处查看 | 什么不好的样子 |
| --- | --- |
| 注入                                   | 使用带有用户输入的字符串连接构建的 SOQL 查询 |
| 访问控制                              | 授予来宾用户简档创建、更新或删除权限 |
| XSS                                         | Lightning 组件在模板中使用未转义的表达式 |
| 身份验证                              | 外部集成在代码中使用硬编码凭据 |
| 记录                                     | 调试日志包含敏感数据，例如密码或 PII |
| 访问控制                              | 忽略 FLS 和 CRUD 检查，因为“我们控制所有用户” |
| 配置                               | 安全运行状况检查结果被忽略或无限期推迟 |

## 安全漏斗设计

**模式**

| 何处查看 | 好样的 |
| --- | --- |
| 漏斗 \| 源控制                  | ✅ 分支保护规则强制实施所需的审查和状态检查 |
| 漏斗 \| 访问控制                  | ✅ 部署漏斗使用具有最低所需权限的服务帐户 |
| 漏斗 \| 密码                         | ✅ 存储在安全库中的密码（从不存储在源控制或环境变量中） |
| 漏斗 \| 部署                      | ✅ 生产部署需要授权人员的手动审批权限 |
| 漏斗 \| 审计                        | ✅ 部署日志通过批准跟踪捕获谁部署了什么 |
| 漏斗 \| 验证                      | ✅ 部署前验证包含安全扫描和合规检查 |
| 漏斗 \| 访问控制                  | ✅ 漏斗管理访问权限需要多重身份验证 |
| 漏斗 \| 监控                      | ✅ 漏斗配置更改会触发安全团队通知 |
| 漏斗 \| 验证                      | ✅ 部署后自动验证确认预期的安全控制处于活动状态 |
| 漏斗 \| 依赖性                    | ✅ 部署前评估了安全影响的依赖更新 |

**反模式**

| 何处查看 | 什么不好的样子 |
| --- | --- |
| 漏斗 \| 密码                         | 提交到版本控制的密码（即使稍后移除） |
| 漏斗 \| 源控制                  | 任何人都可以合并到主/生产分支，而无需审核 |
| 漏斗 \| 访问控制                  | 部署漏斗以管理员级别权限运行 |
| 漏斗 \| 部署                      | 生产部署完全自动化，无需审批门 |
| 漏斗 \| 审计                        | 部署日志不会捕获谁发起或批准了更改 |
| 漏斗 \| 验证                      | 忽略或绕过失败的安全扫描，以满足截止日期 |
| 漏斗 \| 监控                      | 漏斗配置更改未跟踪或审核 |
| 漏斗 \| 验证                      | 部署后验证仅检查功能正确性 |

## 安全测试策略

**模式**

| 何处查看 | 好样的 |
| --- | --- |
| 测试 \| 静态分析                  | ✅ Salesforce Code Analytics 在开发人员 IDE 中运行以获得即时反馈，并作为自动网关在 CI/CD 漏斗中运行 |
| 测试 \| 渗透测试              | ✅ 对暴露在不可信用户的自定义应用程序进行渗透测试，特别是 Experience Cloud 站点和面向公众的 API |
| 测试 \| 单元测试                       | ✅ 以具有不同权限简档的用户身份运行注重安全的 Apex 单元测试 |
| 测试 \| 依赖性                     | ✅ 依赖性扫描会监控 AgentExchange 软件包和 JavaScript 库是否存在已知漏洞 |
| 测试 \| 安全审查                  | ✅ 为每个 AppExchange 或 AgentExchange 安全审查提交准备静态分析报告 |
| 测试 \| 安全审查                  | ✅ 在解决方案集成第三方 Web 应用程序或服务时准备的动态扫描（渗透测试）报告 |
| 测试 \| 依赖性                     | ✅ 订阅和监控已安装软件包的安全建议 |

**反模式**

| 何处查看 | 什么不好的样子 |
| --- | --- |
| 测试 \| 覆盖范围                         | ⚏ 安全测试仅依赖于静态分析等单一技术 |
| 测试 \| 单元测试                       | Apex 测试验证功能行为，但绝不以较低权限用户身份运行 |
| 测试 \| 安全审查                  | 无需所需的静态分析或动态扫描报表即可准备 AppExchange 或 AgentExchange 提交 |
| 测试 \| 渗透测试              | 跳过面向公众的 Experience Cloud 站点和 API 的渗透测试 |

## 相关模式

另请参阅：
- [合规和监管模式](https://architect.salesforce.com/docs/architect/zh-cn/well-architected/guide/trust-compliance-patterns.md) — 平台治理和审计控制
- [身份和访问管理模式](https://architect.salesforce.com/docs/architect/zh-cn/well-architected/guide/trust-identity-access-patterns.md) — 身份验证和授权
- [事件响应模式](https://architect.salesforce.com/docs/architect/zh-cn/well-architected/guide/trust-incident-response-patterns.md) — 安全事件检测和响应
- [客服人员模式](https://architect.salesforce.com/docs/architect/zh-cn/well-architected/guide/trust-agentic-patterns.md) — 特定于客服人员的安全控制
