本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
透過單一控制平面管理多個 SaaS 產品的租用戶
由 Ramanna Avancha (AWS)、Jenifer Pascal (AWS)、Kishan Kavala (AWS) 和 Anusha Mandava (AWS) 建立
Summary
此模式示範如何在 AWS 雲端的單一控制平面上管理多個軟體即服務 (SaaS) 產品的租用戶生命週期。提供的參考架構可協助組織減少在其個別 SaaS 產品中實作備援、共用功能,並提供大規模的控管效率。
大型企業可以在各種業務單位擁有多個 SaaS 產品。這些產品通常需要佈建供不同訂閱層級的外部租戶使用。如果沒有通用的租戶解決方案,IT 管理員必須花時間管理多個 SaaS APIs 中的未差異化功能,而不是專注於核心產品功能開發。
此模式中提供的常見租戶解決方案可協助集中管理組織的許多共用 SaaS 產品功能,包括下列項目:
安全
租戶佈建
租戶資料儲存
租戶通訊
產品管理
指標記錄和監控
先決條件和限制
先決條件
作用中的 AWS 帳戶
Amazon Cognito 或第三方身分提供者 (IdP) 的知識
Amazon API Gateway 的知識
AWS Lambda 的知識
Amazon DynamoDB 的知識
了解 AWS Identity and Access Management (IAM)
AWS Step Functions 的知識
AWS CloudTrail 和 Amazon 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 函數
目標架構
下圖顯示管理 AWS 雲端中單一控制平面上多個 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 工作流程任務會在預先定義的工作流程 (狀態機器) 中執行。
從 DynamoDB 或 Amazon S3 擷取執行與每個工作流程任務相關聯的 Lambda 函數所需的任何必要資料。可能需要使用 AWS CloudFormation 範本佈建其他 AWS 資源。
如有需要,工作流程會傳送請求,為特定 SaaS 產品佈建額外的 AWS 資源到該產品的 AWS 帳戶。
當請求成功或失敗時,工作流程會將狀態更新作為訊息發佈至 Amazon SNS 主題。
Amazon SNS 已訂閱 Step Functions 工作流程的 Amazon SNS 主題。
然後,Amazon SNS 會將工作流程狀態更新傳回給 AWS 使用者。
每個 AWS 服務動作的日誌,包括 API 呼叫的稽核線索,都會傳送至 CloudWatch。您可以在 CloudWatch 中為每個使用案例設定特定規則和警示。
日誌會封存在 Amazon S3 儲存貯體中以供稽核之用。
自動化和擴展
此模式使用 CloudFormation 範本來協助自動化常見租用戶解決方案的部署。範本也可以協助您快速擴展或縮減相關聯的資源。
如需詳細資訊,請參閱《AWS CloudFormation 使用者指南》中的使用 AWS CloudFormation 範本。
工具
AWS 服務
Amazon API Gateway 可協助您建立、發佈、維護、監控和保護任何規模的 REST、HTTP 和 WebSocket APIs。
Amazon Cognito 為 Web 和行動應用程式提供身分驗證、授權和使用者管理。
AWS CloudTrail 可協助您稽核 AWS 帳戶的控管、合規和營運風險。
Amazon CloudWatch 可協助您即時監控 AWS 資源的指標,以及您在 AWS 上執行的應用程式。
Amazon DynamoDB 是一項全受管 NoSQL 資料庫服務,可提供快速、可預期且可擴展的效能。
AWS Identity and Access Management (IAM) 可透過控制已驗證和授權使用的人員,協助您安全地管理對 AWS 資源的存取。
AWS Lambda 是一種運算服務,可協助您執行程式碼,而不需要佈建或管理伺服器。它只會在需要時執行程式碼,並自動擴展,因此您只需按使用的運算時間付費。
Amazon Simple Storage Service (Amazon S3) 是一種雲端型物件儲存服務,可協助您儲存、保護和擷取任何數量的資料。
Amazon Simple Notification Service (Amazon SNS) 可協助您協調和管理發佈者和用戶端之間的訊息交換,包括 Web 伺服器和電子郵件地址。
AWS Step Functions 是一種無伺服器協同運作服務,可協助您結合 AWS Lambda 函數和其他 AWS 服務來建置業務關鍵應用程式。
最佳實務
此模式中的解決方案使用單一控制平面來管理多個租用戶的加入,以及佈建對多個 SaaS 產品的存取。控制平面可協助管理使用者管理其他四個功能特定的平面:
安全平面
工作流程平面
通訊平面
記錄和監控平面
史詩
任務 | 描述 | 所需技能 |
---|---|---|
建立多租戶 SaaS 平台的需求。 | 建立下列項目的詳細需求:
| 雲端架構師、AWS 系統管理員 |
設定 Amazon Cognito 服務。 | 請遵循《Amazon Cognito 開發人員指南》中的 Amazon Cognito 入門中的指示。 | 雲端架構師 |
設定所需的 IAM 政策。 | 為您的使用案例建立所需的 IAM 政策。然後,將政策映射至 Amazon Cognito 中的 IAM 角色。 如需詳細資訊,請參閱《Amazon Cognito 開發人員指南》中的使用政策和角色型存取控制管理存取權。 | 雲端管理員、雲端架構師、AWS IAM 安全性 |
設定所需的 API 許可。 | 使用 IAM 角色和政策以及 Lambda 授權方來設定 API Gateway 存取許可。 如需說明,請參閱《Amazon API Gateway 開發人員指南》中的下列章節: | 雲端管理員、雲端架構師 |
任務 | 描述 | 所需技能 |
---|---|---|
建立所需的資料目錄。 |
如需詳細資訊,請參閱《Amazon DynamoDB 開發人員指南》中的設定 DynamoDB。 DynamoDB | DBA |
任務 | 描述 | 所需技能 |
---|---|---|
建立 Lambda 函數和 API Gateway APIs 以執行必要的控制平面任務。 | 建立個別的 Lambda 函數和 API Gateway APIs,以新增、刪除和管理下列項目:
如需詳細資訊,請參閱《AWS Lambda 開發人員指南》中的搭配 Amazon API Gateway 使用 AWS Lambda。 AWS Lambda | 應用程式開發人員 |
任務 | 描述 | 所需技能 |
---|---|---|
識別 AWS Step Functions 工作流程必須執行的任務。 | 識別並記錄下列項目的詳細 AWS Step Functions 工作流程需求:
重要確定關鍵利益相關者核准要求。 | 應用程式擁有者 |
建立所需的 AWS Step Functions 工作流程。 |
| 應用程式開發人員、建置領導 |
任務 | 描述 | 所需技能 |
---|---|---|
建立 Amazon SNS 主題。 | 建立 Amazon SNS 主題以接收有關下列項目的通知:
如需詳細資訊,請參閱《Amazon SNS SNS 開發人員指南》中的建立 SNS 主題。 | 應用程式擁有者、雲端架構師 |
將端點訂閱至每個 Amazon SNS 主題。 | 若要接收發佈至 Amazon SNS 主題的訊息,您必須訂閱每個主題的端點。 如需詳細資訊,請參閱《Amazon SNS 開發人員指南》中的訂閱 Amazon SNS 主題。 Amazon SNS | 應用程式開發人員、雲端架構師 |
任務 | 描述 | 所需技能 |
---|---|---|
啟用一般租用戶解決方案每個元件的記錄。 | 在您建立的通用租用戶解決方案中,針對每個資源在元件層級啟用記錄。 如需詳細說明,請參閱下列主題:
注意您可以使用 IAM 政策,將每個資源的日誌合併到集中式日誌帳戶。如需詳細資訊,請參閱集中式記錄和多帳戶安全護欄。 | 應用程式開發人員、AWS 系統管理員、雲端管理員 |
任務 | 描述 | 所需技能 |
---|---|---|
建立 CloudFormation 範本。 | 使用 CloudFormation 範本,自動化完整通用租用戶解決方案及其所有元件的部署和維護。 如需詳細資訊,請參閱 AWS CloudFormation 使用者指南。 | 應用程式開發人員、DevOps 工程師、CloudFormation 開發人員 |
相關資源
使用 Amazon Cognito 使用者集區做為授權方控制對 REST API 的存取 (Amazon API Gateway 開發人員指南)
使用 API Gateway Lambda 授權方 (Amazon API Gateway 開發人員指南)
Amazon Cognito 使用者集區 (Amazon Cognito 開發人員指南)
跨帳戶跨區域 CloudWatch 主控台 (Amazon CloudWatch 使用者指南)