複数の SaaS 製品間のテナントを単一のコントロールプレーンで管理する - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

複数の SaaS 製品間のテナントを単一のコントロールプレーンで管理する

作成者: Ramanna Avancha (AWS)、Jenifer Pascal (AWS)、Kishan Kavala (AWS)、および Anusha Mandava (AWS)

環境:PoC またはパイロット

テクノロジー: サーバーレス

AWS サービス: Amazon API Gateway、Amazon CognitoAWSLambda、AWSStep Functions、Amazon DynamoDB

[概要]

このパターンは、 AWS クラウドの単一のコントロールプレーンで、複数の Software as a Service (SaaS) 製品のテナントライフサイクルを管理する方法を示しています。提供されるリファレンスアーキテクチャは、組織が個々の SaaS 製品間で冗長な共有機能の実装を減らし、ガバナンスの効率性を大幅に向上させるのに役立ちます。

大手企業は、さまざまなビジネスユニット間で複数のSaaS製品を保有できます。多くの場合、これらの製品は、さまざまなサブスクリプションレベルの外部テナントが使用できるようにプロビジョニングする必要があります。共通のテナントソリューションがない場合、IT 管理者は、コア製品機能の開発に集中するのではなくAPIs、複数の SaaS で差別化されていない機能の管理に時間を費やす必要があります。

このパターンで提供される共通テナントソリューションは、次のような組織の共有 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 ライブラリとコードに関する知識

  • さまざまなタイプのユーザー (組織APIs、テナント、管理者、アプリケーションユーザー)、サブスクリプションモデル、テナント分離モデルなど、SaaS に関する知識

  • 組織のマルチプロダクト SaaS 要件とマルチテナントサブスクリプションに関する知識

制約事項

  • 一般的なテナントソリューションと個々の SaaS 製品との統合は、このパターンには含まれていません。

  • このパターンでは、Amazon Cognito サービスを 1 つの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 ステップ関数

ターゲット アーキテクチャ

次の図は、 AWS クラウドの 1 つのコントロールプレーン上の複数の SaaS 製品にわたってテナントライフサイクルを管理するワークフローの例を示しています。

単一のコントロールプレーンでテナントライフサイクルを管理するためのワークフロー。

この図表は、次のワークフローを示しています:

  1. AWS ユーザーは、APIゲートウェイエンドポイントを呼び出して、テナントプロビジョニング、製品プロビジョニング、または管理関連のアクションを開始します。

  2. ユーザーは、Amazon Cognito ユーザープールまたは別の IdP から取得したアクセストークンにより認証されます。

  3. 個々のプロビジョニングまたは管理タスクは、APIゲートウェイAPIエンドポイントと統合された Lambda 関数によって実行されます。

  4. APIs 共通テナントソリューションの管理 (テナント、製品、ユーザー用) では、必要な入力パラメータ、ヘッダー、トークンがすべて収集されます。次に、管理者は関連する Lambda 関数をAPIs呼び出します。

  5. IAM 管理関数APIsと Lambda 関数の両方に対する アクセス許可は、IAMサービスによって検証されます。

  6. Lambda 関数は、DynamoDB と Amazon S3 のカタログ (テナント、製品、ユーザー用) のデータを保存し、取得します。

  7. アクセス許可が検証されると、AWSStep Functions ワークフローが呼び出され、特定のタスクが実行されます。この図の例は、テナントのプロビジョニングワークフローを示しています。

  8. 個々の AWS Step Functions ワークフロータスクは、あらかじめ決められたワークフロー (ステートマシン) で実行されます。

  9. 各ワークフロータスクに関連付けられた Lambda 関数の実行に必要かつ重要なデータは、DynamoDB または Amazon S3 から取得されます。他のAWSリソースは、 AWS CloudFormation テンプレートを使用してプロビジョニングする必要がある場合があります。

  10. 必要に応じて、ワークフローは、特定の SaaS 製品の追加AWSリソースをその製品のAWSアカウントにプロビジョニングするリクエストを送信します。

  11. リクエストが成功または失敗すると、ワークフローはステータス更新をメッセージとして Amazon SNSトピックに発行します。

  12. Amazon SNS は Step Functions ワークフローの Amazon SNSトピックにサブスクライブされています。

  13. SNS 次に、Amazon はワークフローステータスの更新をAWSユーザーに送信します。

  14. API コールの監査証跡を含む各AWSサービスのアクションのログが に送信されます CloudWatch。ユースケース CloudWatch ごとに、 で特定のルールとアラームを設定できます。

  15. ログは監査の目的で Amazon S3 バケットにアーカイブされます。

