Tutorial: Acessar o armazenamento com uma Identidade Gerenciada dos Serviços de Mídia

Logotipo dos Serviços de Mídia v3


Aviso

Os Serviços de Mídia do Azure serão desativados em 30 de junho de 2024. Para obter mais informações, consulte o Guia de desativação do AMS.

Observação

As identidades gerenciadas só estão disponíveis para contas dos Serviços de Mídia criadas com a API v3. Se você estiver usando a API v2 e quiser usar identidades gerenciadas, migre da v2 para a v3. Para isso, confira Introdução à migração da v2 dos Serviços de Mídia para a v3.

Se você quiser acessar uma conta de armazenamento, quando ela estiver configurada para bloquear solicitações de endereços IP desconhecidos, a conta dos Serviços de Mídia deverá ter acesso à essa conta. Siga as etapas abaixo para criar uma identidade gerenciada para a conta dos Serviços de Mídia e conceder à identidade o acesso ao armazenamento usando a CLI dos Serviços de Mídia.

A conta dos Serviços de Mídia usa uma Identidade Gerenciada para acessar o armazenamento

Este tutorial usa a API de Serviços de Mídia de 1º de maio de 2020.

Visão geral

Aviso

Você não pode usar URLs JobInputHTTP ou SAS com uma conta de armazenamento que não esteja associada a uma conta dos Serviços de Mídia. Elas são uma conveniência para clientes que têm conteúdo existente que pode ser acessado usando HTTP(S), por exemplo, se você tiver arquivos de mídia em um servidor público ou armazenado com outro provedor de nuvem. Se você estiver criando novas soluções, use Ativos para entradas de trabalho.

Para proteger o acesso a uma conta de armazenamento usada pelos Serviços de Mídia:

  • Configure a conta de armazenamento para negar todos os endereços IP (ou apenas permitir endereços IP na rede do cliente)
  • Configure a conta de armazenamento para permitir o acesso a "AzureServices"
  • Configure os Serviços de Mídia para acessar a conta de armazenamento usando a Identidade Gerenciada
  • Carregue o conteúdo de mídia para ativos dos Serviços de Mídia
  • Crie trabalhos de codificação que usam ativos dos Serviços de Mídia como a entrada do trabalho. NÃO use URLs SAS ou JobInputHTTP.

Entrar no Azure

Para usar qualquer um dos comandos neste artigo, primeiro você precisa entrar na assinatura que deseja usar.

Entre no Azure. Ao usar esse comando, você será solicitado a fornecer a assinatura que deseja usar.

az login

Configurar assinatura

Use este comando para definir a assinatura com a qual deseja trabalhar.

Definir a assinatura do Azure com a CLI

No comando a seguir, forneça a ID de assinatura do Azure que você deseja usar para a conta de Serviços de Mídia.

az account set --subscription <subscriptionName>

Nomes de recurso

Antes de começar, decida os nomes dos recursos que você criará. Eles devem ser facilmente identificáveis como um conjunto, especialmente se você não planeja usá-los depois dos testes. As regras de nomenclatura são diferentes para diversos tipos de recursos, portanto, é melhor usar apenas letras minúsculas. Por exemplo, "mediatest1rg" para o nome do grupo de recursos e "mediatest1stor" para o nome da conta de armazenamento. Use os mesmos nomes para cada etapa neste artigo.

Esses nomes serão mencionados nos comandos abaixo. Os nomes dos recursos necessários são:

  • myRG
  • myStorageAccount
  • myAmsAccount
  • local

Observação

Os hifens acima são usados apenas para separar as palavras de diretrizes. Para evitar a inconsistência na nomenclatura de recursos dos serviços do Azure, não use hifens ao dar nome aos seus recursos. Além disso, você não cria o nome da região. O nome da região é determinado pelo Azure.

Listar regiões do Azure

Se você não souber o nome da região a ser usada, use este comando para ver a listagem:

Use este comando para listar as regiões disponíveis para sua conta.

az account list-locations --query "[].{DisplayName:displayName, Name:name}" -o table

Sequência

Cada uma das etapas a seguir é feita em uma determinada ordem, porque um ou mais valores das respostas JSON são usados na próxima etapa da sequência.

Criar uma conta de Armazenamento

A conta dos Serviços de Mídia que você criará deverá ter uma conta de armazenamento associada a ela. Crie a conta de armazenamento da conta dos Serviços de Mídia primeiro. Você usará o nome da conta de armazenamento que substitui myStorageAccount para as etapas subsequentes.

