Azure SignalR Service는 Azure 리소스에 대한 관리 ID의 요청에 권한을 부여하기 위해 Microsoft Entra ID를 지원합니다.
이 문서에서는 관리 ID를 사용하여 리소스에 대한 요청을 승인하도록 리소스 및 코드를 설정하는 방법을 설명합니다.
관리되는 ID 구성
첫 번째 단계는 앱 또는 가상 머신에서 관리 ID를 구성하는 것입니다.
- App Service 및 Azure Functions에 대한 관리 ID 구성
- Azure VM(가상 머신)에서 관리 ID 구성
- 가상 머신 확장 집합에서 Azure 리소스에 대한 관리 ID 구성
Azure Portal에서 역할 할당 추가
다음 단계에서는 Azure SignalR Service 리소스에 대한 서비스 주체 또는 관리 ID에 SignalR App Server 역할을 할당하는 방법을 설명합니다. 자세한 단계는 Azure Portal을 사용하여 Azure 역할 할당을 참조하세요.
참고 항목
관리 그룹, 구독, 리소스 그룹 또는 단일 리소스를 비롯한 모든 범위에 역할을 할당할 수 있습니다. 범위에 대한 자세한 내용은 Azure RBAC의 범위 이해를 참조하세요.
Azure Portal에서 Azure SignalR Service 리소스로 이동합니다.
왼쪽 창에서 IAM(액세스 제어)를 선택합니다.
추가>역할 할당 추가를 선택합니다.
역할 탭에서 SignalR 앱 서버를 선택합니다. 다른 Azure SignalR Service 기본 제공 역할은 시나리오에 따라 달라집니다.
역할 Description 사용 사례 SignalR App Server 서버 연결을 만들고 키를 생성하는 API에 액세스합니다. Azure SignalR 리소스가 기본 모드로 실행되는 앱 서버에 가장 일반적으로 사용됩니다. SignalR Service 소유자 REST API, 서버 연결을 만드는 API 및 키/토큰을 생성하는 API를 비롯한 모든 데이터 평면 API에 대한 모든 액세스 권한 서버리스 모드에서 실행되는 Azure SignalR Service 리소스가 있는 협상 서버에 사용됩니다. REST API 권한과 인증 API 권한이 모두 필요합니다. SignalR REST API 소유자 데이터 평면 REST API에 대한 모든 권한. Azure SignalR Management SDK에서 연결 및 그룹을 관리하는 데 사용되지만 서버 연결을 만들거나 협상 요청을 처리하지는 않습니다. SignalR REST API 판독기 데이터 평면 REST API에 대한 읽기 전용 액세스입니다. 읽기 전용 REST API를 호출하는 모니터링 도구를 작성할 때 사용됩니다. 다음을 선택합니다.
Microsoft Entra 애플리케이션의 경우:
- 행에 대한 액세스 할당 에서 사용자, 그룹 또는 서비스 주체를 선택합니다.
- 멤버 행에서 멤버를 선택한 다음 팝업 창에서 ID를 선택합니다.
Azure 리소스에 대한 관리 ID의 경우:
- 행 액세스 할당에서 관리형 ID를 선택합니다.
- 멤버 행에서 멤버를 선택한 다음 팝업 창에서 애플리케이션을 선택합니다.
다음을 선택합니다.
과제를 검토한 다음 검토 + 할당 을 선택하여 역할 할당을 확인합니다.
Important
새로 추가된 역할 할당이 전파되는 데 최대 30분이 걸릴 수 있습니다.
Azure 역할을 할당하고 관리하는 방법에 대한 자세한 내용은 다음을 참조하세요.
- Azure Portal을 사용하여 Azure 역할 할당
- REST API를 사용하여 Azure 역할 할당
- Azure PowerShell을 사용하여 Azure 역할 할당
- Azure CLI를 사용하여 Azure 역할 할당
- Azure Resource Manager 템플릿을 사용하여 Azure 역할 할당
Microsoft.Azure.SignalR 앱 서버 SDK를 C#용으로 구성하기
Azure SignalR 서버 SDK는 Azure.Identity 라이브러리 를 활용하여 리소스에 연결하기 위한 토큰을 생성합니다. 자세한 사용량을 탐색하려면 클릭합니다.
시스템 할당 ID 사용
services.AddSignalR().AddAzureSignalR(option =>
{
option.Endpoints = new ServiceEndpoint[]
{
new ServiceEndpoint(new Uri("https://<resource-name>.service.signalr.net"), new ManagedIdentityCredential()),
};
});
사용자 할당 ID 사용
Important
개체(보안 주체) ID가 아닌 클라이언트 ID 사용
services.AddSignalR().AddAzureSignalR(option =>
{
option.Endpoints = new ServiceEndpoint[]
{
var clientId = "<your-user-assigned-identity-client-id>";
new ServiceEndpoint(new Uri("https://<resource-name>.service.signalr.net"), new ManagedIdentityCredential(clientId)),
};
});
이 샘플 링크에서 더 많은 샘플을 찾을 수 있습니다.
여러 엔드포인트 사용
자격 증명은 엔드포인트에 따라 다를 수 있습니다.
샘플에서는 Azure SignalR SDK가 시스템 할당 관리 ID를 사용하여 resource1에 연결하고, 사용자 할당 관리 ID를 사용하여 resource2에 연결합니다.
services.AddSignalR().AddAzureSignalR(option =>
{
option.Endpoints = new ServiceEndpoint[]
{
var clientId = "<your-user-assigned-identity-client-id>";
new ServiceEndpoint(new Uri("https://<resource1>.service.signalr.net"), new ManagedIdentityCredential()),
new ServiceEndpoint(new Uri("https://<resource2>.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
다음은 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를 사용하려면 연결 이름 접두사를 사용하여 clientId 및 serviceUri 키 외에 credential를 할당해야 합니다. 다음은 애플리케이션 설정에 대한 샘플입니다.
<CONNECTION_NAME_PREFIX>__serviceUri = https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
<CONNECTION_NAME_PREFIX>__credential = managedidentity
<CONNECTION_NAME_PREFIX>__clientId = <CLIENT_ID>
다음 단계
다음 관련 문서를 참조하세요.