マルチテナント アプリケーションの ID 管理に関するガイド

執筆者: Mike Wasson (Senior Content Developer, AzureCAT patterns & practices)
このポストは、3 月 7 日に投稿された Guidance for Identity Management in Multitenant Applications の翻訳です。

マイクロソフトの Patterns & Practices グループは、Azure でのマルチテナント アプリケーションの ID 管理 (英語) に関する新しいガイドを公開しました。
マルチテナント アプリケーションを構築する場合、すべてのユーザーがテナントに所属しているため、ユーザー ID の管理が最初の課題となります。各ユーザーが組織の資格情報でサインインできるようにする必要があります。たとえば、Contoso に勤める Alice が alice@contoso.com というアカウントでサインインしたとします。
Alice がサインインしたら、Contoso のデータへのアクセスを許可し、他の組織のデータにはアクセスできないようにする必要があります。つまり、マルチテナントである場合は、承認ポリシーも必要になります。

他にも、次のような考慮事項があります。

• すべての組織のすべてのユーザーにアプリへのサインインを許可するのか、最初に組織のサインアップを必要とするのか。
• すべてのユーザーに同じ権限を付与するのか、アプリ内でユーザーごとに「管理者」「発行者」「閲覧者」などのロールを割り当てるのか。

Azure Active Directory (Azure AD) は、これらすべてのシナリオに対応する優れた機能を備えています (現時点では、このガイドは Azure AD のテナントのみに対応しています)。
このプロジェクトでは、マルチテナント アプリケーションを実装するほか、ガイダンス用ドキュメント (英語) が提供されます。Tailspin という架空の企業では、オンライン アンケートを作成するアプリケーション (英語) を開発しました。このアプリケーションは ASP.NET Core 1.0 (英語) (旧称 ASP.NET 5) 上に構築されているため、ASP.NET の最新の認証機能および承認機能を使用できます。

注: このプロジェクトは特に ID 管理に注目したもので、データのパーティション分割などの他の問題は扱っていません。

このアンケート作成アプリケーションは、Web アプリとバックエンド Web API で構成されています。以下の図に、アプリケーションの認証プロセスの概要を示します。

5b483fa1-fb53-40a6-8e5e-d0f9bf52afbd

このアプリケーションは Tailspin の Azure AD ディレクトリに登録されています。このため、アプリケーションに代わって Azure AD がユーザー認証を実行できます。Alice が Contoso からこの Web アプリにサインインすると、Azure AD にリダイレクトされます。Azure AD で組織の資格情報を入力すると、Alice の資格情報 (名前とメール アドレス) が Web アプリに送信されます。同時に Web アプリはアクセス トークンを取得し、バックエンド Web API を呼び出せるようになります。

この実装には、セキュリティやパフォーマンスなどの複数の分野にまたがる問題を解決する興味深い機能があります。

• OAuth のクライアント シークレットに代わる安全性の高い手法としてクライアント アサーションを使用
Azure Key Vault からアプリケーション設定を読み込み、接続文字列などの機密データを保護
• 分散キャッシュに OAuth トークンをキャッシュし、Web サーバー間で共有

このガイド (英語) では、認証、アプリケーションのロール、ロールベースおよびリソースベースの認証、バックエンド Web API への認証など、さまざまなトピックを扱っています。