翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
複数の SaaS 製品間のテナントを単一のコントロールプレーンで管理する
作成者:Ramanna Avancha (AWS)、Jenifer Pascal (AWS)、Kishan Kavala (AWS) と Anusha Mandava (AWS)
概要
このパターンは、AWS クラウドの単一のコントロールプレーンで、複数のサービスを提供する SaaS 製品間のテナントのライフサイクルを管理する方法を示しています。提供されるリファレンスアーキテクチャは、組織が個々の SaaS 製品間で冗長な共有機能の実装を減らし、ガバナンスの効率性を大幅に向上させるのに役立ちます。
大手企業は、さまざまなビジネスユニット間で複数のSaaS製品を保有できます。多くの場合、これらの製品は、さまざまなサブスクリプションレベルの外部テナントが使用できるようにプロビジョニングする必要があります。共通のテナントソリューションがない場合、IT 管理者はコア製品の機能開発に集中するのではなく、複数のSaaS API 間で差別化されていない機能の管理に時間を費やす必要があります。
このパターンで提供される共通テナントソリューションは、次のような組織の共有 SaaS 製品機能の多くを一元管理するのに役立ちます。
セキュリティ
テナントプロビジョニング
テナントデータストレージ
テナントコミュニケーション
製品管理
マトリックス記録とモニタリング
前提条件と制限
前提条件
アクティブな AWS アカウント
Amazon Cognito または第三者の ID プロバイダー (IdP) に関する知識
Amazon API Gateway に関する知識
AWS Lambda に関する知識
Amazon DynamoDB に関する知識
AWS Identity and Access Management (IAM)
AWS Step Functions に関する知識
AWS CloudTrail と Amazon CloudWatch に関する知識
Python ライブラリとコードに関する知識
さまざまなタイプのユーザー (組織、テナント、管理者とアプリケーションユーザー)、サブスクリプションモデルとテナント分離モデルを含む SaaS API に関する知識
組織のマルチプロダクト SaaS 要件とマルチテナントサブスクリプションに関する知識
制約事項
一般的なテナントソリューションと個々の SaaS 製品との統合は、このパターンには含まれていません。
このパターンでは、Amazon Cognito サービスは単一の AWS リージョンにのみデプロイされます。
アーキテクチャ
ターゲットテクノロジースタック
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
ターゲットアーキテクチャ
次の図は、AWS クラウドの 1 つのコントロールプレーンで複数の SaaS 製品間におけるテナントライフサイクルを管理するためのワークフローの例を示しています。