Criar uma conta de Armazenamento do Azure com a CLI

Use os comandos a seguir para criar uma conta de armazenamento do Azure.

Para criar uma conta de armazenamento, você deve primeiro criar um grupo de recursos dentro de um local.

Para listar os locais disponíveis, use o seguinte comando:

Listar locais disponíveis com a CLI

Para listar os locais disponíveis, use o seguinte comando:

az account list-locations

Criar um grupo de recursos com a CLI

Para criar um grupo de recursos, use o seguinte comando:

az group create -n <resourceGroupName> --location chooseLocation

Escolher um SKU

Você também precisa escolher uma SKU para sua conta de armazenamento. Você pode listar as contas de armazenamento.

Escolha uma SKU na lista a seguir: Standard_LRS, Standard_GRS, Standard_RAGRS, Standard_ZRS, Premium_LRS, Premium_ZRS, Standard_GZRS, Standard_RAGZRS.

  • Altere myStorageAccount para um nome exclusivo com um comprimento menor do que 24 caracteres.
  • Altere chooseLocation para a região na qual você quer trabalhar.
  • Altere chooseSKU para sua SKU preferencial.
az storage account create -n <myStorageAccount> -g <resourceGroup>  --location <chooseLocation> --sku <chooseSKU>

Criar uma conta dos Serviços de Mídia com uma entidade de serviço (identidade gerenciada)

Agora crie a conta dos Serviços de Mídia com uma entidade de serviço, também chamada de identidade gerenciada.

Importante

Lembre-se de usar o sinalizador --mi no comando. Caso contrário, não será possível localizar o principalId para uma etapa posterior.

O comando da CLI do Azure a seguir cria uma nova conta dos Serviços de Mídia. Substitua os seguintes valores: your-media-services-account-nameyour-storage-account-name e your-resource-group-name pelos nomes que você deseja usar. O comando pressupõe que você já criou um grupo de recursos e uma conta de armazenamento.

Ele fornece à conta dos Serviços de Mídia uma identidade gerenciada atribuída pelo sistema com o sinalizador --mi-system-assigned.


az ams account create --name <your-media-services-account-name> --resource-group <your-resource-group-name> --mi-system-assigned --storage-account <your-storage-account-name>

Exemplo de resposta JSON:

{
  "encryption": {
    "keyVaultProperties": null,
    "type": "SystemKey"
  },
  "id": "/subscriptions/00000000-0000-0000-0000-00000000/resourceGroups/your-resource-group/providers/Microsoft.Media/mediaservices/your-media-services-account-name",
  "identity": {
    "principalId": "00000000-0000-0000-0000-00000000",
    "tenantId": "00000000-0000-0000-0000-00000000",
    "type": "SystemAssigned"
  },
  "location": "your-region",
  "mediaServiceId": "00000000-0000-0000-0000-00000000",
  "name": "your-media-services-account-name",
  "resourceGroup": "your-resource-group",
  "storageAccounts": [
    {
      "id": "/subscriptions/00000000-0000-0000-0000-00000000/resourceGroups/mediatest1rg/providers/Microsoft.Storage/storageAccounts/your-storage-account-name",
      "resourceGroup": "your-resource-group",
      "type": "Primary"
    }
  ],
  "storageAuthentication": "System",
  "systemData": {
    "createdAt": "2021-05-14T21:25:12.3492071Z",
    "createdBy": "you@example.com",
    "createdByType": "User",
    "lastModifiedAt": "2021-05-14T21:25:12.3492071Z",
    "lastModifiedBy": "you@example.com",
    "lastModifiedByType": "User"
  },
  "tags": null,
  "type": "Microsoft.Media/mediaservices"
}

Conceder o acesso da Identidade Gerenciada dos Serviços de Mídia à Conta de armazenamento

Conceda o acesso da Identidade Gerenciada dos Serviços de Mídia à Conta de armazenamento. Há três comandos:

Obter (mostrar) a identidade gerenciada da conta dos Serviços de Mídia

O primeiro comando a seguir mostra a identidade gerenciada da conta dos Serviços de Mídia, que é o principalId que aparece no JSON retornado pelo comando.

Esse comando mostra todas as propriedades de uma conta dos Serviços de Mídia.

az ams account show --name <your-media-services-account-name> --resource-group <your-resource-group>

Observação

Se você tiver atribuído funções de acesso à conta dos Serviços de Mídia, essa linha retornará "storageAuthentication": "ManagedIdentity".

