透過單一控制平面管理多個 SaaS 產品的租用戶 - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

透過單一控制平面管理多個 SaaS 產品的租用戶

創建者拉曼娜阿凡查 (AWS)、珍妮弗·帕斯卡 ()、基山卡瓦拉 (AWS) 和安努莎·曼達娃 () AWS AWS

環境:PoC 或試點

技術:無伺服器

AWS服務:Amazon API 網關;Amazon Cognito;AWSLambda;AWSStep Functions;Amazon DynamoDB

Summary

此模式說明如何在雲端的單一控制平台上管理多個軟體即服務 (SaaS) 產品的租用戶生命週期。AWS所提供的參考架構可協助組織在其個別 SaaS 產品中減少冗餘共用功能的實作,並提供大規模的治理效率。

大型企業可以在不同的業務單位擁有多個 SaaS 產品。這些產品通常需要佈建以供不同訂閱層級的外部租用戶使用。如果沒有共同的租用戶解決方案,IT 管理員就必須花時間管理多個 SaaS 之間的無差異功能APIs,而不是專注於核心產品功能開發。

此模式中提供的一般租用戶解決方案有助於集中管理組織的許多共用 SaaS 產品功能,包括下列各項:

  • 安全

  • 租用戶佈建

  • 租用戶資料儲存

  • 租戶通訊

  • 產品管理

  • 指標記錄和監控

先決條件和限制

先決條件

  • 活躍AWS帳戶

  • Amazon Cognito 或第三方身分供應商 (IdP) 的知識

  • Amazon 網API關知識

  • 知識 L AWS ambda

  • Amazon DynamoDB 的知識

  • AWSIdentity and Access Management 知識 (IAM)

  • AWSStep Functions 的知識

  • AWS CloudTrail 和 Amazon 的知識 CloudWatch

  • 有關 Python 庫和代碼的知識

  • SaaS 的知識APIs,包括不同類型的使用者 (組織、租用戶、系統管理員和應用程式使用者)、訂閱模型和租用戶隔離模型

  • 瞭解組織的多產品 SaaS 需求和多租用戶訂閱

限制

  • 此模式不涵蓋通用租戶解決方案與個別 SaaS 產品之間的整合。

  • 此病毒碼僅會在單一AWS區域中部署 Amazon Cognito 服務。

架構

目標技術堆疊

  • Amazon API 网关

  • Amazon Cognito

  • AWS CloudTrail

  • Amazon CloudWatch

  • Amazon DynamoDB

  • IAM

  • AWSLambda

  • Amazon Simple Storage Service (Amazon S3)

  • Amazon 簡單通知服務(AmazonSNS)

  • AWS步進函數

目標架構

下圖顯示在雲端的單一控制平台上,管理多個 SaaS 產品之租用戶生命週期的範例工作流程。AWS

在單一控制平面上管理承租人生命週期的工作流程。

該圖顯示以下工作流程:

  1. AWS使用者透過呼叫 Gateway 端點,來起始承租人佈建、產品佈建或管理相關動作。API

  2. 使用者會透過從 Amazon Cognito 使用者集區或其他 IdP 擷取的存取權杖進行驗證。

  3. 個別佈建或管理任務是由與API閘道API端點整合的 Lambda 函數執行。

  4. 一般租用戶解決方案 (適用於租用戶、產品和使用者) 的管理APIs會收集所有必要的輸入參數、標頭和 Token。然後,管理員會APIs叫用相關聯的 Lambda 函數。

  5. IAM管理APIs和 Lambda 函數的許可均由IAM服務驗證。

  6. Lambda 函數會在 DynamoDB 和 Amazon S3 中存放和擷取目錄中的資料 (適用於租用戶、產品和使用者)。

  7. 驗證權限之後,系統會叫用「AWSStep Functions」工作流程來執行特定工作。圖中的範例顯示承租人佈建工作流程。

  8. 個別 AWS Step Functions 工作流程任務會在預先決定的工作流程 (狀態機器) 中執行。

  9. 執行與每個工作流程任務相關聯的 Lambda 函數所需的任何重要資料,都會從 DynamoDB 或 Amazon S3 擷取。可能需要使用AWS CloudFormation 範本佈建其他AWS資源。

  10. 如果需要,工作流程會傳送要求,將特定 SaaS 產品的其他AWS資源佈建至該產品的AWS帳戶。

  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 樣板

工具

