Microsoft Entra 관리 ID를 사용하여 Azure SignalR Service 리소스에 대한 요청 권한 부여
Azure SignalR Service는 Microsoft Entra 관리 ID의 요청을 권한 부여하기 위해 Microsoft Entra ID를 지원합니다.
이 문서에서는 관리 ID에서 리소스에 대한 요청에 권한을 부여하도록 Azure SignalR Service 리소스 및 코드를 구성하는 방법을 보여 줍니다.
관리되는 ID 구성
첫 번째 단계는 관리 ID를 구성하는 것입니다.
이 예에서는 Azure Portal을 사용하여 App Service에서 시스템 할당 관리 ID를 구성하는 방법을 보여 줍니다.
왼쪽 탐색 창의 설정 그룹 아래에 있는 Azure Portal 앱의 설정에 액세스합니다.
ID를 선택합니다.
시스템 할당 탭에서 상태를 켜기로 바꿉니다. 저장을 클릭합니다.
Azure App Service 및 Azure Functions에 대해 다른 방법으로 관리 ID를 구성하는 방법을 자세히 알아보려면 App Service 및 Azure Functions에 대해 관리 ID를 사용하는 방법을 참조하세요.
Azure VM에서 관리 ID 구성에 대해 자세히 알아보려면 Azure VM(Virtual Machines)에서 관리 ID 구성을 참조하세요.
Azure Portal에서 역할 할당 추가
다음 단계에서는 Azure SignalR Service 리소스를 통해 시스템 할당 ID에 SignalR 앱 서버 역할을 할당하는 방법을 설명합니다. 세부 단계에 대해서는 Azure Portal을 사용하여 Azure 역할 할당을 참조하세요.
참고 항목
관리 그룹, 구독, 리소스 그룹 또는 단일 리소스를 비롯한 모든 범위에 역할을 할당할 수 있습니다. 범위에 대한 자세한 내용은 Azure RBAC의 범위 이해를 참조하세요.
Azure Portal에서 Azure SignalR Service 리소스로 이동합니다.
액세스 제어(IAM) 를 선택합니다.
추가>역할 할당 추가를 선택합니다.
역할 탭에서 SignalR 앱 서버를 선택합니다.
멤버 탭에서 관리 ID를 선택한 다음 멤버 선택을 선택합니다.
Azure 구독을 선택합니다.
시스템이 할당한 관리 ID를 선택하고 역할을 할당할 가상 머신을 검색한 다음, 선택합니다.
검토 + 할당 탭에서 검토 + 할당을 선택하여 역할을 할당합니다.
Important
Azure 역할 할당이 전파되는 데 최대 30분이 걸릴 수 있습니다.
Azure 역할을 할당하고 관리하는 방법에 대해 자세히 알아보려면 다음 문서를 참조하세요.
- Azure Portal을 사용하여 Azure 역할 할당
- REST API를 사용하여 Azure 역할 할당
- Azure PowerShell을 사용하여 Azure 역할 할당
- Azure CLI를 사용하여 Azure 역할 할당
- Azure Resource Manager 템플릿을 사용하여 Azure 역할 할당
앱 구성
앱 서버
시스템 할당 ID 사용
Azure SignalR SDK는 ID 기반 연결 문자열을 지원합니다. 구성이 App Server의 환경 변수에 설정되어 있는 경우 App Server를 다시 배포할 필요 없이 구성 변경만으로 Access Key에서 MSI로 마이그레이션할 수 있습니다. 예를 들어 App Server의 환경 변수 Azure__SignalR__ConnectionString
을 Endpoint=https://<resource1>.service.signalr.net;AuthType=azure.msi;Version=1.0;
로 업데이트합니다. 또는 DI 코드에서 설정합니다.
services.AddSignalR().AddAzureSignalR("Endpoint=https://<resource1>.service.signalr.net;AuthType=azure.msi;Version=1.0;");
이외에도 DefaultAzureCredential 또는 ManagedIdentityCredential을 사용하여 Azure SignalR Service 엔드포인트를 구성할 수 있습니다. 가장 좋은 방법은 ManagedIdentityCredential
을 직접 사용하는 것입니다.
시스템이 할당한 관리 ID가 기본적으로 사용되지만, DefaultAzureCredential
을 사용하는 경우 EnvironmentCredential이 보존하는 환경 변수를 구성하지 않도록 합니다. 그렇지 않으면 Azure SignalR Service는 EnvironmentCredential
을 사용하여 요청을 수행하며 일반적으로 Unauthorized
응답이 발생합니다.
Important
이러한 방식으로 환경 변수에서 Azure__SignalR__ConnectionString
이 있으면 제거합니다. Azure__SignalR__ConnectionString
은 첫 번째 우선 순위로 기본 ServiceEndpoint
를 빌드하는 데 사용되며 App Server에서 Access Key를 예기치 않게 사용하도록 유도할 수 있습니다.
services.AddSignalR().AddAzureSignalR(option =>
{
option.Endpoints = new ServiceEndpoint[]
{
new ServiceEndpoint(new Uri("https://<resource1>.service.signalr.net"), new ManagedIdentityCredential()),
};
});
사용자 할당 ID 사용
ManagedIdentityCredential
개체를 만드는 동안 ClientId
를 제공합니다.
Important
둘 다 GUID인 경우에도 개체(주체) ID가 아닌 클라이언트 ID를 사용합니다.
ID 기반 연결 문자열 사용
services.AddSignalR().AddAzureSignalR("Endpoint=https://<resource1>.service.signalr.net;AuthType=azure.msi;ClientId=<your-user-identity-client-id>;Version=1.0;");
또는 ManagedIdentityCredential
을 사용하여 ServiceEndpoint
를 빌드합니다.
services.AddSignalR().AddAzureSignalR(option =>
{
option.Endpoints = new ServiceEndpoint[]
{
var clientId = "<your-user-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
) 및 구분 기호로 시작해야 합니다. 구분 기호는 포털에서는 밑줄(__
)이고 로컬에서는 콜론(:
)입니다. 바인딩 속성 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>
다음 단계
다음 관련 문서를 참조하세요.