Exemplo de resposta JSON:

{
  "encryption": {
    "keyVaultProperties": null,
    "type": "SystemKey"
  },
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/your-resource-group-name/providers/Microsoft.Media/mediaservices/your-media-services-account",
  "identity": {
    "principalId": "00000000-0000-0000-0000-000000000000",
    "tenantId": "00000000-0000-0000-0000-000000000000",
    "type": "SystemAssigned"  //Type will show "Managed Identity" if you have assigned a role to the Media Services account.
  },
  "location": "your-region",
  "mediaServiceId": "00000000-0000-0000-0000-000000000000",
  "name": "your-media-services-account",
  "resourceGroup": "your-resource-group-name",
  "storageAccounts": [
    {
      "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/your-resource-group-name/providers/Microsoft.Storage/storageAccounts/your-storage-account-name",
      "resourceGroup": "your-resource-group-name",
      "type": "Primary"
    }
  ],
  "storageAuthentication": "System", //If you have assigned access roles to the account, this line will return storageAuthentication": "ManagedIdentity"
  "systemData": {
    "createdAt": "2021-05-14T21:25:12.3492071Z",
    "createdBy": "you@example.com",
    "createdByType": "User",
    "lastModifiedAt": "2021-05-14T21:25:12.3492071Z",
    "lastModifiedBy": "you@example.com",
    "lastModifiedByType": "User"
  },
  "tags": null,
  "type": "Microsoft.Media/mediaservices"
}

Criar a atribuição de função de colaborador de armazenamento de Blob

O comando a seguir cria uma função de Colaborador de Blob de Armazenamento.

Altere assignee para principalId. O comando pressupõe que você já criou um grupo de recursos e uma conta de armazenamento. Use your-resource-group-name e your-storage-account-name como parte do valor do scope, conforme mostrado no comando a seguir:

az role assignment create --assignee 00000000-0000-0000-000000000000 --role "Storage Blob Data Contributor" --scope "/subscriptions/00000000-0000-0000-000000000000/resourceGroups/<your-resource-group-name>/providers/Microsoft.Storage/storageAccounts/<your-storage-account-name>"

Exemplo de resposta JSON:

{
  "canDelegate": null,
  "condition": null,
  "conditionVersion": null,
  "description": null,
  "id": "/subscriptions/00000000-0000-0000-000000000000/resourceGroups/your-resource-group-name/providers/Microsoft.Storage/storageAccounts/your-storage-account-name/providers/Microsoft.Authorization/roleAssignments/00000000-0000-0000-000000000000",
  "name": "00000000-0000-0000-000000000000",
  "principalId": "00000000-0000-0000-000000000000",
  "principalType": "ServicePrincipal",
  "resourceGroup": "your-resource-group-name",
  "roleDefinitionId": "/subscriptions/00000000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/00000000-0000-0000-000000000000",
  "scope": "/subscriptions/00000000-0000-0000-000000000000/resourceGroups/your-resource-group-name/providers/Microsoft.Storage/storageAccounts/your-storage-account-name",
  "type": "Microsoft.Authorization/roleAssignments"
}

Criar a atribuição de função de Leitor

O comando a seguir cria uma função de Leitor.

Altere assignee para principalId. O comando pressupõe que você já criou um grupo de recursos e uma conta de armazenamento. Use your-resource-group-name e your-storage-account-name como parte do valor do scope, conforme mostrado no comando a seguir:

az role assignment create --assignee 00000000-0000-0000-000000000000 --role "Reader" --scope "/subscriptions/00000000-0000-0000-000000000000/resourceGroups/your-resource-group-name/providers/Microsoft.Storage/storageAccounts/your-storage-account-name"

Exemplo de resposta JSON:

{
  "canDelegate": null,
  "condition": null,
  "conditionVersion": null,
  "description": null,
  "id": "/subscriptions/00000000-0000-0000-000000000000/resourceGroups/your-resource-group-name/providers/Microsoft.Storage/storageAccounts/your-storage-account-name/providers/Microsoft.Authorization/roleAssignments/00000000-0000-0000-000000000000",
  "name": "00000000-0000-0000-000000000000",
  "principalId": "00000000-0000-0000-000000000000",
  "principalType": "Reader",
  "resourceGroup": "your-resource-group-name",
  "roleDefinitionId": "/subscriptions/00000000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/00000000-0000-0000-000000000000",
  "scope": "/subscriptions/00000000-0000-0000-000000000000/resourceGroups/your-resource-group-name/providers/Microsoft.Storage/storageAccounts/your-storage-account-name",
  "type": "Microsoft.Authorization/roleAssignments"
}