自動化とスケール

このパターンでは、 CloudFormation テンプレートを使用して、共通テナントソリューションのデプロイを自動化します。テンプレートは、関連するリソースを迅速にスケールアップまたはスケールダウンするのにも役立ちます。

詳細については、「 ユーザーガイド」のAWS CloudFormation 「 テンプレートの使用AWS CloudFormation 」を参照してください。

ツール

AWS サービス

  • Amazon API Gateway は、、、および をあらゆる規模で作成、公開REST、保守、モニタリングHTTP、 WebSocket APIs保護するのに役立ちます。

  • 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) は、ウェブサーバーや E メールアドレスなど、パブリッシャーとクライアント間のメッセージ交換を調整および管理するのに役立ちます。

  • AWS Step Functions は、Lambda AWS 関数と他の サービスを組み合わせてビジネスクリティカルなアプリケーションを構築するのに役立つサーバーレスオーケストレーションAWSサービスです。

ベストプラクティス

このパターンのソリューションでは、単一のコントロールプレーンで複数のテナントのオンボーディングを管理し、複数のSaaS製品へのアクセスをプロビジョニングします。コントロールプレーンは、管理ユーザーがほかの 4 つの機能に固有のプレーンを管理することに役立ちます。

  • セキュリティプレーン

  • ワークフロープレーン

  • コミュニケーションプレーン

  • ログ記録とモニタリング

エピック

タスク説明必要なスキル

マルチテナント 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 Gateway APIsを作成して、以下を追加、削除、管理します。

  • [ユーザー]

  • テナント

  • 製品

詳細については、AWS「Lambda デベロッパーガイド」の「Amazon API Gateway での Lambda の使用」を参照してください。 AWS

アプリ開発者
タスク説明必要なスキル

AWS Step Functions ワークフローで実行する必要があるタスクを特定します。

以下の詳細な AWS Step Functions ワークフロー要件を特定して文書化します。

  • [ユーザー]

  • テナント

  • 製品

重要:主要な利害関係者が要件を承認していることを確認してください。

アプリ所有者

必要な AWS Step Functions ワークフローを作成します。

  1. AWS Step Functions でユーザー、テナント、製品に必要なワークフローを作成します。詳細については、AWS「Step Functions デベロッパーガイド」を参照してください。

  2. 再試行とエラー処理のメカニズムを特定します。詳細については、 AWSブログの「エラーの処理、再試行、Step Function State Machines へのアラートの追加」を参照してください。

  3. Lambda 関数でワークフロー天順を実装します。手順については、「Step Functions デベロッパーガイド」の「Lambda を使用する Step Functions ステートマシンの作成AWS」を参照してください。

  4. 必要に応じて、外部サービスを AWS Step Functions と統合します。

  5. 各ワークフローのステータスを DynamoDB テーブルに保持し、Amazon を使用して各ワークフローのステータスを伝えますSNS。

アプリ開発者、ビルドリード
タスク説明必要なスキル

Amazon SNSトピックを作成します。

Amazon SNSトピックを作成して、以下に関する通知を受信します。

  • ワークフローステータス

  • エラー

  • 再試行

詳細については、「Amazon SNS デベロッパーガイド」の「 SNSトピックの作成」を参照してください。

アプリ所有者、Cloud アーキテクト

エンドポイントを各 Amazon SNSトピックにサブスクライブします。

Amazon SNSトピックに発行されたメッセージを受信するには、各トピックにエンドポイントをサブスクライブする必要があります。

詳細については、「Amazon デベロッパーガイド」の「Amazon SNSトピックへのサブスクライブ」を参照してください。 SNS

アプリ開発者、Cloud アーキテクト
タスク説明必要なスキル

共通テナントソリューションの各コンポーネントの記録を有効にします。

作成した共通テナントソリューション内の各リソースの記録をコンポーネントレベルで有効にします。

手順については、以下を参照してください。

注: IAMポリシーを使用して、各リソースのログを一元化されたログ記録アカウントに統合できます。詳細については、「集中記録と複数アカウントのセキュリティガードレール」を参照してください。

アプリ開発者、AWSシステム管理者、クラウド管理者
タスク説明必要なスキル

CloudFormation テンプレートを作成します。

CloudFormation テンプレートを使用して、完全な共通テナントソリューションとそのすべてのコンポーネントのデプロイとメンテナンスを自動化します。

詳細については、「 AWS CloudFormation ユーザーガイド」を参照してください。

アプリ開発者、 DevOps エンジニア、 CloudFormation 開発者

関連リソース