Azure SignalR Service のマネージド ID
Azure SignalR Service では、Microsoft Entra ID のマネージド ID を使って、次のことができます。
- アクセス トークンを取得する。
- Azure Key Vault 内のシークレットにアクセスする。
サービスでサポートされるマネージド ID は 1 つだけです。 システム割り当てまたはユーザー割り当ての ID を作成できます。 システム割り当て ID は Azure SignalR Service インスタンス専用であり、インスタンスを削除すると削除されます。 ユーザー割り当て ID は、Azure SignalR Service リソースとは別に管理されます。
この記事では、Azure SignalR Service のマネージド ID を作成する方法と、サーバーレス シナリオでこの ID を使用する方法について説明します。
前提条件
マネージド ID を使用するには、次の項目が必要です。
- Azure サブスクリプション。 Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
- Azure SignalR Service リソース。
- Azure Key Vault リソースなど、アクセスするアップストリーム リソース。
- Azure Functions アプリ (関数アプリ)。
Azure SignalR Service にマネージド ID を追加する
マネージド ID は、Azure portal または Azure CLI で Azure SignalR Service に追加できます。 この記事では、Azure portal で Azure SignalR Service にマネージド ID を追加する方法について説明します。
システム割り当て ID を追加する
システム割り当てマネージド ID を Azure SignalR Service インスタンスに追加するには:
Azure portal で、Azure SignalR Service インスタンスに移動します。
[ID] を選択します。
[システム割り当て済み] タブで、 [状態] を [オン] に切り替えます。
[保存] を選択します。
はい を選択して、変更を確認します。
ユーザー割り当て ID を追加する
Azure SignalR Service インスタンスにユーザー割り当て ID を追加するには、ID を作成してからサービスに追加する必要があります。
以下の手順に従って、ユーザー割り当てマネージド ID リソースを作成します。
Azure portal で、Azure SignalR Service インスタンスに移動します。
[ID] を選択します。
割り当てられたユーザー タブで、追加 を選択します。
[ユーザー割り当て済みマネージド ID] ドロップダウン メニューで ID を選びます。
[追加] を選択します。
サーバーレス シナリオでマネージド ID を使用する
Azure SignalR Service はフル マネージド サービスです。 マネージド ID を使用してアクセス トークンを取得します。 サーバーレス シナリオでは、サービスによってアップストリーム要求の Authorization
ヘッダーにアクセス トークンが追加されます。
アップストリーム設定でマネージド ID 認証を有効にする
システム割り当て ID またはユーザー割り当て ID を Azure SignalR Service インスタンスに追加したら、アップストリーム エンドポイントの設定でマネージド ID 認証を有効にすることができます。
Azure portal で、Azure SignalR Service インスタンスに移動します。
メニューから [設定] を選択します。
[サーバーレス] サービス モードを選択します。
[アップストリームの URL パターンを追加してください] テキスト ボックスにアップストリーム エンドポイントの URL パターンを入力します。 「URL テンプレートの設定」を参照してください。
[Add one Upstream Setting] (1 つのアップストリーム設定の追加) を選び、任意のアスタリスクを選びます。
[アップストリーム設定] で、アップストリーム エンドポイント設定を構成します。
マネージド ID 認証設定で、[発行されたトークン内の対象ユーザー] に対して、ターゲット リソースを指定できます。 リソースは取得したアクセス トークンの
aud
要求になります。これは、アップストリーム エンドポイントの検証の一部として使用できます。 次のいずれかの形式のリソースを使用できます。- サービス プリンシパルのアプリケーション (クライアント) ID。
- サービス プリンシパルのアプリケーション ID URI。
重要
空のリソースを使用すると、実際に Microsoft Graph をターゲットとするトークンを取得します。 現在、Microsoft Graph ではトークン暗号化を有効にしているため、Microsoft Graph 以外のアプリケーションでトークンを認証することはできません。 一般的な方法では、アップストリーム ターゲットを表すサービス プリンシパルを常に作成する必要があります。 そして、作成したそのサービス プリンシパルのアプリケーション ID またはアプリケーション ID URI を設定します。
関数アプリでの認証
Azure portal を使うと、コードを変更せずに関数アプリのアクセス検証を簡単に設定できます。
Azure portal で関数アプリに移動します。
コマンドメニューから 認証 を選択します。
[ID プロバイダーの追加] を選択します。
[基本] タブの [ID プロバイダー] ドロップダウン リストで [Microsoft] を選びます。
[要求が認証されない場合に実行するアクション] で、[Microsoft Entra ID でのログイン] を選びます。
既定では、新しい登録を作成するオプションが選択されています。 登録の名前を変更できます。 Microsoft Entra プロバイダーを有効にする方法の詳細については、「Microsoft Entra ID サインインを使用するように App Service アプリまたは Azure Functions アプリを構成する」を参照してください。
Azure SignalR Service に移動し、手順に従って、システム割り当て ID またはユーザー割り当て ID を追加します。
Azure SignalR Service で [アップストリームの設定] に移動し、[マネージド ID の使用] を選び、[既存のアプリケーションから選択] を選びます。 以前に作成したアプリケーションを選びます。
これらの設定を構成した後、関数アプリでは、ヘッダーにアクセス トークンがない要求が拒否されるようになります。
アクセス トークンを検証する
WebApp または Azure Functions を使用していない場合は、トークンを検証することもできます。
Authorization
ヘッダー内のトークンは、Microsoft ID プラットフォームのアクセス トークンです。
アクセス トークンを検証するには、アプリで対象ユーザーと署名トークンも検証する必要があります。 これらのトークンの検証は、OpenID 探索ドキュメント内の値に対して行ってください。 たとえば、テナントに依存しないバージョンのドキュメントを確認してください。
Microsoft Entra ミドルウェアには、アクセス トークンを検証するための組み込み機能があります。 Microsoft ID プラットフォーム コード サンプルを参照し、選んだ言語のものを見つけることができます。
トークンの検証を処理する方法を示すライブラリとコード サンプルが用意されています。 また、JSON Web Token (JWT) 検証に使用できるオープンソースのパートナー ライブラリもいくつかあります。 ほとんどすべてのプラットフォームと言語に、少なくとも 1 つのオプションがあります。 Microsoft Entra 認証ライブラリとコード サンプルの詳細については、「Microsoft ID プラットフォームの認証ライブラリ」を参照してください。
Key Vault 参照にマネージド ID を使う
Azure SignalR Service では、Key Vault にアクセスし、マネージド ID を使ってシークレットを取得することができます。
- Azure SignalR Service インスタンスにシステム割り当て ID またはユーザー割り当て ID を追加します。
- Key Vault のアクセス ポリシーで、マネージド ID に対する読み取りアクセス許可をシークレットに付与します。 Azure portal を使った Key Vault アクセス ポリシーの割り当てに関する記事を参照してください。
現在、この機能を使って、アップストリーム URL パターンのシークレットを参照できます。