选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

在单个控制面板上管理多个 SaaS 产品的租户 - AWS Prescriptive Guidance

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在单个控制面板上管理多个 SaaS 产品的租户

由 Ramanna Avancha (AWS)、Jenifer Pascal (AWS)、Kishan Kavala (AWS) 和 Anusha Mandava (AWS) 创建

摘要

此模式展示了如何在 Amazon Web Services Cloud 的单个控制面板上跨多个软件即服务(SaaS)产品管理租户生命周期。提供的参考架构可以帮助组织减少在其单个 SaaS 产品中实施冗余的共享功能,并大规模提高治理效率。

大型企业可以在不同的业务部门拥有多个 SaaS 产品。这些产品通常需要预配,以供不同订阅级别的外部租户使用。如果没有通用的租户解决方案,IT 管理员必须花时间管理多个 SaaS 中的无差异功能 APIs,而不是专注于核心产品功能开发。

此模式中提供的通用租户解决方案可帮助集中管理组织的许多共享 SaaS 产品功能,包括:

  • 安全

  • 租户预配

  • 租户数据存储

  • 租户通信

  • 产品管理

  • 日志记录和监控

先决条件和限制

先决条件

  • 一个有效的 Amazon Web Services account

  • 了解 Amazon Cognito 或第三方身份提供者(IdP)

  • 了解 Amazon API Gateway

  • 了解 AWS Lambda

  • 了解 Amazon DynamoDB

  • 了解 AWS Identity and Access Management(AWS IAM)

  • 了解 AWS Step Functions

  • 对 AWS CloudTrail 和亚马逊的了解 CloudWatch

  • 了解 Python 库和代码

  • SaaS 知识 APIs,包括不同类型的用户(组织、租户、管理员和应用程序用户)、订阅模式和租户隔离模型

  • 了解组织的多产品 SaaS 要求和多租户订阅

限制

  • 此模式不包括通用租户解决方案与单个 SaaS 产品之间的集成。

  • 此模式仅在单个 AWS 区域中部署 Amazon Cognito 服务。

架构

目标技术堆栈

  • Amazon API Gateway

  • Amazon Cognito

  • AWS CloudTrail

  • Amazon CloudWatch

  • Amazon DynamoDB

  • IAM

  • AWS Lambda

  • Amazon Simple Storage Service (Amazon S3)

  • Amazon Simple Notification Service (Amazon SNS)

  • AWS Step functions

目标架构

下图显示了在 Amazon Web Services Cloud 中的单个控制面板上跨多个 SaaS 产品管理租户生命周期的示例工作流程。

在单个控制平面上管理租户生命周期的工作流程。

图表显示了以下工作流:

  1. AWS 用户通过调用 API Gateway 端点来启动租户预置、产品预置或与管理相关的操作。

  2. 用户通过从 Amazon Cognito 用户池或其他 IdP 检索到的访问令牌进行身份验证。

  3. 单个预置或管理任务由与 API Gateway API 端点集成的 Lambda 函数运行。

  4. 通用租户解决方案(针对租户、产品和用户)的管理 APIs 收集了所有必需的输入参数、标题和令牌。然后,管理部门 APIs 调用关联的 Lambda 函数。

  5. 管理 APIs 和 Lambda 函数的 IAM 权限均由 IAM 服务进行验证。

  6. Lambda 函数在 DynamoDB 和 Amazon S3 中存储和检索目录(针对租户、产品和用户)中的数据。

  7. 验证权限后,将调用 AWS Step Functions 工作流来执行特定任务。图中的示例显示了租户预配工作流。

  8. 各个 AWS Step Functions 工作流任务在预定的工作流(状态机)中运行。

  9. 运行与每个工作流任务关联的 Lambda 函数所需任何基本数据都将从 DynamoDB 或 Amazon S3 中进行检索。其他 AWS 资源可能需要使用 AWS CloudFormation 模板进行配置。

  10. 如果需要,工作流会发送请求,为特定 SaaS 产品预置其他 AWS 资源到该产品的 Amazon Web Services account。

  11. 当请求成功或失败时,工作流会将状态更新作为消息发布到 Amazon SNS 主题。

  12. Amazon SNS 订阅了 Step Functions 工作流程的 Amazon SNS 主题。

  13. 然后,Amazon SNS 将工作流状态更新发送回 AWS 用户。

  14. 每个 AWS 服务的操作日志,包括 API 调用的审计记录,都将发送到 CloudWatch。可以在中 CloudWatch 为每个用例配置特定的规则和警报。

  15. 日志存档在 Amazon S3 存储桶中,以便进行审计。

