다음을 통해 공유


Azure Relay 리소스에 액세스하려면 Microsoft Entra ID로 관리 ID를 인증합니다.

Azure 리소스용 관리 ID는 애플리케이션 코드가 실행되는 배포와 관련된 보안 ID를 만들 수 있도록 하는 Azure 간 기능입니다. 그런 다음 애플리케이션에 필요한 특정 Azure 리소스에 액세스하기 위한 사용자 지정 권한을 부여하는 액세스 제어 역할에 해당 ID를 연결할 수 있습니다.

관리 ID를 사용하는 경우 Azure 플랫폼에서 이 런타임 ID를 관리합니다. ID 자체나 액세스해야 하는 리소스에 대한 액세스 키를 애플리케이션 코드나 구성에 저장하고 보호할 필요는 없습니다. Azure App Service 애플리케이션 내에서 실행되거나 Azure 리소스용 관리 ID를 지원하도록 설정된 가상 머신에서 실행되는 Relay 클라이언트 앱은 SAS 규칙과 키 또는 기타 액세스 토큰을 처리할 필요가 없습니다. 클라이언트 앱은 Relay 네임스페이스의 엔드포인트 주소만 있으면 됩니다. 앱이 연결되면 Relay는 이 문서 뒷부분의 예제에 나와 있는 작업에서 관리 ID의 컨텍스트를 클라이언트에 바인딩합니다. 관리 ID와 연결된 Relay 클라이언트는 권한이 부여된 모든 작업을 수행할 수 있습니다. 관리 ID를 Relay 역할에 연결하는 방식을 통해 권한이 부여됩니다.

참고 항목

이 기능은 일반적으로 21Vianet에서 운영하는 Microsoft Azure를 포함한 모든 지역에서 사용할 수 있습니다.

개요

보안 주체(사용자, 그룹, 애플리케이션)가 Relay 엔터티에 액세스하려고 하는 경우 요청에 권한이 부여되어야 합니다. Microsoft Entra ID를 사용하면 리소스에 대한 액세스는 2단계 프로세스입니다.

  1. 먼저 보안 주체의 ID가 인증되고 OAuth 2.0 토큰이 반환됩니다. 토큰을 요청하는 리소스 이름은 https://relay.azure.net입니다. 애플리케이션이 Azure VM, 가상 머신 확장 집합 또는 Azure Function 앱과 같은 Azure 엔터티 내에서 실행되는 경우 관리 ID를 사용하여 리소스에 액세스할 수 있습니다.
  2. 그 다음, 토큰은 지정된 리소스(하이브리드 연결, 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 사용자 지정 역할을 참조하세요.

관리 ID 사용

먼저 Azure Relay 엔터티(하이브리드 연결 또는 WCF 릴레이)에 액세스해야 하는 Azure 리소스에 대해 관리 ID를 사용하도록 설정합니다. 예를 들어 릴레이 클라이언트 애플리케이션이 Azure VM에서 실행되는 경우 Azure VM에 대한 관리 ID 구성 문서의 지침에 따라 VM에 대한 관리 ID를 사용하도록 설정합니다. 이렇게 설정하면 Microsoft Entra ID에 새 관리 서비스 ID가 만들어집니다.

관리 ID를 지원하는 서비스 목록은 Azure 리소스에 대한 관리 ID를 지원하는 서비스를 참조하세요.

관리 ID에 Azure Relay 역할 할당

관리 ID를 사용하도록 설정한 후 Azure Relay 역할(Azure Relay 소유자, Azure Relay 수신기 또는 Azure Relay 송신기) 중 하나를 적절한 범위의 ID에 할당합니다. Azure 역할이 관리 ID에 할당되면 적절한 범위에서 Relay 엔터티에 대한 액세스 권한이 관리 ID에 부여됩니다.

다음 섹션에서는 Azure VM 인스턴스에서 관리 ID로 실행되는 간단한 애플리케이션을 사용하여 Relay 리소스에 액세스합니다.

Relay 엔터티에 액세스하는 VM의 샘플 앱

  1. GitHub에서 하이브리드 연결 샘플 콘솔 애플리케이션을 컴퓨터로 다운로드합니다.

  2. Azure VM을 만듭니다. 이 샘플에서는 Windows 10 이미지를 사용합니다.

  3. Azure VM에 대해 시스템 할당 ID 또는 사용자 할당 ID를 사용하도록 설정합니다. 자세한 내용은 VM에 ID 사용을 참조하세요.

  4. 원하는 범위(Relay 엔터티, Relay 네임스페이스, 리소스 그룹, 구독)에서 관리 서비스 ID에 Relay 역할 중 하나를 할당합니다. 세부 단계에 대해서는 Azure Portal을 사용하여 Azure 역할 할당을 참조하세요.

  5. 추가 정보 문서의 지침에 따라 로컬 컴퓨터에서 로컬로 콘솔 앱을 빌드합니다.

  6. <로컬 경로>\RoleBasedAccessControl\bin\Debug 폴더 아래의 실행 파일을 VM에 복사합니다. RDP를 사용하여 Azure VM에 연결할 수 있습니다. 자세한 내용은 Windows를 실행하는 Azure 가상 머신에 연결하고 로그인하는 방법을 참조하세요.

  7. 추가 정보 문서의 지침에 따라 Azure VM에서 RoleBasedAccessControl.exe를 실행합니다.

    참고 항목

    동일한 단계를 수행하여 WCF Relay용 콘솔 애플리케이션을 실행합니다.

샘플에서 강조 표시된 코드

Microsoft Entra 인증을 사용하여 Azure Relay 서비스에 연결하는 방법을 보여 주는 샘플 코드는 다음과 같습니다.

  1. TokenProvider.CreateManagedIdentityTokenProvider 메서드를 사용하여 TokenProvider 개체를 만듭니다.

    • 시스템이 할당한 관리 ID를 사용하는 경우:
      TokenProvider.CreateManagedIdentityTokenProvider();
      
    • 사용자가 할당한 관리 ID를 사용하는 경우 Azure Portal의 관리 ID 페이지에서 사용자 할당 ID의 클라이언트 ID를 가져옵니다. 자세한 내용은 사용자가 할당한 관리 ID 나열을 참조하세요.
      var managedCredential = new ManagedIdentityCredential(clientId);
      tokenProvider = TokenProvider.CreateManagedIdentityTokenProvider(managedCredential);    
      
  2. 이전 단계에서 만든 하이브리드 연결 URI와 토큰 공급자를 전달하여 HybridConnectionListener 또는 HybridConnectionClient 개체를 만듭니다.

    수신기:

    var listener = new HybridConnectionListener(hybridConnectionUri, tokenProvider);    
    

    송신기:

    var sender = new HybridConnectionClient(hybridConnectionUri, tokenProvider);    
    

샘플

다음 단계

Azure Relay에 대해 자세히 알아보려면 다음 문서를 참조하세요.