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

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

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

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

环境:PoC 或试点

技术:无服务器

AWS服务:亚马逊 API Gateway;亚马逊 Cognito;Lambda;AWSStep Functions;亚马逊 DynamoD AWS B

Summary

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

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

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

  • 安全

  • 租户预配

  • 租户数据存储

  • 租户通信

  • 产品管理

  • 日志记录和监控

先决条件和限制

先决条件

  • 一个活跃的AWS账户

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

  • Amazon API Gateway 知识

  • AWSLambda 知识

  • 了解 Amazon DynamoDB

  • Ident AWS ity and Access Management 知识 (IAM)

  • Ste AWS p Functions 知识

  • Amazon AWS CloudTrail 和 Amazon 的知识 CloudWatch

  • 了解 Python 库和代码

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

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

限制

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

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

架构

目标技术堆栈

  • 亚马逊API网关

  • Amazon Cognito

  • AWS CloudTrail

  • Amazon CloudWatch

  • Amazon DynamoDB

  • IAM

  • AWSLambda

  • Amazon Simple Storage Service (Amazon S3)

  • 亚马逊简单通知服务(亚马逊SNS)

  • AWS步进函数

目标架构

下图显示了在云端的单个控制平面上管理多个 SaaS 产品的租户生命周期的示例工作流程。AWS

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

图表显示了以下工作流:

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

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

  3. 单个配置或管理任务由与API网关API终端节点集成的 Lambda 函数运行。

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

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

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

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

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

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

  10. 如果需要,该工作流会向该产品的AWS账户发送请求,要求为特定 SaaS 产品配置额外AWS资源。

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

  12. 亚马逊已订阅 St SNS ep Functions 工作流程的亚马逊SNS主题。

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

  14. 每项AWS服务的操作日志(包括API呼叫审计跟踪)都将发送到 CloudWatch。可以在中 CloudWatch 为每个用例配置特定的规则和警报。

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

自动化和扩缩

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

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

工具

AWS服务

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

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

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

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

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

  • AWSIdentity and Access Management (IAM) 通过控制谁经过身份验证并有权使用AWS资源,从而帮助您安全地管理对资源的访问权限。

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

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

  • 亚马逊简单通知服务 (AmazonSNS) 可帮助您协调和管理发布者与客户之间的消息交换,包括网络服务器和电子邮件地址。

  • AWSSt ep Functions 是一项无服务器编排服务,可帮助您组合 Lam AWS bda 函数和其他AWS服务来构建业务关键型应用程序。

最佳实践

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

  • 安全面板

  • 工作流面板

  • 通信面板

  • 日志和监控面板

操作说明

任务描述所需技能

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

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

  • 租户

  • 用户

  • 角色

  • SaaS 产品

  • 订阅

  • 配置文件交换

云架构师、AWS系统管理员

设置 Amazon Cognito 服务。

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

云架构师

配置所需的IAM策略。

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

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

云管理员、云架构师、AWSIAM安全

配置所需的API权限。

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

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

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

创建所需数据目录。

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

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

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

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

DBA
任务描述所需技能

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

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

  • 用户

  • 租户

  • 产品

有关更多信息,请参阅 Lambda 开发人员指南中的 “AWS将 Lambda 与亚马逊API网关一起使用 Lambd AWSa”。

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

确定 Ste AWS p Functions 工作流程必须运行的任务。

确定并记录以下内容的 Ste AWS p Functions 工作流程的详细要求:

  • 用户

  • 租户

  • 产品

重要提示:确保关键利益相关者批准这些要求。

应用程序所有者

创建所需的 Ste AWS p Functions 工作流程。

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

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

  3. 使用 Lambda 函数实施工作流步骤。有关说明,请参阅 Step Functions 开发者指南中的创建使用 Lambda 的 AWS Step Fun ctions 状态机

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

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

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

创建 Amazon SNS 主题。

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

  • 工作流状态

  • 错误

  • 重试

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

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

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

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

有关更多信息,请参阅《亚马逊SNS开发者指南》中的订阅亚马逊SNS主题

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

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

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

有关说明,请参阅:

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

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

创建 CloudFormation 模板。

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

有关更多信息,请参阅《AWS CloudFormation 用户指南》

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

相关资源