Поделиться через


Проверка подлинности управляемого удостоверения с помощью идентификатора Microsoft Entra для доступа к ресурсам Azure Relay

Управляемые удостоверения для ресурсов Azure — это функция Azure, которая позволяет создавать удостоверения безопасности, связанные с развертыванием, в рамках которого выполняется код приложения. Затем можно связать этот идентификатор с ролями управления доступом, предоставляющими настраиваемые разрешения для доступа к определенным ресурсам Azure, необходимым приложению.

С помощью управляемых удостоверений платформа Azure управляет этим идентификатором среды выполнения. Ключи доступа не нужно хранить и защищать в коде приложений или конфигурации ни для удостоверения, ни для ресурсов, к которым необходимо получить доступ. Клиентскому приложению Relay, которое выполняется в приложении Службы приложений Azure или на виртуальной машине с включенной поддержкой управляемых удостоверений для ресурсов Azure, не нужно обрабатывать правила и ключи SAS или любые другие маркеры доступа. Клиентскому приложению достаточно только адреса конечной точки пространства имен Relay. При подключении приложения Relay привязывает контекст управляемого удостоверения к клиенту в операции, показанной в примере далее в этой статье. Как только он будет связан с управляемым удостоверением, клиент Relay сможет выполнять все авторизованные операции. Авторизация выполняется путем привязывания управляемого удостоверения к ролям Relay.

Примечание.

Эта функция общедоступна во всех регионах, включая Microsoft Azure под управлением 21Vianet.

Обзор

Когда субъект безопасности (пользователь, группа или приложение) пытается получить доступ к сущности Relay, такой запрос должен быть авторизован. С идентификатором Microsoft Entra доступ к ресурсу является двухэтапным процессом.

  1. Сначала проверяется подлинность субъекта безопасности и возвращается токен OAuth 2.0. Имя ресурса для запроса токена — https://relay.azure.net. Если приложение выполняется в сущности Azure, такой как виртуальная машина Azure, масштабируемый набор виртуальных машин или приложение-функция Azure, оно может использовать для доступа к ресурсам управляемое удостоверение.
  2. Затем этот токен передается в запросе в службу Relay для авторизации доступа к указанному ресурсу (гибридные подключения, ретрансляторы WCF). Microsoft Entra разрешает доступ к защищенным ресурсам с помощью управления доступом на основе ролей Azure (Azure RBAC). Служба Azure Relay определяет набор встроенных ролей Azure, охватывающих общие наборы разрешений для доступа к сущностям Relay. Вы также можете определить настраиваемые роли для доступа к данным. Список поддерживаемых встроенных ролей Azure Relay см. в статье Встроенные роли Azure для Azure Relay. Собственные приложения и веб-приложения, которые запрашивают ретранслятор, также могут авторизоваться с помощью идентификатора Microsoft Entra.

Встроенные роли Azure для Azure Relay

Для Azure Relay управление пространствами имен и всеми связанными ресурсами через портал Azure и API управления ресурсами Azure уже защищено с помощью модели Azure RBAC. В Azure предоставляются следующие встроенные роли Azure для авторизации доступа к пространству имен Relay:

Роль Description
Владелец Azure Relay Эта роль обеспечивает полный доступ к ресурсам Azure Relay.
Прослушиватель Azure Relay Эта роль предоставляет права на прослушивание и чтение сущностей при доступе к ресурсам Azure Relay.
Отправитель Azure Relay Эта роль предоставляет права на отправку и чтение сущностей при доступе к ресурсам Azure Relay.

Область ресурса

Прежде чем назначить роль Azure субъекту безопасности, определите для него область доступа. Рекомендуется всегда предоставлять максимально узкие области.

В следующем списке описаны уровни, на которых можно ограничить доступ к ресурсам Azure Relay, начиная с самой узкой области:

  • Сущности Relay. Назначение ролей применяется к отдельным сущностям Relay, таким как гибридное подключение или ретранслятор WCF.
  • Пространство имен Relay. Назначение ролей применяется ко всем сущностям Relay в определенном пространстве имен.
  • Группа ресурсов. Назначение ролей применяется ко всем ресурсам Relay в определенной группе ресурсов.
  • Подписка. Назначение ролей применяется ко всем ресурсам Relay во всех группах ресурсов в определенной подписке.

Примечание.

Имейте в виду, что назначение ролей Azure может занять до пяти минут. Дополнительные сведения об определении встроенных ролей см. в разделе Общие сведения об определениях ролей. Дополнительные сведения о создании настраиваемых ролей Azure см. в разделе Настраиваемые роли Azure.

Включение управляемого удостоверения

Сначала включите управляемое удостоверение для ресурса Azure, для которого требуется доступ к сущностям Azure Relay (гибридные подключения или ретрансляторы WCF). Например, если клиентское приложение Relay выполняется на виртуальной машине Azure, включите управляемое удостоверение для виртуальной машины, следуя инструкциям из статьи о настройке управляемого удостоверения для виртуальной машины Azure. После включения этого параметра создается новое управляемое удостоверение службы в идентификаторе Microsoft Entra.

Список служб, поддерживающих управляемые удостоверения, см. в статье Службы, которые поддерживают управляемые удостоверения для ресурсов Azure.

Назначение роли Azure Relay управляемому удостоверению

После включения управляемого удостоверения назначьте одну из ролей Azure Relay (владельца Azure Relay, прослушивателя Azure Relay или отправителя Azure Relay) удостоверению в соответствующей области. Если роль Azure назначается управляемому удостоверению, ему предоставляется доступ к сущностям Relay в соответствующей области.

В следующем разделе используется простое приложение, которое выполняется в рамках управляемого удостоверения в экземпляре виртуальной машины Azure и использует ресурсы Relay.

Пример приложения на виртуальной машине, которое использует сущности Relay

  1. Скачайте пример консольного приложения "Гибридные подключения" на компьютер из GitHub.

  2. Создайте виртуальную машину Azure. В этом примере используется образ Windows 10.

  3. Включите назначенное системой удостоверение или пользовательское удостоверение для виртуальной машины Azure. Инструкции см. в статье о включении удостоверения для виртуальной машины.

  4. Назначьте управляемому удостоверению службы одну из ролей Relay в нужной области (сущность Relay, пространство имен Relay, группа ресурсов, подписка). Подробные инструкции см. в статье Назначение ролей Azure с помощью портала Microsoft Azure.

  5. Создайте консольное приложение локально на локальном компьютере с помощью инструкций из этого документа сведений.

  6. Скопируйте исполняемый файл в <локальную> папку RoleBasedAccessControl\bin\Debug на виртуальную машину. Вы можете использовать RDP для подключения к виртуальной машине Azure. Дополнительные сведения см. в статье Как подключиться к виртуальной машине Azure под управлением Windows и войти на нее.

  7. Запустите RoleBasedAccessControl.exe на виртуальной машине Azure, как описано в этом документе сведений.

    Примечание.

    Выполните те же действия, чтобы запустить консольное приложение для ретрансляторов WCF.

Выделенный код из примера

Ниже приведен код из примера, в который показано, как использовать проверку подлинности Microsoft Entra для подключения к службе Ретранслятора Azure.

  1. Создайте объект TokenProvider с помощью метода TokenProvider.CreateManagedIdentityTokenProvider.

    • Если вы используете управляемое удостоверение, назначаемое системой:
      TokenProvider.CreateManagedIdentityTokenProvider();
      
    • Если вы используете управляемое удостоверение, назначаемое пользователем, получите идентификатор клиента для удостоверения, назначаемого пользователем, на странице "Управляемое удостоверение" в портал Azure. Инструкции см. в разделе о получении списка управляемых удостоверений, назначаемых пользователем.
      var managedCredential = new ManagedIdentityCredential(clientId);
      tokenProvider = TokenProvider.CreateManagedIdentityTokenProvider(managedCredential);    
      
  2. Создайте объект HybridConnectionListener или HybridConnectionClient, передав универсальный код ресурса гибридного подключения и поставщик маркеров, созданный на предыдущем шаге.

    Прослушиватель.

    var listener = new HybridConnectionListener(hybridConnectionUri, tokenProvider);    
    

    Отправитель.

    var sender = new HybridConnectionClient(hybridConnectionUri, tokenProvider);    
    

Примеры

  • Гибридные подключения: .NET, Java, JavaScript
  • Ретранслятор WCF: .NET

Следующие шаги

Дополнительные сведения об Azure Relay см. в следующих статьях.