自动化和扩缩

此模式使用 CloudFormation 模板来帮助自动部署通用租户解决方案。该模板还可以帮助您快速向上或向下扩展相关资源。

有关更多信息,请参阅 AWS CloudFormation 用户指南中的使用 AWS CloudFormation 模板

工具

Amazon Web Services

  • Amazon API Gateway 可帮助您创建、发布、维护、监控和保护任何规模的 RES WebSocket APIs T、HTTP。

  • Amazon Cognito 为您的 Web 和移动应用程序提供身份验证、授权和用户管理。

  • AWS CloudTrail 可帮助您审计 AWS 账户的治理、合规和运营风险。

  • Amazon CloudWatch 可帮助您实时监控您的 AWS 资源和在 AWS 上运行的应用程序的指标。

  • Amazon DynamoDB 是一项完全托管的 NoSQL 数据库服务,可提供快速、可预测和可扩展的性能。

  • AWS Identity and Access Management (AWS IAM) 通过控制验证和授权使用您 AWS 资源的用户,帮助您安全地管理对您 AWS 资源的访问。

  • AWS Lambda 是一项计算服务,可帮助您运行代码,而无需预置或管理服务器。它仅在需要时运行您的代码,并且能自动扩缩,因此您只需为使用的计算时间付费。

  • Amazon Simple Storage Service (Amazon S3)是一项基于云的对象存储服务,可帮助您存储、保护和检索任意数量的数据。

  • Amazon Simple Notification Service (Amazon SNS) 可帮助您协调和管理发布者与客户端(包括 Web 服务器和电子邮件地址)之间的消息交换。

  • AWS Step Functions 是一项无服务器编排服务,可让您搭配使用 AWS Lambda 函数和其他 Amazon Web Services 来构建业务关键型应用程序。

最佳实践

此模式中的解决方案使用单个控制面板来管理多个租户的载入,并预配对多个 SaaS 产品的访问权限。控制面板可帮助管理用户管理其他四个特定于功能的面板:

  • 安全面板

  • 工作流面板

  • 通信面板

  • 日志和监控面板

操作说明

Task描述所需技能

确定多租户 SaaS 平台的要求。

为以下各项制定详细要求:

  • 租户

  • Users

  • 角色

  • SaaS 产品

  • 订阅

  • 配置文件交换

云架构师、AWS 系统管理员

设置 Amazon Cognito 服务。

按照 Amazon Cognito 开发人员指南Amazon Cognito 入门的说明进行操作。

云架构师

配置所需 IAM policy。

为您的使用案例创建所需 IAM policy。然后,将策略映射到 Amazon Cognito 中的 IAM 角色上。

有关更多信息,请参阅 Amazon Cognito 开发人员指南中的使用策略管理访问基于角色的访问控制

云管理员、云架构师、AWS IAM 安全

配置所需 API 权限。

使用 IAM 角色和策略以及 Lambda 授权方设置 API Gateway 访问权限。

有关说明,请参阅 Amazon API Gateway 开发人员指南的以下部分:

云管理员、云架构师

配置安全面板

Task描述所需技能

确定多租户 SaaS 平台的要求。

为以下各项制定详细要求:

  • 租户

  • Users

  • 角色

  • SaaS 产品

  • 订阅

  • 配置文件交换

