Azure Relay 엔터티에 액세스하려면 Microsoft Entra ID로 애플리케이션을 인증하고 권한을 부여합니다.
Azure Relay는 Microsoft Entra ID를 사용하여 Azure Relay 엔터티에 대한 요청 권한을 부여하도록 지원합니다(하이브리드 연결, WCF Relay). Microsoft Entra ID를 통해 Azure RBAC(Azure 역할 기반 액세스 제어)를 사용하여 사용자, 그룹 또는 애플리케이션 서비스 주체가 될 수 있는 보안 주체에 권한을 부여할 수 있습니다. 역할 및 역할 할당에 대한 자세한 내용은 다양한 역할 이해를 참조하세요.
참고 항목
이 기능은 21Vianet에서 운영하는 Microsoft Azure를 제외한 모든 지역에서 일반 공급됩니다.
개요
보안 주체(사용자, 그룹, 애플리케이션)가 Relay 엔터티에 액세스하려고 하는 경우 요청에 권한이 부여되어야 합니다. Microsoft Entra ID를 사용하면 리소스에 대한 액세스는 2단계 프로세스입니다.
- 먼저 보안 주체의 ID가 인증되고 OAuth 2.0 토큰이 반환됩니다. 토큰을 요청하는 리소스 이름은
https://relay.azure.net
입니다. 애플리케이션이 Azure VM, 가상 머신 확장 집합 또는 Azure Function 앱과 같은 Azure 엔터티 내에서 실행되는 경우 관리 ID를 사용하여 리소스에 액세스할 수 있습니다. - 그 다음, 토큰은 지정된 리소스(하이브리드 연결, WCF 릴레이)에 대한 액세스 권한을 부여하기 위해 Relay 서비스에 요청의 일부로 전달됩니다. Microsoft Entra는 Azure RBAC(Azure 역할 기반 액세스 제어)를 통해 보안 리소스에 대한 액세스 권한을 권한 부여합니다. Azure Relay는 Relay 엔터티에 액세스하는 데 사용되는 일반 권한 집합을 포함하는 Azure 기본 제공 역할의 집합을 정의합니다. 데이터에 액세스하기 위한 사용자 지정 역할을 정의할 수도 있습니다. Azure Relay에서 지원하는 기본 제공 역할 목록은 Azure Relay에 대한 Azure 기본 제공 역할을 참조하세요. Relay에 요청하는 네이티브 애플리케이션 및 웹 애플리케이션도 Microsoft Entra ID로 권한을 부여할 수 있습니다.
Azure Relay에 대한 Azure 기본 제공 역할
Azure Relay의 경우 Azure Portal 및 Azure 리소스 관리 API를 통한 네임스페이스 및 관련된 모든 리소스의 관리는 이미 Azure RBAC 모델을 사용하여 보호되고 있습니다. Azure는 Relay 네임스페이스에 대한 액세스 권한을 부여하기 위해 아래와 같은 Azure 기본 제공 역할을 제공합니다.
역할 | 설명 |
---|---|
Azure Relay 소유자 | 이 역할을 사용하여 Azure Relay 리소스에 대한 전체 액세스 권한을 부여합니다. |
Azure Relay 수신자 | 이 역할을 사용하여 Azure Relay 리소스에 대한 수신 대기 및 엔터티 읽기 액세스 권한을 부여합니다. |
Azure Relay 발신자 | 이 역할을 사용하여 Azure Relay 리소스에 대한 보내기 및 엔터티 읽기 액세스 권한을 부여합니다. |
리소스 범위
Azure 역할을 보안 주체에 할당하기 전에 보안 주체에게 부여해야 하는 액세스 범위를 결정합니다. 모범 사례에 따르면 항상 가능한 가장 좁은 범위만 부여하는 것이 가장 좋습니다.
다음 목록에서는 Azure Relay 리소스에 대한 액세스 범위를 가장 좁은 범위에서 시작하여 지정할 수 있는 수준을 설명합니다.
- Relay 엔터티: 역할 할당은 하이브리드 연결 또는 WCF 릴레이와 같은 특정 Relay 엔터티에 적용됩니다.
- Relay 네임스페이스: 역할 할당은 네임스페이스 아래의 모든 Relay 엔터티에 적용됩니다.
- 리소스 그룹: 역할 할당이 리소스 그룹 아래에 있는 모든 Relay 리소스에 적용됩니다.
- 구독: 역할 할당이 구독의 모든 리소스 그룹에 있는 모든 Relay 리소스에 적용됩니다.
참고 항목
Azure 역할 할당을 전파하는 데 최대 5분이 소요될 수 있습니다. 기본 제공 역할이 정의되는 방식에 대한 자세한 내용은 역할 정의 이해를 참조하세요. Azure 사용자 지정 역할 만들기에 대한 자세한 내용은 Azure 사용자 지정 역할을 참조하세요.
앱에서 인증
Azure Relay와 함께 Microsoft Entra ID를 사용하는 주요 이점은 자격 증명을 더 이상 코드에 저장할 필요가 없다는 것입니다. 대신 Microsoft ID 플랫폼에서 OAuth 2.0 액세스 토큰을 요청할 수 있습니다. Microsoft Entra는 애플리케이션을 실행하는 보안 주체(사용자, 그룹 또는 서비스 주체)를 인증합니다. 인증이 성공하면 Microsoft Entra ID는 애플리케이션에 액세스 토큰을 반환하고, 애플리케이션은 액세스 토큰을 사용하여 Azure Relay에 대한 요청에 권한을 부여할 수 있습니다.
다음 섹션에서는 Microsoft ID 플랫폼 2.0에서 인증하도록 콘솔 애플리케이션을 구성하는 방법을 보여 줍니다. 자세한 내용은 Microsoft ID 플랫폼(v2.0) 개요를 참조하세요.
OAuth 2.0 코드 부여 흐름에 대한 개요는 OAuth 2.0 코드 부여 흐름을 사용하여 Microsoft Entra 웹 애플리케이션에 대한 액세스 권한 부여를 참조하세요.
Microsoft Entra 테넌트에 애플리케이션 등록
Microsoft Entra ID를 사용하여 Azure Relay 엔터티에 권한을 부여하는 첫 번째 단계는 Azure Portal에서 Microsoft Entra 테넌트에 클라이언트 애플리케이션을 등록하는 것입니다. 클라이언트 애플리케이션을 등록할 때 애플리케이션에 대한 정보를 Azure AD에 제공합니다. 그런 다음 Microsoft Entra ID는 애플리케이션을 Microsoft Entra 런타임과 연결하는 데 사용할 수 있는 클라이언트 ID(애플리케이션 ID라고도 함)를 제공합니다.
Microsoft Entra ID를 사용하여 애플리케이션을 등록하는 단계별 지침은 빠른 시작: Microsoft Entra ID에 애플리케이션 등록을 참조하세요.
Important
디렉터리(테넌트) ID와 애플리케이션(클라이언트) ID를 적어 둡니다. 샘플 애플리케이션을 실행하려면 이러한 값이 필요합니다.
클라이언트 암호 만들기
애플리케이션은 토큰을 요청할 때 해당 ID를 증명하기 위해 클라이언트 암호가 필요합니다. 앞에서 링크된 동일한 문서에서 클라이언트 비밀 추가 섹션을 참조하여 클라이언트 비밀을 만듭니다.
Important
클라이언트 비밀을 적어 둡니다. 샘플 애플리케이션을 실행하려면 클라이언트 비밀이 필요합니다.
Azure Portal을 사용하여 Azure 역할 할당
원하는 범위(Relay 엔터티, 네임스페이스, 리소스 그룹, 구독)에서 애플리케이션 서비스 주체에 Azure Relay 역할 중 하나를 할당합니다. 세부 단계에 대해서는 Azure Portal을 사용하여 Azure 역할 할당을 참조하세요.
샘플 실행
GitHub에서 콘솔 애플리케이션 샘플을 다운로드합니다.
추가 정보 문서의 지침에 따라 컴퓨터에서 로컬로 애플리케이션을 실행합니다.
참고 항목
동일한 단계를 수행하여 WCF Relay용 샘플 콘솔 애플리케이션을 실행합니다.
샘플에서 강조 표시된 코드
Microsoft Entra 인증을 사용하여 Azure Relay 서비스에 연결하는 방법을 보여 주는 샘플 코드는 다음과 같습니다.
TokenProvider.CreateAzureActiveDirectoryTokenProvider
메서드를 사용하여 TokenProvider 개체를 만듭니다.앱 등록을 아직 만들지 않은 경우 Microsoft Entra ID에 애플리케이션 등록 섹션을 참조하여 등록을 만든 후, 클라이언트 비밀 만들기 섹션에 설명된 대로 클라이언트 비밀을 만듭니다.
기존 앱 등록을 사용하려는 경우 다음 지침에 따라 애플리케이션(클라이언트) ID와 디렉터리(테넌트) ID를 가져옵니다.
- Azure Portal에 로그인합니다.
- 맨 위에 있는 검색 창을 사용하여 Microsoft Entra ID를 검색하고 선택합니다.
- Microsoft Entra ID 페이지에서 왼쪽 메뉴에 있는 관리 섹션에서 앱 등록을 선택합니다.
- 앱 등록 선택
- 앱 등록 페이지에 애플리케이션(클라이언트) ID 및 디렉터리(테넌트) ID 값이 표시됩니다.
클라이언트 비밀을 가져오려면 다음 단계를 수행합니다.
- 앱 등록 페이지의 왼쪽 메뉴에서 인증서 및 비밀을 선택합니다.
- 클라이언트 비밀 섹션의 비밀 값 열에 있는 복사 단추를 사용합니다.
static TokenProvider GetAadTokenProvider(string clientId, string tenantId, string clientSecret) { return TokenProvider.CreateAzureActiveDirectoryTokenProvider( async (audience, authority, state) => { IConfidentialClientApplication app = ConfidentialClientApplicationBuilder.Create(clientId) .WithAuthority(authority) .WithClientSecret(clientSecret) .Build(); var authResult = await app.AcquireTokenForClient(new [] { $"{audience}/.default" }).ExecuteAsync(); return authResult.AccessToken; }, $"https://login.microsoftonline.com/{tenantId}"); }
이전 단계에서 만든 하이브리드 연결 URI와 토큰 공급자를 전달하여 HybridConnectionListener 또는 HybridConnectionClient 개체를 만듭니다.
수신기:
var listener = new HybridConnectionListener(hybridConnectionUri, tokenProvider);
송신기:
var sender = new HybridConnectionClient(hybridConnectionUri, tokenProvider);
샘플
- 하이브리드 연결: .NET, Java, JavaScript
- WCF Relay: .NET
다음 단계
- Azure RBAC에 대한 자세한 내용은 Azure RBAC(Azure 역할 기반 액세스 제어)란?을 참조하세요.
- Azure PowerShell, Azure CLI 또는 REST API를 사용하여 할당하는 방법 및 Azure 역할 할당을 관리하는 방법을 알아보려면 다음 문서를 참조하세요.
Azure Relay에 대해 자세히 알아보려면 다음 문서를 참조하세요.