Compartilhar via


Estratégias de autenticação do serviço de medição do Marketplace

O serviço de medição do Marketplace dá suporte a 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 e Aplicativos Azure negociáveis com o tipo de plano de aplicativo gerenciado.

Envie medidores personalizados usando uma ID de aplicativo fixa predefinida do Microsoft Entra para autenticar.

Para ofertas SaaS, essa é a única opção disponível. É uma etapa obrigatória para publicar qualquer oferta SaaS, conforme descrito em Registrar um aplicativo SaaS.

Para aplicativos do Azure com o 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 de medidores personalizados complexa. 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. O publicador deve usar esse token e fazer uma solicitação para resolvê-lo.

Para obter mais informações sobre esses tokens, consulte Tokens de acesso do Microsoft Entra.

Obter um token com base no aplicativo Microsoft Entra

Método HTTP

POST

URL de Solicitação

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

Parâmetro URI

Nome do parâmetro Obrigatório Descrição
tenantId Verdadeiro ID do locatário do aplicativo registrado do Microsoft Entra.

Cabeçalho da solicitação

Nome do cabeçalho Obrigatório Descrição
Content-Type Verdadeiro Tipo de conteúdo associado à solicitação. O valor padrão é application/x-www-form-urlencoded.

Corpo da solicitação

Nome da propriedade Obrigatório Descrição
Grant_type Verdadeiro Tipo de concessão. Use client_credentials.
Client_id Verdadeiro Identificador de cliente/aplicativo associado ao aplicativo Microsoft Entra.
client_secret Verdadeiro Segredo associado ao aplicativo Microsoft Entra.
Resource Verdadeiro Recurso de destino para o qual o token é solicitado. Use 20e940b3-4c77-4b0b-9a53-9e16a1b010a7.

Response

Nome Tipo Descrição
200 OK TokenResponse Solicitação bem-sucedida.

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 aplicativo Kubernetes e aplicativos do Azure com tipo de plano de aplicativo gerenciado.

O uso dessa abordagem permite que a identidade de recursos implantados seja autenticada para enviar eventos de uso de medidores personalizados. Você pode inserir o código que emite o uso dentro dos limites de sua implantação.

Observação

O publicador deve garantir que os recursos que emitem o uso estejam bloqueados, para que não sejam violados.

Seu aplicativo gerenciado pode conter diferentes tipos de recursos, de Máquinas Virtuais até Azure Functions. Para obter mais informações sobre como autenticar usando identidades gerenciadas para diferentes serviços, veja Como usar identidades gerenciadas para recursos do Azure.

Por exemplo, use as etapas a seguir para autenticar usando uma VM do Windows,

  1. Verifique se a identidade gerenciada está configurada usando um dos métodos:

  2. 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)")
    
  3. Obtenha a ID do aplicativo gerenciado da propriedade 'ManagedBy' dos grupos de recursos atuais (não é necessária 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 
    
  4. Use a API do serviço de medição do Marketplace para emitir o uso.

Para ofertas de aplicativos do Kubernetes, siga as etapas para obter um token de autenticação do aplicativo. Para obter mais informações, consulte código de exemplo.

  1. A ID do cliente MSI (Managed Service Identity) do aplicativo precisa ser usada para gerar o 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()
    
  2. Usar a API do serviço de medição do Marketplace para emitir o uso