SaaS 企业级安全与合规:构建攻略

了解 SaaS 产品面向企业客户所需的安全认证、合规框架、SSO、审计日志及企业级销售流程。

Priya Sharma
Priya Sharma
June 1, 202613 min read
其他语言:Deutsch · English

TL;DR: 企业级销售需要特定的安全与合规功能:SSO/SAML、SOC 2 报告、审计日志、数据保留策略及定制 SLA。本文涵盖企业就绪清单、通过 Better Auth 实现 SSO、通过 D1 实现审计日志,以及 SOC 2 认证流程。


引言

企业客户的需求与个人用户或小型团队截然不同。他们需要安全认证、合规保证、与自身身份系统的集成,以及关于正常运行时间和数据处理的合同承诺。

企业就绪不是可以后期再追加的功能,它需要从一开始就做出架构决策。


企业就绪清单

功能优先级实施周期对收入的影响
SSO/SAML高2–4 周解锁中型市场
SOC 2 Type II高3–6 个月企业客户必备
审计日志高1–2 周合规必需
数据保留策略中1 周GDPR / 企业需求
定制 SLA中法务审查推动成交
VPC / 私有云低3–6 个月受监管行业

使用 Better Auth 实现 SSO

企业客户需要与现有身份提供者集成。SSO 中间件拦截认证请求,检测组织是否启用了 SSO,并将请求重定向到相应身份提供者进行基于 SAML 的身份验证:

tsx
export const enterpriseAuthMiddleware = defineMiddleware({
  before: async ({ request }) => {
    const host = request.headers.get('host')
    const org = await getOrgByDomain(host)

    if (org?.ssoEnabled) {
      // 验证 SAML 会话或重定向到 IdP 登录页
      const session = await verifySAMLResponse(request)
      if (!session) {
        return redirectToIdP(org.ssoUrl)
      }
      return { user: session.user, org }
    }
  },
})

中间件在每次请求时检查组织的 SSO 配置。如果已启用 SSO,它会验证现有 SAML 会话或将请求重定向到 IdP 登录页。这种模式使认证层具备企业级能力,同时不会增加普通用户注册流程的复杂性。

审计日志系统

企业审计人员和安全团队需要系统中每个操作行为的完整记录。审计日志记录谁在什么时间、从哪里执行了什么操作——将每个事件以不可变记录的形式存储在数据库中:

tsx
export const logAuditEventFn = createServerFn({ method: 'POST' })
  .handler(async ({ context }) => {
    const { userId, action, resource, details } = context.event

    await db.insertInto('audit_logs').values({
      user_id: userId,
      action, // 'user.deleted', 'subscription.changed'
      resource, // 'user:123', 'org:456'
      details: JSON.stringify(details),
      ip_address: context.request.headers.get('cf-connecting-ip'),
      user_agent: context.request.headers.get('user-agent'),
      timestamp: new Date().toISOString(),
    }).execute()
  })

每个审计事件记录执行者、执行的操作、受影响的资源,以及 IP 地址和用户代理等环境上下文。这些数据对于 SOC 2 合规、安全调查和面向客户的审计跟踪至关重要。


结语

企业就绪是一场旅程,而不是一个功能。先从 SSO 和审计日志着手——这些能解锁中型市场交易。当企业收入足以支撑投入时,再推进 SOC 2 认证。你构建的每一个企业级功能都应该在更高的订阅层级中计费。欲全面了解基础设施保护,请参阅 SaaS 安全最佳实践,并在 SaaS 多租户架构 指南中了解多租户架构如何支持企业级隔离。