Azure SignalR Service에 대해 Microsoft Entra ID를 사용하여 액세스 권한 부여
Azure SignalR Service는 리소스에 대한 요청을 권한 부여하기 위해 Microsoft Entra ID를 지원합니다. Microsoft Entra ID를 사용하면 RBAC(역할 기반 액세스 제어)를 사용하여 보안 주체에 권한을 부여할 수 있습니다. 보안 주체는 사용자/리소스 그룹, 애플리케이션 또는 시스템 할당 ID 및 사용자 할당 ID와 같은 서비스 주체입니다.
Microsoft Entra ID는 보안 주체를 인증하고 OAuth 2.0 토큰을 반환합니다. 그런 다음 토큰은 Azure SignalR Service 리소스에 대한 요청에 권한을 부여하는 데 사용됩니다.
Microsoft Entra ID를 사용하여 Azure SignalR Service에 대한 요청을 권한 부여하면 액세스 키 권한 부여에 비해 뛰어난 보안과 사용 편의성이 제공됩니다. 최소한의 필수 권한으로 액세스가 보장되므로 가능하면 권한 부여 시 Microsoft Entra ID를 사용하는 것이 좋습니다.
Important
로컬 인증을 사용하지 않도록 설정하면 다음과 같은 결과가 발생할 수 있습니다.
- 현재 액세스 키 집합은 영구적으로 삭제됩니다.
- 현재 액세스 키 집합으로 서명된 토큰은 사용할 수 없게 됩니다.
Microsoft Entra ID 개요
보안 주체가 Azure SignalR Service 리소스에 액세스하려고 하면 요청에 권한이 부여되어야 합니다. Microsoft Entra ID를 사용하여 리소스에 액세스하려면 다음 두 단계가 필요합니다.
- Microsoft Entra ID는 보안 주체를 인증한 다음 OAuth 2.0 토큰을 반환합니다.
- 토큰은 요청 권한 부여를 위해 Azure SignalR Service 리소스에 대한 요청의 일부로 전달됩니다.
Microsoft Entra ID를 사용한 클라이언트 쪽 인증
액세스 키를 사용하면 앱 서버(또는 함수 앱)와 Azure SignalR Service 리소스 간에 키가 공유됩니다. Azure SignalR Service는 공유 키를 사용하여 클라이언트 연결 요청을 인증합니다.
Microsoft Entra ID를 사용하는 경우 공유 키가 없습니다. 대신 Azure SignalR Service는 클라이언트 연결에 사용되는 서명 토큰에 임시 액세스 키를 사용합니다. 이 워크플로에는 네 단계가 포함되어 있습니다.
- 보안 주체는 자신을 인증하기 위해 Microsoft Entra ID의 OAuth 2.0 토큰이 필요합니다.
- 보안 주체는 SignalR 인증 API를 호출하여 임시 액세스 키를 가져옵니다.
- 협상 중에 보안 주체가 클라이언트 연결을 위해 임시 액세스 키를 사용하여 클라이언트 토큰에 서명합니다.
- 클라이언트는 클라이언트 토큰을 사용하여 Azure SignalR Service 리소스에 연결합니다.
임시 액세스 키는 90분 후에 만료됩니다. 한 시간에 한 번씩 새 것을 구입하고 오래된 것을 회전하는 것이 좋습니다.
워크플로는 앱 서버용 Azure SignalR Service SDK에 빌드되어 있습니다.
액세스 권한을 위한 Azure 역할 할당
Microsoft Entra ID는 Azure RBAC를 통해 보안 리소스에 대한 액세스 권한을 권한 부여합니다. Azure SignalR Service는 Azure SignalR Service 리소스에 액세스하기 위한 공통 권한 집합을 포함하는 Azure 기본 제공 역할 집합을 정의합니다. Azure SignalR Service 리소스에 액세스하기 위한 사용자 지정 역할을 정의할 수도 있습니다.
리소스 범위
보안 주체에 Azure RBAC 역할을 할당하기 전에 보안 주체에 지정해야 할 액세스 범위를 결정해야 할 수 있습니다. 가능한 가장 좁은 범위만 부여하는 것이 좋습니다. 더 광범위한 범위에서 정의된 Azure RBAC 역할은 그 아래에 있는 리소스에 상속됩니다.
가장 좁은 범위부터 시작하여 다음 수준에서 Azure SignalR Service 리소스에 대한 액세스 범위를 지정할 수 있습니다.
범위 | 설명 |
---|---|
개별 리소스 | 대상 리소스에만 적용됩니다. |
Resource group | 리소스 그룹의 모든 리소스에 적용됩니다. |
구독 | 구독에 있는 모든 리소스에 적용됩니다. |
관리 그룹 | 관리 그룹에 포함된 구독의 모든 리소스에 적용됩니다. |
Azure SignalR Service 리소스에 대한 Azure 기본 제공 역할
역할 | 설명 | 사용 사례 |
---|---|---|
SignalR 앱 서버 | WebSocket 연결 만들기 API 및 인증 API에 액세스합니다. | 앱 서버에 가장 일반적으로 사용됩니다. |
SignalR Service 소유자 | REST API, WebSocket 연결 만들기 API 및 인증 API를 포함한 모든 데이터 영역 API에 대한 모든 권한입니다. | Microsoft Entra ID를 사용한 권한 부여에는 서버리스 모드를 사용합니다. REST API 권한과 인증 API 권한이 모두 필요하기 때문입니다. |
SignalR REST API 소유자 | 데이터 평면 REST API에 대한 모든 액세스 권한. | 연결 및 그룹을 관리하는 도구를 작성하는 데 자주 사용되지만 연결을 설정하거나 인증 API를 호출하지는 않습니다. |
SignalR REST API 읽기 권한자 | 데이터 평면 REST API에 대한 읽기 전용 액세스. | Azure SignalR Service 데이터 영역 읽기 전용 REST API만 호출하는 모니터링 도구를 작성하는 데 일반적으로 사용됩니다. |
다음 단계
Azure 애플리케이션을 만들고 Microsoft Entra 권한 부여를 사용하는 방법을 알아보려면 Microsoft Entra 애플리케이션을 사용하여 Azure SignalR Service 리소스에 대한 요청 권한 부여를 참조하세요.
관리 ID를 구성하고 Microsoft Entra 권한 부여를 사용하는 방법을 알아보려면 Microsoft Entra 관리 ID를 사용하여 Azure SignalR Service 리소스에 대한 요청 권한 부여를 참조하세요.
역할 및 역할 할당에 대해 자세히 알아보려면 Azure RBAC(Azure 역할 기반 액세스 제어)란?을 참조하세요.
사용자 지정 역할을 만드는 방법을 알아보려면 사용자 지정 역할을 만드는 단계를 참조하세요.
Microsoft Entra 인증만 사용하는 방법을 알아보려면 로컬 인증 사용 안 함을 참조하세요.