Microsoft Entra ID를 사용하여 관리 ID를 인증하여 Azure Relay 리소스에 액세스

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

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

참고 항목

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

개요

보안 주체(사용자, 그룹, 애플리케이션)가 릴레이 엔터티에 액세스하려고 하면 요청에 권한이 부여되어야 합니다. 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 기본 제공 역할을 참조 하세요. 릴레이를 요청하는 네이티브 애플리케이션 및 웹 애플리케이션도 Microsoft Entra ID를 사용하여 권한을 부여할 수 있습니다.

Azure Relay에 대한 Azure 기본 제공 역할

Azure Relay의 경우 Azure Portal 및 Azure 리소스 관리 API를 통한 네임스페이스 및 관련된 모든 리소스의 관리는 이미 Azure RBAC 모델을 사용하여 보호되고 있습니다. Azure는 릴레이 네임스페이스에 대한 액세스 권한을 부여하기 위한 아래 Azure 기본 제공 역할을 제공합니다.

역할 설명
Azure Relay 소유자 이 역할을 사용하여 Azure Relay 리소스에 대한 모든 권한을 부여합니다.
Azure Relay 수신자 이 역할을 사용하여 Azure Relay 리소스에 대한 수신 대기 및 엔터티 읽기 권한을 부여합니다.
Azure Relay Sender 이 역할을 사용하여 Azure Relay 리소스에 대한 보내기 및 엔터티 읽기 액세스 권한을 부여합니다.

리소스 범위

Azure 역할을 보안 주체에 할당하기 전에 보안 주체에게 부여해야 하는 액세스 범위를 결정합니다. 모범 사례에 따르면 항상 가능한 가장 좁은 범위만 부여하는 것이 가장 좋습니다.

다음 목록에서는 가장 좁은 범위부터 시작하여 Azure Relay 리소스에 대한 액세스 범위를 지정할 수 있는 수준에 대해 설명합니다.

  • 릴레이 엔터티: 역할 할당은 하이브리드 연결 또는 WCF 릴레이와 같은 특정 릴레이 엔터티에 적용됩니다.
  • 릴레이 네임스페이스: 역할 할당은 네임스페이스 아래의 모든 릴레이 엔터티에 적용됩니다.
  • 리소스 그룹: 역할 할당은 리소스 그룹의 모든 릴레이 리소스에 적용됩니다.
  • 구독: 역할 할당은 구독의 모든 리소스 그룹에 있는 모든 릴레이 리소스에 적용됩니다.

참고 항목

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에 할당되면 관리 ID에 적절한 범위의 릴레이 엔터티에 대한 액세스 권한이 부여됩니다.

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

릴레이 엔터티에 액세스하는 VM의 샘플 앱

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

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

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

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

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

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

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

    참고 항목

    동일한 단계에 따라 WCF 릴레이에 대한 콘솔 애플리케이션을 실행합니다.

샘플에서 강조 표시된 코드

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

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

    • 시스템 할당 관리 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에 대한 자세한 내용은 다음 문서를 참조하세요.