本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在单个控制面板上管理多个 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 产品管理租户生命周期的示例工作流程。

图表显示了以下工作流:
AWS 用户通过调用 API Gateway 端点来启动租户预置、产品预置或与管理相关的操作。
用户通过从 Amazon Cognito 用户池或其他 IdP 检索到的访问令牌进行身份验证。
单个预置或管理任务由与 API Gateway API 端点集成的 Lambda 函数运行。
通用租户解决方案(针对租户、产品和用户)的管理 APIs 收集了所有必需的输入参数、标题和令牌。然后,管理部门 APIs 调用关联的 Lambda 函数。
管理 APIs 和 Lambda 函数的 IAM 权限均由 IAM 服务进行验证。
Lambda 函数在 DynamoDB 和 Amazon S3 中存储和检索目录(针对租户、产品和用户)中的数据。
验证权限后,将调用 AWS Step Functions 工作流来执行特定任务。图中的示例显示了租户预配工作流。
各个 AWS Step Functions 工作流任务在预定的工作流(状态机)中运行。
运行与每个工作流任务关联的 Lambda 函数所需任何基本数据都将从 DynamoDB 或 Amazon S3 中进行检索。其他 AWS 资源可能需要使用 AWS CloudFormation 模板进行配置。
如果需要,工作流会发送请求,为特定 SaaS 产品预置其他 AWS 资源到该产品的 Amazon Web Services account。
当请求成功或失败时,工作流会将状态更新作为消息发布到 Amazon SNS 主题。
Amazon SNS 订阅了 Step Functions 工作流程的 Amazon SNS 主题。
然后,Amazon SNS 将工作流状态更新发送回 AWS 用户。
每个 AWS 服务的操作日志,包括 API 调用的审计记录,都将发送到 CloudWatch。可以在中 CloudWatch 为每个用例配置特定的规则和警报。
日志存档在 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 平台的要求。 | 为以下各项制定详细要求:
| 云架构师、AWS 系统管理员 |
设置 Amazon Cognito 服务。 | 按照 Amazon Cognito 开发人员指南中 Amazon Cognito 入门的说明进行操作。 | 云架构师 |
配置所需 IAM policy。 | 为您的使用案例创建所需 IAM policy。然后,将策略映射到 Amazon Cognito 中的 IAM 角色上。 | 云管理员、云架构师、AWS IAM 安全 |
配置所需 API 权限。 | 使用 IAM 角色和策略以及 Lambda 授权方设置 API Gateway 访问权限。 有关说明,请参阅 Amazon API Gateway 开发人员指南的以下部分: | 云管理员、云架构师 |
Task | 描述 | 所需技能 |
---|---|---|
创建所需数据目录。 |
有关更多信息,请参阅 Amazon DynamoDB 开发人员指南中的设置 DynamoDB。 | 数据库管理员 |
Task | 描述 | 所需技能 |
---|---|---|
创建 Lambda 函数和 API Gateway APIs 以运行所需的控制平面任务。 | 创建单独的 Lambda 函数和 API Gateway APIs 来添加、删除和管理以下内容:
有关更多信息,请参阅 AWS Lambda 开发人员指南中的将 AWS Lambda 与 Amazon API Gateway 协作使用。 | 应用程序开发人员 |
Task | 描述 | 所需技能 |
---|---|---|
确定 AWS Step Functions 工作流必须运行的任务。 | 确定并记录以下各项的详细 AWS Step Functions 工作流程要求:
重要确保主要利益相关者批准这些要求。 | 应用程序所有者 |
创建所需 AWS Step Functions 工作流。 |
| 应用程序开发人员、构建主管 |
Task | 描述 | 所需技能 |
---|---|---|
创建 Amazon SNS 主题。 | 创建 Amazon SNS 主题以接收有关以下内容的通知:
有关更多信息,请参阅 Amazon SNS 开发人员指南中的创建 Amazon SNS 主题。 | 应用程序所有者、云架构师 |
为每个 Amazon SNS 主题订阅端点。 | 要接收发布至某个 Amazon SNS 主题的消息,您必须为每个主题订阅一个端点。 有关更多信息,请参阅 Amazon SNS 开发人员指南中的订阅 Amazon SNS 主题。 | 应用程序开发人员、云架构师 |
Task | 描述 | 所需技能 |
---|---|---|
为公共租户解决方案的每个组件激活日志记录。 | 在组件级别为创建的公共租户解决方案中的每个资源激活日志记录。 有关说明,请参阅:
注意您可以使用 IAM 策略将每个资源的日志整合到一个集中式日志记录账户中。有关更多信息,请参阅集中式日志记录和多账户安全防护机制。 | 应用程序开发人员、AWS 系统管理员、云管理员 |
Task | 描述 | 所需技能 |
---|---|---|
创建 CloudFormation 模板。 | 使用 CloudFormation 模板自动部署和维护完整的通用租户解决方案及其所有组件。 有关更多信息,请参阅 A WS CloudFormation 用户指南。 | 应用程序开发者、 DevOps 工程师、 CloudFormation 开发者 |
相关资源
用 Amazon Cognito 用户池作为授权方控制对 REST API 的访问(Amazon API Gateway 开发人员指南)。
使用 API Gateway Lambda 授权方(Amazon API Gateway 开发人员指南)
Amazon Cognito 用户池(Amazon Cognito 开发人员指南)
跨账户跨区域 CloudWatch 控制台(A mazon CloudWatch 用户指南)