Стратегии проверки подлинности службы контроля Marketplace
Служба контроля Marketplace поддерживает две стратегии проверки подлинности:
В этой статье объясняется, когда и как использовать различные стратегии проверки подлинности для безопасной отправки пользовательских счетчиков с помощью службы измерения Marketplace.
Использование маркера безопасности Microsoft Entra
Применимые типы предложений: продаваемые SaaS и приложения Azure с планом управляемого приложения.
Отправка пользовательских счетчиков с помощью предопределенного фиксированного идентификатора приложения Microsoft Entra для проверки подлинности.
Для предложений SaaS Azure AD является единственным доступным вариантом. Это обязательный шаг для публикации любого предложения SaaS, как описано в разделе Регистрация приложения SaaS.
Для приложений Azure с планом управляемого приложения эту стратегию следует использовать в следующих случаях.
- У вас уже есть механизм взаимодействия с серверными службами и вы хотите расширить этот механизм для выдачи настраиваемых счетчиков из центральной службы.
- У вас есть сложная логика настраиваемых счетчиков. Запустите эту логику в центральном расположении, а не на ресурсах управляемого приложения.
При регистрации приложения вы можете программно запросить маркер безопасности Microsoft Entra. Ожидается, что издатель будет использовать этот токен и отправит запрос на его разрешение.
Дополнительные сведения об этих маркерах см. в разделе маркеры доступа Microsoft Entra.
Получение маркера на основе приложения Microsoft Entra
Метод HTTP
POST
Request URL (URL-адрес запроса)
https://login.microsoftonline.com/*{tenantId}*/oauth2/token
Параметр универсального кода ресурса
Имя параметра | Обязательный | Description |
---|---|---|
tenantId |
Истина | Идентификатор клиента зарегистрированного приложения Microsoft Entra. |
Заголовок запроса
Имя заголовка | Обязательный | Description |
---|---|---|
Content-Type |
Истина | Связанный с этим запросом тип содержимого. Значение по умолчанию — application/x-www-form-urlencoded . |
Текст запроса
Имя свойства | Обязательный | Description |
---|---|---|
Grant_type |
Истина | Тип предоставления разрешения. Используйте client_credentials . |
Client_id |
Истина | Идентификатор клиента или приложения, связанный с приложением Microsoft Entra. |
client_secret |
Истина | Секрет, связанный с приложением Microsoft Entra. |
Resource |
Истина | Целевой ресурс, для которого запрашивается токен. Используйте 20e940b3-4c77-4b0b-9a53-9e16a1b010a7 . |
Response
Имя | Тип | Description |
---|---|---|
200 OK |
TokenResponse |
Запрос успешно выполнен. |
TokenResponse
Пример токена ответа.
{
"token_type": "Bearer",
"expires_in": "3600",
"ext_expires_in": "0",
"expires_on": "15251…",
"not_before": "15251…",
"resource": "20e940b3-4c77-4b0b-9a53-9e16a1b010a7",
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6ImlCakwxUmNxemhpeTRmcHhJeGRacW9oTTJZayIsImtpZCI6ImlCakwxUmNxemhpeTRmcHhJeGRacW9oTTJZayJ9…"
}
Использование маркера удостоверений, управляемых Azure
Применимые типы предложений — это предложения приложений Kubernetes и приложения Azure с типом плана управляемого приложения.
Этот подход позволяет развертываемой идентификации ресурсов проходить проверку подлинности для отправки событий использования пользовательских счетчиков. Вы можете внедрить код, который порождает использование в пределах развертывания.
Примечание.
Издателю следует убедиться в том, что ресурсы, порождаемые использованием, заблокированы, чтобы их нельзя было изменить.
Управляемое приложение может содержать ресурсы различных типов — от виртуальных машин до Функций Azure. Дополнительные сведения о проверке подлинности с помощью управляемых удостоверений для различных служб см. в статье Использование управляемых удостоверений для ресурсов Azure.
Например, выполните следующие действия для проверки подлинности с помощью виртуальной машины Windows.
Убедитесь, что управляемое удостоверение настроено с помощью одного из следующих методов:
Получите маркер доступа для идентификатора приложения службы измерения Marketplace (
20e940b3-4c77-4b0b-9a53-9e16a1b010a7
) с помощью системного удостоверения, 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 = '20e940b3-4c77-4b0b-9a53-9e16a1b010a7' 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 для отправки данных об использовании