この図表は、次のワークフローを示しています:
AWS ユーザーは、API ゲートウェイエンドポイントを呼び出して、テナントのプロビジョニング、製品のプロビジョニングまたは管理関連のアクションを開始します。
ユーザーは、Amazon Cognito ユーザープールまたは別の IdP から取得したアクセストークンにより認証されます。
個々のプロビジョニングまたは管理タスクは、API Gateway API エンドポイントと統合された Lambda 関数により、実行されます。
共通テナントソリューション (テナント、製品、ユーザー用) の管理 API は、必要な入力パラメータ、ヘッダー、トークンをすべて収集します。その後、管理 API は関連する Lambda 関数を呼び出します。
管理 API と Lambda 関数の両方の IAM 権限は、IAM サービスにより、検証されます。
Lambda 関数は、DynamoDB と Amazon S3 のカタログ (テナント、製品、ユーザー用) のデータを保存し、取得します。
アクセス権限が検証されると、特定のタスクを実行するために、AWS Step Functions ワークフローが呼び出されます。この図の例は、テナントのプロビジョニングワークフローを示しています。
個々の AWS Step Functions ワークフロータスクは、あらかじめ決められたワークフロー (ステートマシン) で実行されます。
各ワークフロータスクに関連付けられた Lambda 関数の実行に必要かつ重要なデータは、DynamoDB または Amazon S3 から取得されます。他の AWS リソースは、AWS CloudFormation テンプレートでプロビジョニングする必要がある場合があります。
必要に応じて、ワークフローは特定の SaaS 製品用に追加の AWS リソースをプロビジョニングするリクエストをその製品の AWS アカウントに送信します。
リクエストが成功または失敗する場合、ワークフローはステータス更新をメッセージとして Amazon SNS トピックに発行します。
Amazon SNS は Step Functions ワークフローの Amazon SNS トピックにサブスクライブされています。
次に、Amazon SNS はその後、ワークフローステータスの更新を AWS ユーザーに送り返します。
API 呼び出しの監査証跡を含む各 AWS サービスのアクションのログは CloudWatch に送信されます。CloudWatch では、ユースケースごとに特定のルールとアラームを設定できます。
ログは監査の目的で Amazon S3 バケットにアーカイブされます。
自動化とスケール
このパターンは、CloudFormation テンプレートで、共通テナントソリューションのデプロイの自動化に役立ちます。テンプレートは、関連するリソースをすばやくスケールアップまたはスケールダウンするのに役立ちます。
詳細については、AWS CloudFormation ユーザーガイドの「AWS CloudFormation テンプレートの操作」を参照してください。
ツール
AWS サービス
「Amazon API Gateway」は、任意のスケールで REST、HTTP、WebSocket API を作成、公開、維持、監視、保護する上で役立ちます。
Amazon Cognito は、ウェブおよびモバイルアプリの認証、認可、ユーザー管理を提供します。
「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)」は、ウェブサーバーやメールアドレスなど、パブリッシャーとクライアント間のメッセージの交換を調整および管理するのに役立ちます。
AWS Step Functionsは、AWS Lambda関数と他のAWS サービスを組み合わせてビジネスクリティカルなアプリケーションを構築できるサーバーレスオーケストレーションサービスです。
ベストプラクティス
このパターンのソリューションでは、単一のコントロールプレーンで複数のテナントのオンボーディングを管理し、複数のSaaS製品へのアクセスをプロビジョニングします。コントロールプレーンは、管理ユーザーがほかの 4 つの機能に固有のプレーンを管理することに役立ちます。
セキュリティプレーン
ワークフロープレーン
コミュニケーションプレーン
ログ記録とモニタリング
エピック
タスク | 説明 | 必要なスキル |
---|---|---|
マルチテナント SaaS プラットフォームの要件を確立します。 | 以下の要件の詳細を確立します。
| クラウドアーキテクト、AWS システム管理者 |
Amazon Cognito サービスを設定します。 | 「Amazon Cognito 開発者ガイド」の「Amazon Cognito の使用開始方法」に記載されている指示に従ってください。 | クラウドアーキテクト |
必要な IAM ポリシーを設定します。 | ユースケースに必要なIAMポリシーを作成します。その後、ポリシーを Amazon Cognito の IAM ロールにマッピングします。 詳細については、「Amazon Cognito 開発者ガイド」の「ポリシーを使用したアクセスの管理」と「ロールベースアクセスコントロール」を参照してください。 | クラウド管理者、クラウドアーキテクト、AWS IAM sセキュリティ |
必要な API アクセス権限を設定します。 | IAM ロールとポリシーおよび Lambda 認証で API Gatewayのアクセス権限を設定します。 手順については、「Amazon API Gateway 開発者ガイド」の以下のセクションを参照してください。 | クラウド管理者、クラウドアーキテクト |
タスク | 説明 | 必要なスキル |
---|---|---|
必要なデータカタログを作成します。 |
詳細については、Amazon DynamoDB 開発者ガイドの「DynamoDB のセットアップ」を参照してください。 | DBA |
タスク | 説明 | 必要なスキル |
---|---|---|
Lambda 関数と API Gateway API を作成して、必要なコントロールプレーンタスクを実行します。 | Lambda 関数と API Gateeway API を個別に作成して、次の項目の追加、削除と管理を行います。
詳細については、AWS Lambda 開発者ガイドの「Amazon API Gateway での AWS Lambda の使用」参照してください。 | アプリ開発者 |
タスク | 説明 | 必要なスキル |
---|---|---|
AWS Step Functions ワークフローが実行する必要のあるタスクを特定します。 | 次の AWS Step Functions ワークフロー要件の詳細を特定して文書化します。
重要主要な利害関係者が要件を承認していることを確認します。 | アプリ所有者 |
必要な AWS Step Functions ワークフローを作成します。 |
| アプリ開発者、ビルドリード |
タスク | 説明 | 必要なスキル |
---|---|---|
Amazon SNS トピックを作成します。 | Amazon SNS トピックを作成して、以下に関する通知を受信します。
詳細については、Amazon SNS 開発者ガイドの「SNS トピックの作成」を参照してください。 | アプリ所有者、Cloud アーキテクト |
エンドポイントを各 Amazon SNS トピックにサブスクライブします。 | Amazon SNS トピックにパブリッシュされたメッセージを受信するには、各トピックにエンドポイントをサブスクライブする必要があります。 詳細については、Amazon SNS 開発者ガイドの「Amazon SNS トピックのサブスクライブ」を参照してください。 | アプリ開発者、Cloud アーキテクト |
タスク | 説明 | 必要なスキル |
---|---|---|
共通テナントソリューションの各コンポーネントの記録を有効にします。 | 作成した共通テナントソリューション内の各リソースの記録をコンポーネントレベルで有効にします。 手順については、以下を参照してください。
注記IAM ポリシーを使用して、各リソースのログを一元化されたログ記録アカウントに統合できます。詳細については、「集中記録と複数アカウントのセキュリティガードレール」を参照してください。 | アプリ開発者、AWS システム管理者、クラウド管理者 |
タスク | 説明 | 必要なスキル |
---|---|---|
CloudFormation テンプレートを作成します。 | CloudFormation テンプレートを使用して、共通テナントソリューション全体とそのすべてのコンポーネントのデプロイとメンテナンスを自動化します。 詳細については、「AWS CloudFormation ユーザーガイド」を参照してください。 | アプリ開発者、DevOpsエンジニア、CloudFormation 開発者 |
関連リソース
詳細については、Amazon API Gateway デベロッパーガイドの「Amazon Cognito ユーザープールをオーソライザーとして使用して REST API へのアクセスを制御する」を参照してください
「API Gateway Lambda オーソライザーを使用する」(Amazon API Gateway 開発者ガイド)
「Amazon Cognito ユーザープール」(Amazon Cognito 開発者ガイド)
「クロスアカウントクロスリージョン CloudWatch コンソール」(Amazon CloudWatch ユーザーガイド)