Partilhar via


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_credentialsUtilize.
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-9e16a1b010a7Utilize.

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,

  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 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 
    
  4. 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.

  1. 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()
    
  2. Use a API do serviço de medição do Marketplace para emitir uso