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


Стратегии проверки подлинности службы измерения Marketplace

Служба измерения Marketplace поддерживает две стратегии проверки подлинности:

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

Использование маркера безопасности Microsoft Entra

Применимые типы предложений: транзакционные SaaS и приложения Azure с типом плана управляемых приложений.

Отправляйте пользовательские счетчики, используя предопределенный фиксированный идентификатор приложения Microsoft Entra для аутентификации.

Для предложений SaaS это единственный доступный вариант. Это обязательный шаг для публикации любого предложения SaaS, как описано в зарегистрировать приложение SaaS.

Для приложений Azure с планом управляемых приложений следует использовать эту стратегию в следующих случаях:

  • У вас уже есть механизм взаимодействия со службами на стороне сервера, и вы хотите расширить этот механизм для отправки пользовательских метрик из центрального сервиса.
  • У вас есть сложная логика пользовательских счетчиков. Выполните логические операции в централизованном месте вместо ресурсов управляемого приложения.

При регистрации приложения вы можете программно запросить маркер безопасности Microsoft Entra. Ожидается, что издатель будет использовать этот токен и выполнить запрос для его разрешения.

Дополнительные сведения об этих токенах см. в токенах доступа Microsoft Entra.

Получите токен на основе приложения Microsoft Entra

Метод HTTP

POST

URL-адрес запроса

https://login.microsoftonline.com/*{tenantId}*/oauth2/token

параметр URI

имя параметра Обязательный описание
tenantId Верно Идентификатор клиента зарегистрированного приложения Microsoft Entra.

заголовок запроса

название заголовка обязательный описание
Content-Type Правда Тип контента, связанный с запросом. Значение по умолчанию — application/x-www-form-urlencoded.

текст запроса

имя свойства обязательный описание
Grant_type Верно Тип предоставления. Используйте client_credentials.
Client_id Верно Идентификатор клиента или приложения, связанный с приложением Microsoft Entra.
client_secret Правда Секрет, связанный с приложением Microsoft Entra.
Resource Правда Целевой ресурс, для которого запрашивается маркер. Используйте 00001111-aaaa-2222-bbbb-3333cccc4444.

Ответ

имени типа Описание
200 OK TokenResponse Запрос выполнен успешно.

TokenResponse

Пример маркера ответа:

  {
      "token_type": "Bearer",
      "expires_in": "3600",
      "ext_expires_in": "0",
      "expires_on": "15251…",
      "not_before": "15251…",
      "resource": "00001111-aaaa-2222-bbbb-3333cccc4444",
      "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6ImlCakwxUmNxemhpeTRmcHhJeGRacW9oTTJZayIsImtpZCI6ImlCakwxUmNxemhpeTRmcHhJeGRacW9oTTJZayJ9…"
  }

Использование токена удостоверений, управляемых с помощью Azure

Применимые типы предложений — это предложения приложений Kubernetes и приложения Azure с типом плана управляемого приложения.

Этот подход позволяет развертываемой идентификации ресурсов проходить проверку подлинности для отправки событий использования пользовательских счетчиков. Вы можете внедрить код, который отслеживает использование в границах вашего развертывания.

Заметка

Издатель должен убедиться, что ресурсы, которые вызывают использование, заблокированы, чтобы они не были изменены.

Управляемое приложение может содержать различные типы ресурсов, от виртуальных машин до функций Azure. Дополнительные сведения об аутентификации с помощью управляемых удостоверений для разных служб см. в разделе «Как использовать управляемые удостоверения для ресурсов Azure».

Например, выполните следующие действия для проверки подлинности с помощью виртуальной машины Windows.

  1. Убедитесь, что управляемое удостоверение настроено с помощью одного из методов:

  2. Получите токен доступа для идентификатора приложения службы измерения Marketplace (00001111-aaaa-2222-bbbb-3333cccc4444), используя системную идентификацию. Подключитесь через RDP к виртуальной машине, откройте консоль PowerShell и выполните команду.

    # curl is an alias to Web-Invoke PowerShell command
    # Get system identity access tokenn
    $MetadataUrl = "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fmanagement.azure.com%2F"
    $Token = curl -H @{"Metadata" = "true"} $MetadataUrl | Select-Object -Expand Content | ConvertFrom-Json
    $Headers = @{}
    $Headers.Add("Authorization","$($Token.token_type) "+ " " + "$($Token.access_token)")
    
  3. Получите идентификатор управляемого приложения из текущего свойства групп ресурсов ManagedBy (не требуется для предложений приложений Kubernetes).

    # Get subscription and resource group
    $metadata = curl -H @{'Metadata'='true'} http://169.254.169.254/metadata/instance?api-version=2019-06-01 | select -ExpandProperty Content | ConvertFrom-Json 
    
    # Make sure the system identity has at least reader permission on the resource group
    $managementUrl = "https://management.azure.com/subscriptions/" + $metadata.compute.subscriptionId + "/resourceGroups/" + $metadata.compute.resourceGroupName + "?api-version=2019-10-01"
    $resourceGroupInfo = curl -Headers $Headers $managementUrl | select -ExpandProperty Content | ConvertFrom-Json
    $managedappId = $resourceGroupInfo.managedBy 
    
  4. Используйте API службы измерения Marketplace для передачи данных об использовании.

Для предложений Kubernetes-приложений следуйте следующим шагам, чтобы получить токен аутентификации из приложения. Для получения дополнительной информации см. пример кода в .

  1. Клиентский идентификатор управляемого удостоверения службы приложения (MSI) необходимо использовать для создания токена аутентификации для взаимодействия с API измерения Microsoft Marketplace. Дополнительные сведения см. в коде примера .

    # Audience for the token to be generated 
    resource = '00001111-aaaa-2222-bbbb-3333cccc4444'
    clientId = <identity client id>
    url = "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&clientId={0}&resource={1}".format(clientId,resource)
    headers = {'Metadata': 'true'}
    # Need to import requests module 
    response = requests.get(url)
    response = requests.get(url, headers=headers)
    authToken = response.json()
    
  2. Используйте API службы измерения Marketplace для передачи данных об использовании