云架构师、AWS 系统管理员

设置 Amazon Cognito 服务。

按照 Amazon Cognito 开发人员指南Amazon Cognito 入门的说明进行操作。

云架构师

配置所需 IAM policy。

为您的使用案例创建所需 IAM policy。然后,将策略映射到 Amazon Cognito 中的 IAM 角色上。

有关更多信息,请参阅 Amazon Cognito 开发人员指南中的使用策略管理访问基于角色的访问控制

云管理员、云架构师、AWS IAM 安全

配置所需 API 权限。

使用 IAM 角色和策略以及 Lambda 授权方设置 API Gateway 访问权限。

有关说明,请参阅 Amazon API Gateway 开发人员指南的以下部分:

云管理员、云架构师
Task描述所需技能

创建所需数据目录。

  1. 创建 DynamoDB 表以存储用户目录的数据。请确保包含用户属性和角色。此外,请确保对目录表执行数据建模,以维护每个用户和角色的必需属性和可选属性。

  2. 创建 DynamoDB 表以存储产品目录的数据。确保对 SaaS 产品的特定用例进行建模。

  3. 创建 DynamoDB 表以存储租户目录的数据。请确保为租户、产品和多 SaaS 订阅的许可以及标记设置订阅模型。

有关更多信息,请参阅 Amazon DynamoDB 开发人员指南中的设置 DynamoDB

数据库管理员

配置数据面板

Task描述所需技能

创建所需数据目录。

  1. 创建 DynamoDB 表以存储用户目录的数据。请确保包含用户属性和角色。此外,请确保对目录表执行数据建模,以维护每个用户和角色的必需属性和可选属性。

  2. 创建 DynamoDB 表以存储产品目录的数据。确保对 SaaS 产品的特定用例进行建模。

  3. 创建 DynamoDB 表以存储租户目录的数据。请确保为租户、产品和多 SaaS 订阅的许可以及标记设置订阅模型。

有关更多信息,请参阅 Amazon DynamoDB 开发人员指南中的设置 DynamoDB

数据库管理员
Task描述所需技能

创建 Lambda 函数和 API Gateway APIs 以运行所需的控制平面任务。

创建单独的 Lambda 函数和 API Gateway APIs 来添加、删除和管理以下内容:

  • Users

  • 租户

  • 产品

有关更多信息,请参阅 AWS Lambda 开发人员指南中的将 AWS Lambda 与 Amazon API Gateway 协作使用

应用程序开发人员

配置控制面板

Task描述所需技能

创建 Lambda 函数和 API Gateway APIs 以运行所需的控制平面任务。

创建单独的 Lambda 函数和 API Gateway APIs 来添加、删除和管理以下内容:

  • Users

  • 租户

  • 产品

有关更多信息,请参阅 AWS Lambda 开发人员指南中的将 AWS Lambda 与 Amazon API Gateway 协作使用

应用程序开发人员
Task描述所需技能

确定 AWS Step Functions 工作流必须运行的任务。

确定并记录以下各项的详细 AWS Step Functions 工作流程要求:

  • Users

  • 租户

  • 产品

重要

确保主要利益相关者批准这些要求。

应用程序所有者

创建所需 AWS Step Functions 工作流。

  1. 在 AWS Step Functions 中为用户、租户和产品创建所需工作流。有关更多信息,请参阅 AWS Step Functions 开发人员指南

  2. 确定重试和错误处理机制。有关更多信息,请参阅 AWS Blog 上的处理错误、重试和向 Step Function 状态机添加警报

  3. 使用 Lambda 函数实施工作流步骤。有关更多信息,请参阅 AWS Step Functions 开发人员指南中的创建使用 Lambda 的 Step Functions 状态机

  4. 根据需要将任何外部服务与 AWS Step Functions 集成。

  5. 在 DynamoDB 表中维护每个工作流的状态,并使用 Amazon SNS 传达每个工作流的状态。

