Стратегии проверки подлинности службы измерения 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.
Убедитесь, что управляемое удостоверение настроено с помощью одного из методов:
Получите токен доступа для идентификатора приложения службы измерения 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)")
Получите идентификатор управляемого приложения из текущего свойства групп ресурсов 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
Используйте API службы измерения Marketplace для передачи данных об использовании.
Для предложений Kubernetes-приложений следуйте следующим шагам, чтобы получить токен аутентификации из приложения. Для получения дополнительной информации см. пример кода в .
Клиентский идентификатор управляемого удостоверения службы приложения (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()
Используйте API службы измерения Marketplace для передачи данных об использовании