Microsoft Entra マネージド ID を使用して Azure SignalR Service リソースへの要求を承認する
Azure SignalR Service では、Microsoft Entra マネージド ID からの要求を承認するための Microsoft Entra ID がサポートされています。
この記事では、Azure SignalR Service リソースとコードを構成して、マネージド ID からリソースへの要求を承認する方法について説明します。
マネージド ID の構成
最初の手順では、マネージド ID を構成します。
この例では、Azure portal を使用して、仮想マシン (VM) でシステム割り当てマネージド ID を構成する方法を示します。
Azure portal 上で、VM を検索して選択します。
[設定] にある [ID] を選択します。
[システム割り当て済み] タブで、 [状態] を [オン] に切り替えます。
[保存] ボタンを選択して変更を確定します。
ユーザー割り当てマネージド ID を作成する方法については、「ユーザー割り当てマネージド ID を作成する」を参照してください。
マネージド ID の構成の詳細については、次のいずれかの記事を参照してください。
- Azure portal を使用して Azure VM で Azure リソースのマネージド ID を構成する
- PowerShell を使用して Azure VM 上の Azure リソースのマネージド ID を構成する
- Azure CLI を使用して Azure VM 上に Azure リソースのマネージド ID を構成する
- テンプレートを使用して Azure VM で Azure リソースのマネージド ID を構成する
- Azure SDK で Azure リソースのマネージド ID を使用して VM を構成する
Azure App Service と Azure Functions 用のマネージド ID を構成する方法については、「App Service と Azure Functions でマネージド ID を使用する方法」を参照してください。
Azure portal でロールの割り当てを追加する
以下の手順では、Azure SignalR Service リソース上のシステム割り当て ID に SignalR App Server ロールを割り当てる方法を説明します。 詳細な手順については、「Azure portal を使用して Azure ロールを割り当てる」を参照してください。
Note
ロールは、管理グループ、サブスクリプション、リソース グループ、または 1 つのリソースを含む任意のスコープに割り当てることができます。 スコープの詳細については、「Azure RBAC のスコープについて」を参照してください。
Azure portal で、Azure SignalR Service リソースに移動します。
[アクセス制御 (IAM)] を選択します。
[追加] > [ロール割り当ての追加] の順に選択します。
[ロール] タブで、[SignalR App Server]\(SignalR アプリ サーバー\) を選択します。
[メンバー] タブで、[マネージド ID] を選択し、[メンバーの選択] を選択します。
Azure サブスクリプションを選択します。
[システム割り当てマネージド ID] を選び、ロールを割り当てる仮想マシンを検索して選びます。
[確認と 割り当て] タブで、 [確認と割り当て] を選択して ロールを割り当てます。
重要
Azure ロールの割り当ての反映には最大で 30 分かかる可能性があります。
Azure ロールを割り当てて管理する方法の詳細については、次の記事を参照してください。
- Azure portal を使用して Azure ロールを割り当てる
- REST API を使用して Azure ロールを割り当てる
- Azure PowerShell を使用して Azure ロールを割り当てる
- Azure CLI を使用して Azure ロールを割り当てる
- Azure Resource Manager テンプレートを使用して Azure でのロールを割り当てる
アプリの構成
アプリ サーバー
システム割り当て ID を使用する
DefaultAzureCredential または ManagedIdentityCredential のいずれかを使用して、Azure SignalR Service エンドポイントを構成できます。 ベスト プラクティスは、ManagedIdentityCredential
を直接使用する方法です。
システム割り当てマネージド ID は、既定で使用されますが、DefaultAzureCredential
を使用している場合は、EnvironmentCredential が予約するすべての環境変数を構成しないようにしてください。 それ以外の場合、Azure SignalR Service はフォールバックして、EnvironmentCredential
を使用して要求を行います。通常、これは Unauthorized
応答が返されます。
services.AddSignalR().AddAzureSignalR(option =>
{
option.Endpoints = new ServiceEndpoint[]
{
new ServiceEndpoint(new Uri("https://<resource1>.service.signalr.net"), new ManagedIdentityCredential()),
};
});
ユーザー割り当て ID を使用する
ManagedIdentityCredential
オブジェクトの作成中に、ClientId
を指定します。
重要
オブジェクト (プリンシパル) ID ではなく、クライアント ID を使用します。両方とも GUID である場合でも同様です。
services.AddSignalR().AddAzureSignalR(option =>
{
option.Endpoints = new ServiceEndpoint[]
{
var clientId = "<your identity client id>";
new ServiceEndpoint(new Uri("https://<resource1>.service.signalr.net"), new ManagedIdentityCredential(clientId)),
};
Azure Functions における Azure SignalR Service のバインド
Azure Functions の Azure SignalR Service バインドでは、ポータルでアプリケーション設定を使用するか、ローカルで local.settings.json を使用して、Azure SignalR Service リソースにアクセスするようにマネージド ID を構成します。
ID を構成するには、キーと値のペアのグループが必要な場合があります。 すべてのキーと値のペアのキーは、接続名プレフィックス (既定値は AzureSignalRConnectionString
) と区切り記号で始まる必要があります。 区切り記号は、ポータルではアンダースコア (__
)、ローカルではコロン (:
) です。 プレフィックスは、binding プロパティ ConnectionStringSetting
を使用してカスタマイズできます。
システム割り当て ID を使用する
サービス URI のみを構成する場合は、DefaultAzureCredential
クラスを使用します。 このクラスは、Azure とローカルの開発環境で同じ構成を共有する場合に便利です。 その仕組みについては、「DefaultAzureCredential」を参照してください。
Azure portal で、次の例を使用して DefaultAzureCredential
を構成します。 これらの環境変数を構成しない場合は、システム割り当て ID が認証に使用されます。
<CONNECTION_NAME_PREFIX>__serviceUri=https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
local.settings.json ファイル内の DefaultAzureCredential
の構成サンプルを次に示します。 ローカル スコープでは、マネージド ID はありません。 Visual Studio、Azure CLI、Azure PowerShell アカウントを使用した認証が順番に試行されます。
{
"Values": {
"<CONNECTION_NAME_PREFIX>:serviceUri": "https://<SIGNALR_RESOURCE_NAME>.service.signalr.net"
}
}
システム割り当て ID を個別に使用し、他の環境変数の影響を受けずに使用する場合は、接続名プレフィックスを持つ credential
キーを managedidentity
に設定します。 アプリケーション設定のサンプルを次に示します。
<CONNECTION_NAME_PREFIX>__serviceUri = https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
<CONNECTION_NAME_PREFIX>__credential = managedidentity
ユーザー割り当て ID を使用する
ユーザー割り当て ID を使用する場合は、接続名プレフィックスを含め、serviceUri
キーと credential
キーに加えて clientId
を割り当てる必要があります。 アプリケーション設定のサンプルを次に示します。
<CONNECTION_NAME_PREFIX>__serviceUri = https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
<CONNECTION_NAME_PREFIX>__credential = managedidentity
<CONNECTION_NAME_PREFIX>__clientId = <CLIENT_ID>
次のステップ
次の関連記事を参照してください。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示