Usar a Identidade Gerenciada para acessar a conta de armazenamento

O comando a seguir fornece acesso de Identidade Gerenciada aos Serviços de Mídia para uma conta de armazenamento.

No comando a seguir, altere your-resource-group-name para o nome do grupo de recursos e your-media-services-account-name para o nome da conta dos Serviços de Mídia com o qual você deseja trabalhar:

az ams account storage set-authentication --storage-auth ManagedIdentity --resource-group <your-resource-group_name> --account-name <your-media-services-account-name>

Exemplo de resposta JSON:

{
  "encryption": {
    "keyVaultProperties": null,
    "type": "SystemKey"
  },
  "id": "/subscriptions/00000000-0000-0000-00000000/resourceGroups/your-resource-group-name/providers/Microsoft.Media/mediaservices/your-storage-account-name",
  "identity": null,
  "location": "West US 2",
  "mediaServiceId": "00000000-0000-0000-00000000",
  "name": "your-media-services-account",
  "resourceGroup": "your-resource-group-name",
  "storageAccounts": [
    {
      "id": "/subscriptions/2b461b25-f7b4-4a22-90cc-d640a14b5471/resourceGroups/your-resource-group-name/providers/Microsoft.Storage/storageAccounts/your-storage-account-name",
      "resourceGroup": "your-resource-group-name",
      "type": "Primary"
    }
  ],
  "storageAuthentication": "ManagedIdentity",
  "systemData": {
    "createdAt": "2021-05-17T19:15:00.8850297Z",
    "createdBy": "you@example.com",
    "createdByType": "User",
    "lastModifiedAt": "2021-05-17T21:23:11.3863627Z",
    "lastModifiedBy": "you@example.com",
    "lastModifiedByType": "User"
  },
  "tags": null,
  "type": "Microsoft.Media/mediaservices"
}

Validação

Para confirmar que a conta está criptografada usando uma chave gerenciada pelo cliente, veja as propriedades de criptografia da conta:

Esse comando mostra todas as propriedades de uma conta dos Serviços de Mídia.

az ams account show --name <your-media-services-account-name> --resource-group <your-resource-group>

Observação

Se você tiver atribuído funções de acesso à conta dos Serviços de Mídia, essa linha retornará "storageAuthentication": "ManagedIdentity".

Exemplo de resposta JSON:

{
  "encryption": {
    "keyVaultProperties": null,
    "type": "SystemKey"
  },
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/your-resource-group-name/providers/Microsoft.Media/mediaservices/your-media-services-account",
  "identity": {
    "principalId": "00000000-0000-0000-0000-000000000000",
    "tenantId": "00000000-0000-0000-0000-000000000000",
    "type": "SystemAssigned"  //Type will show "Managed Identity" if you have assigned a role to the Media Services account.
  },
  "location": "your-region",
  "mediaServiceId": "00000000-0000-0000-0000-000000000000",
  "name": "your-media-services-account",
  "resourceGroup": "your-resource-group-name",
  "storageAccounts": [
    {
      "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/your-resource-group-name/providers/Microsoft.Storage/storageAccounts/your-storage-account-name",
      "resourceGroup": "your-resource-group-name",
      "type": "Primary"
    }
  ],
  "storageAuthentication": "System", //If you have assigned access roles to the account, this line will return storageAuthentication": "ManagedIdentity"
  "systemData": {
    "createdAt": "2021-05-14T21:25:12.3492071Z",
    "createdBy": "you@example.com",
    "createdByType": "User",
    "lastModifiedAt": "2021-05-14T21:25:12.3492071Z",
    "lastModifiedBy": "you@example.com",
    "lastModifiedByType": "User"
  },
  "tags": null,
  "type": "Microsoft.Media/mediaservices"
}

A propriedade storageAuthentication deve mostrar “ManagedIdentity”.

Para validação adicional, você pode verificar os logs do Armazenamento do Azure para ver qual método de autenticação é usado para cada solicitação.

Limpar recursos

Se você não pretende usar os recursos que criou, exclua o grupo de recursos.

Exclua um grupo de recursos com a CLI

az group delete --name <your-resource-group-name>

Obter ajuda e suporte

Você pode entrar em contato com os Serviços de Mídia com dúvidas ou seguir nossas atualizações por um dos seguintes métodos: