Estratégias de autenticação do serviço de medição do Marketplace
O serviço de medição do Marketplace suporta duas estratégias de autenticação:
Este artigo explica quando e como usar as diferentes estratégias de autenticação para enviar medidores personalizados com segurança usando o serviço de medição do Marketplace.
Usando o token de segurança do Microsoft Entra
Os tipos de oferta aplicáveis são SaaS transacionáveis e Aplicativos do Azure com tipo de plano de aplicativo gerenciado.
Envie medidores personalizados usando uma ID de aplicativo Microsoft Entra fixa predefinida para autenticar.
Para ofertas de SaaS, esta é a única opção disponível. É uma etapa obrigatória para publicar qualquer oferta de SaaS, conforme descrito no registro de um aplicativo SaaS.
Para aplicativos do Azure com plano de aplicativo gerenciado, você deve considerar o uso dessa estratégia nos seguintes casos:
- Você já tem um mecanismo para se comunicar com seus serviços de back-end e deseja estender esse mecanismo para emitir medidores personalizados de um serviço central.
- Você tem uma lógica complexa de medidores personalizados. Execute essa lógica em um local central, em vez dos recursos do aplicativo gerenciado.
Ao registrar seu aplicativo, você pode solicitar programaticamente um token de segurança do Microsoft Entra. Espera-se que o editor use esse token e faça uma solicitação para resolvê-lo.
Para obter mais informações sobre esses tokens, consulte Tokens de acesso do Microsoft Entra.
Obter um token baseado no aplicativo Microsoft Entra
Método HTTP
POST
Request URL (URL do pedido)
https://login.microsoftonline.com/*{tenantId}*/oauth2/token
Parâmetro URI
Nome do parâmetro | Obrigatório | Descrição |
---|---|---|
tenantId |
True | ID do locatário do aplicativo Microsoft Entra registrado. |
Cabeçalho da solicitação
Nome do cabeçalho | Obrigatório | Descrição |
---|---|---|
Content-Type |
True | Tipo de conteúdo associado à solicitação. O valor predefinido é application/x-www-form-urlencoded . |
Corpo do pedido
Nome da propriedade | Obrigatório | Descrição |
---|---|---|
Grant_type |
True | Tipo de subvenção. client_credentials Utilize. |
Client_id |
True | Identificador de cliente/aplicativo associado ao aplicativo Microsoft Entra. |
client_secret |
True | Segredo associado ao aplicativo Microsoft Entra. |
Resource |
True | Recurso de destino para o qual o token é solicitado. 20e940b3-4c77-4b0b-9a53-9e16a1b010a7 Utilize. |
Response
Nome | Tipo | Descrição |
---|---|---|
200 OK |
TokenResponse |
Pedido julgado procedente. |
TokenResponse
Token de resposta de exemplo:
{
"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…"
}
Usando o token de identidades gerenciadas pelo Azure
Os tipos de oferta aplicáveis são ofertas de aplicativos Kubernetes e aplicativos do Azure com tipo de plano de aplicativo gerenciado.
O uso dessa abordagem permite que a identidade de recursos implantados se autentique para enviar eventos de uso de medidores personalizados. Você pode incorporar o código que emite o uso dentro dos limites de sua implantação.
Nota
O editor deve garantir que os recursos que emitem o uso estejam bloqueados, para que ele não seja adulterado.
Seu aplicativo gerenciado pode conter diferentes tipos de recursos, de Máquinas Virtuais a Funções do Azure. Para obter mais informações sobre como autenticar usando identidades gerenciadas para diferentes serviços, consulte como usar identidades gerenciadas para recursos do Azure).
Por exemplo, use as seguintes etapas para autenticar usando uma VM do Windows,
Verifique se a Identidade Gerenciada está configurada usando um dos métodos:
Obtenha um token de acesso para a ID do aplicativo de serviço de medição do Marketplace (
20e940b3-4c77-4b0b-9a53-9e16a1b010a7
) usando a identidade do sistema, RDP para a VM, abra o console do PowerShell e execute o comando:# 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)")
Obtenha o ID do aplicativo gerenciado da propriedade 'ManagedBy' dos grupos de recursos atuais (não é necessário para ofertas de aplicativos do 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
Use a API do serviço de medição do Marketplace para emitir uso.
Para ofertas do aplicativo Kubernetes, siga as etapas para obter um token de autenticação do aplicativo. Para obter mais informações, consulte código de exemplo.
A ID do Cliente de Identidade de Serviço Gerenciado (MSI) do aplicativo precisa ser usada para gerar token de autenticação para se comunicar com a API de Medição do Microsoft Marketplace. Para obter mais informações, consulte código de exemplo.
# 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()
Use a API do serviço de medição do Marketplace para emitir uso