AWS服務

  • Amazon API Gateway 可協助您建立、發佈、維護、監控和保REST護任何規模 WebSocket APIs的安全。HTTP

  • Amazon Cognito 為網頁和行動應用程式提供身份驗證、授權和使用者管理功能。

  • AWS CloudTrail協助您稽核AWS帳戶的治理、法規遵循和營運風險。

  • Amazon 可 CloudWatch協助您即時監控AWS資源和執行應用程式的指標。AWS

  • Amazon DynamoDB 是全受管的無SQL資料庫服務,可提供快速、可預測且可擴展的效能。

  • AWSIdentity and Access Management (IAM) 可協助您控制已驗證及授權使用AWS資源的使用者,藉此安全地管理對資源的存取。

  • AWSLambda 是一種運算服務,可協助您執行程式碼,而不需要佈建或管理伺服器。它只會在需要時執行程式碼並自動調整規模,因此您只需為使用的運算時間付費。

  • Amazon Simple Storage Service (Amazon S3) 是一種雲端型物件儲存服務,可協助您儲存、保護和擷取任何數量的資料。

  • Amazon 簡易通知服務 (AmazonSNS) 可協助您協調和管理發佈者和客戶之間的訊息交換,包括 Web 伺服器和電子郵件地址。

  • AWSStep Functions 是一種無伺服器協調服務,可協助您結合 AWS Lambda 函數和其他服務,以建置關鍵業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 閘道開發人員指南的下列各節:

雲端管理員、雲端架構師
任務描述所需技能

建立所需的資料目錄。

  1. 建立 DynamoDB 表格以儲存使用者目錄的資料。請確定您包含使用者屬性和角色。此外,請確保在目錄表格上執行資料塑型,以維護每個使用者和角色的必要屬性和可選屬性。

  2. 建立 DynamoDB 表格以儲存產品目錄的資料。請確定您已為 SaaS 產品建立特定使用案例的模型。

  3. 建立 DynamoDB 表格以儲存租用戶目錄的資料。請務必為租用戶、產品和多重 SaaS 訂閱和標籤的授權設定訂閱模式。

如需詳細資訊,請參Amazon Dynam oDB 開發人員指南中的設定。

DBA
任務描述所需技能

建立 Lambda 函數和API閘道APIs以執行必要的控制平面工作。

建立個別的 Lambda 函數和API閘道,APIs以新增、刪除及管理下列項目:

  • 使用者

  • 租用戶

  • 產品

如需詳細資訊,請參閱 AWS Lambda 開發人員指南中的搭配 Amazon API 閘道使用 AWS Lambda

應用程式開發人員
任務描述所需技能

識別 AWS Step Functions 工作流程必須執行的工作。

識別並記錄下列項目的詳細 AWS Step Functions 工作流程需求:

  • 使用者

  • 租用戶

  • 產品

重要事項:請確保主要利益相關者核准要求。

應用所有者

建立所需的 AWS Step Functions 工作流程。

  1. 在 AWS Step Functions 數中為使用者、承租人和產品建立所需的工作流程。如需詳細資訊,請參閱 AWSStep Functions 開發人員指南

  2. 識別重試和錯誤處理機制。如需詳細資訊,請參閱在部落格上處理錯誤、重試和新增警示至步驟函數狀態機器AWS。

  3. 使用 Lambda 函數來實作工作流程步驟。如需指示,請參閱 Step Functions 開發人員指南中的建立使用 Lambda 的 AWS Step Functions 狀態機器

  4. 視需要整合任何外部服務與 AWS Step Functions。

  5. 在 DynamoDB 表格中維護每個工作流程的狀態,並使用 Amazon 溝通每個工作流程的狀態。SNS

應用程式開發人員, 建置
任務描述所需技能

創建 Amazon SNS 主題。

建立 Amazon SNS 主題以接收下列相關通知:

  • 工作流程狀

  • 錯誤

  • 重試

如需詳細資訊,請參Amazon SNS 開發人員指南中的建立SNS主題

應用程序所有者,雲架構

訂閱每個 Amazon SNS 主題的端點。

若要接收發佈到 Amazon SNS 主題的訊息,您必須為每個主題訂閱端點。

如需詳細資訊,請參閱 Amazon SNS開發人員指南中的訂閱 Amazon SNS 主題

應用程式開發人員、雲端
任務描述所需技能

針對一般租用戶解決方案的每個元件啟動記錄。

針對您建立的一般承租人解決方案中的每個資源,在元件層級啟動記錄。

如需詳細說明,請參閱下列主題:

附註:您可以使用IAM政策,將每個資源的記錄合併到集中式記錄帳戶中。如需詳細資訊,請參閱集中式記錄和多帳戶安全防護

應用程式開發人員、AWS系統管理員、雲端
任務描述所需技能

建立 CloudFormation 範本。

使用 CloudFormation 範本,將完整的一般租用戶解決方案及其所有元件的部署和維護作業自動化。

若要取得更多資訊,請參閱AWS CloudFormation 使用者指南

應用開發人員、 DevOps 工程師、 CloudFormation 開發

相關資源