一元化されたアプリ構成とセキュリティ

Microsoft Entra ID
Azure App Configuration
Azure Key Vault

ソリューションのアイデア

このアーティクルはソリューションのアイデアです。 このコンテンツにさらに多くの情報 (想定されるユース ケース、代替サービス、実装に関する考慮事項、価格ガイダンスなど) の掲載をご希望の方は、GitHub のフィードバックでお知らせください。

この記事では、分散環境で堅牢で、かつスケーラブルなアプリケーションを作成するためのソリューションの概要について説明します。 このソリューションでは、Azure App Configuration と Azure Key Vault を使用して、アプリの構成設定、機能フラグ、セキュリティで保護されたアクセス設定を 1 か所で管理および格納します。

アーキテクチャ

次の図は、開発および Azure 環境でアプリを管理し、セキュリティで保護するために App Configuration と Key Vault をどのように連携させることができるかを示しています。

開発環境

開発環境では、アプリは Visual Studio または Azure CLI のバージョン 2.0 経由で ID を使ってサインインし、認証要求を Microsoft Entra ID に送信します。

開発環境でアプリがサインインして認証する方法を示すアーキテクチャの図。

このアーキテクチャの Visio ファイルをダウンロードします。

Azure ステージングまたは運用環境

Azure ステージングおよび運用環境では、サインインと認証に マネージド ID を使用します。

ステージングまたは運用環境でアプリがサインインして認証する方法を示すアーキテクチャの図。

このアーキテクチャの Visio ファイルをダウンロードします。

データフロー

  1. アプリケーションが、Visual Studio でのデバッグ中に認証要求を送信するか、Azure の MSI を使用して認証します。
  2. 認証が成功すると、Microsoft Entra ID はアクセス トークンを返します。
  3. App Configuration SDK がそのアクセス トークンと共に要求を送信して、アプリのキー コンテナーに関するアプリの App Configuration Key Vault の secretURI 値を読み取ります。
  4. 認可が成功すると、App Configuration が構成値を送信します。
  5. アプリは、サインイン ID を利用して Key Vault に要求を送信し、App Configuration が送信した secretURI のアプリケーション シークレットを取得します。
  6. 認可が成功すると、Key Vault からシークレット値が返されます。

コンポーネント

  • Microsoft Entra ID は、ID を管理およびセキュリティ保護するためのユニバーサル プラットフォームです。
  • App Configuration は、すべての Azure アプリの構成をユニバーサルなホストされた場所に格納するための方法を提供します。
  • マネージド ID は、Microsoft Entra 認証をサポートするリソースに接続するときに使う ID をアプリケーションに提供します。
  • Key Vault は、クラウド アプリやサービスによって使用される暗号化キーなどのシークレットを保護します。

シナリオの詳細

クラウドベースのアプリケーションは多くの場合、複数リージョンにわたる複数の仮想マシンまたはコンテナーで実行され、複数の外部サービスを使用します。 分散環境で堅牢かつスケーラブルなアプリケーションを作成することは、大きな課題です。

App Configuration を使用すると、アプリの構成設定、機能フラグ、セキュリティで保護されたアクセス設定のすべてを 1 か所で管理および格納できます。 App Configuration は、安全なアクセスのためのパスワード、キー、シークレットを格納する Key Vault とシームレスに連携します。

考えられるユース ケース

どのアプリケーションでも App Configuration を使用できますが、最も大きなメリットがあるのは次の種類のアプリケーションです。

  • Azure Kubernetes Service (AKS)、または 1 つ以上のリージョンにデプロイされるその他のコンテナー化されたアプリ上で実行されるマイクロサービス。
  • サーバーレス アプリ (Azure Functions や、その他のイベント駆動型のステートレスなコンピューティング アプリなど)。
  • 継続的配置 (CD) パイプラインを使用するアプリ。

考慮事項

以降の考慮事項には、ワークロードの品質向上に使用できる一連の基本原則である Azure "Well-Architected Framework" の要素が組み込まれています。 詳細については、「Microsoft Azure Well-Architected Framework」を参照してください。

  • 各環境 (開発、Azure 実稼働前、Azure 運用) のアプリケーションごとに異なるキー コンテナーを使用することが最善です。 異なるコンテナーを使用すると、複数環境でのシークレットの共有を防止でき、違反が発生した場合の脅威が軽減されます。

  • これらのシナリオを使用するには、サインイン ID に App Configuration リソースの App Configuration データ閲覧者ロールが付与され、かつ Key Vault 内のシークレットを取得するための明示的なアクセス ポリシーが設定されている必要があります。

共同作成者

この記事は、Microsoft によって保守されています。 当初の寄稿者は以下のとおりです。

プリンシパル作成者:

  • Sowmyan Soman | プリンシパル クラウド ソリューション アーキテクト

次のステップ

コンポーネントのテクノロジの詳細については、次を参照してください。