应用程序开发人员、构建主管

配置工作流面板

Task描述所需技能

确定 AWS Step Functions 工作流必须运行的任务。

确定并记录以下各项的详细 AWS Step Functions 工作流程要求:

  • Users

  • 租户

  • 产品

重要

确保主要利益相关者批准这些要求。

应用程序所有者

创建所需 AWS Step Functions 工作流。

  1. 在 AWS Step Functions 中为用户、租户和产品创建所需工作流。有关更多信息,请参阅 AWS Step Functions 开发人员指南

  2. 确定重试和错误处理机制。有关更多信息,请参阅 AWS Blog 上的处理错误、重试和向 Step Function 状态机添加警报

  3. 使用 Lambda 函数实施工作流步骤。有关更多信息,请参阅 AWS Step Functions 开发人员指南中的创建使用 Lambda 的 Step Functions 状态机

  4. 根据需要将任何外部服务与 AWS Step Functions 集成。

  5. 在 DynamoDB 表中维护每个工作流的状态,并使用 Amazon SNS 传达每个工作流的状态。

应用程序开发人员、构建主管
Task描述所需技能

创建 Amazon SNS 主题。

创建 Amazon SNS 主题以接收有关以下内容的通知:

  • 工作流状态

  • 错误

  • 重试

有关更多信息,请参阅 Amazon SNS 开发人员指南中的创建 Amazon SNS 主题

应用程序所有者、云架构师

为每个 Amazon SNS 主题订阅端点。

要接收发布至某个 Amazon SNS 主题的消息,您必须为每个主题订阅一个端点。

有关更多信息,请参阅 Amazon SNS 开发人员指南中的订阅 Amazon SNS 主题

应用程序开发人员、云架构师

配置通信面板

Task描述所需技能

创建 Amazon SNS 主题。

创建 Amazon SNS 主题以接收有关以下内容的通知:

  • 工作流状态

  • 错误

  • 重试

有关更多信息,请参阅 Amazon SNS 开发人员指南中的创建 Amazon SNS 主题

应用程序所有者、云架构师

为每个 Amazon SNS 主题订阅端点。

要接收发布至某个 Amazon SNS 主题的消息,您必须为每个主题订阅一个端点。

有关更多信息,请参阅 Amazon SNS 开发人员指南中的订阅 Amazon SNS 主题

应用程序开发人员、云架构师
Task描述所需技能

为公共租户解决方案的每个组件激活日志记录。

在组件级别为创建的公共租户解决方案中的每个资源激活日志记录。

有关说明,请参阅:

注意

您可以使用 IAM 策略将每个资源的日志整合到一个集中式日志记录账户中。有关更多信息,请参阅集中式日志记录和多账户安全防护机制

应用程序开发人员、AWS 系统管理员、云管理员

配置日志和监控面板

Task描述所需技能

为公共租户解决方案的每个组件激活日志记录。

在组件级别为创建的公共租户解决方案中的每个资源激活日志记录。

有关说明,请参阅:

注意

您可以使用 IAM 策略将每个资源的日志整合到一个集中式日志记录账户中。有关更多信息,请参阅集中式日志记录和多账户安全防护机制

应用程序开发人员、AWS 系统管理员、云管理员
Task描述所需技能

创建 CloudFormation 模板。

使用 CloudFormation 模板自动部署和维护完整的通用租户解决方案及其所有组件。

有关更多信息,请参阅 A WS CloudFormation 用户指南

应用程序开发者、 DevOps 工程师、 CloudFormation 开发者

预配和部署通用租户解决方案

Task描述所需技能

创建 CloudFormation 模板。

使用 CloudFormation 模板自动部署和维护完整的通用租户解决方案及其所有组件。

有关更多信息,请参阅 A WS CloudFormation 用户指南

应用程序开发者、 DevOps 工程师、 CloudFormation 开发者

相关资源

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。