Tutorial: Aceder ao armazenamento com uma Identidade Gerida dos Serviços de Multimédia

Logótipo dos Serviços de Multimédia v3


Aviso

Os Serviços de Multimédia do Azure serão descontinuados a 30 de junho de 2024. Para obter mais informações, consulte o Guia de Descontinuação do AMS.

Nota

As identidades geridas só estão disponíveis para contas de Serviços de Multimédia criadas com a API v3. Se estiver a utilizar a API v2 e quiser utilizar identidades geridas, migre de v2 para v3 Migrar dos Serviços de Multimédia v2 para a introdução v3.

Se quiser aceder a uma conta de armazenamento quando a conta de armazenamento estiver configurada para bloquear pedidos de endereços IP desconhecidos, a conta dos Serviços de Multimédia tem de ter acesso à conta de Armazenamento. Siga os passos abaixo para criar uma Identidade Gerida para a conta dos Serviços de Multimédia e conceder a esta identidade acesso ao armazenamento com a CLI dos Serviços de Multimédia.

A conta dos Serviços de Multimédia utiliza uma Identidade Gerida para aceder ao armazenamento

Este tutorial utiliza a API de Serviços de Multimédia 2020-05-01.

Descrição Geral

Aviso

Não pode utilizar URLs de JobInputHTTP ou SAS com uma conta de armazenamento que não esteja associada a uma conta dos Serviços de Multimédia. Estes são concebidos como uma conveniência para os clientes que têm conteúdos existentes que podem ser acedidos através de HTTP(S), por exemplo, se tiver ficheiros de multimédia num servidor destinado ao público ou armazenados com outro fornecedor de cloud. Se estiver a criar novas soluções, utilize Recursos para entradas de tarefas.

Para proteger o acesso a uma conta de armazenamento utilizada pelos Serviços de Multimédia:

  • Configurar a conta de armazenamento para negar todos os endereços IP (ou permitir apenas endereços IP na rede do cliente)
  • Configurar a conta de armazenamento para permitir o acesso a "AzureServices"
  • Configurar os Serviços de Multimédia para aceder à conta de armazenamento com a Identidade Gerida
  • Carregar conteúdo multimédia para Recursos dos Serviços de Multimédia
  • Crie tarefas de codificação que utilizem os Recursos dos Serviços de Multimédia como entrada da tarefa. DO NOT use SAS URLS or JobInputHTTP.

Iniciar sessão no Azure

Para utilizar qualquer um dos comandos neste artigo, primeiro tem de ter sessão iniciada na subscrição que pretende utilizar.

Inicie sessão no Azure. Quando utilizar este comando, ser-lhe-á pedida a subscrição que pretende utilizar.

az login

Definir subscrição

Utilize este comando para definir a subscrição com a qual pretende trabalhar.

Definir a subscrição do Azure com a CLI

No comando seguinte, forneça o ID da subscrição do Azure que quer utilizar na conta dos Serviços de Multimédia.

az account set --subscription <subscriptionName>

Nomes de recursos

Antes de começar, decida os nomes dos recursos que irá criar. Devem ser facilmente identificáveis como um conjunto, especialmente se não estiver a planear utilizá-los depois de terminar os testes. As regras de nomenclatura são diferentes para muitos tipos de recursos, pelo que é melhor manter-se em maiúsculas e minúsculas. Por exemplo, "mediatest1rg" para o nome do grupo de recursos e "mediatest1stor" para o nome da conta de armazenamento. Utilize os mesmos nomes para cada passo neste artigo.

Verá estes nomes referenciados nos comandos abaixo. Os nomes dos recursos de que irá precisar são:

  • myRG
  • myStorageAccount
  • myAmsAccount
  • localização

Nota

Os hífenes acima são utilizados apenas para separar palavras de orientação. Devido à inconsistência dos recursos de nomenclatura nos serviços do Azure, não utilize hífenes quando atribuir um nome aos seus recursos. Além disso, não cria o nome da região. O nome da região é determinado pelo Azure.

Listar regiões do Azure

Se não tiver a certeza do nome real da região a utilizar, utilize este comando para obter uma listagem:

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

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

Sequence

Cada um dos passos abaixo é efetuado por uma ordem específica porque um ou mais valores das respostas JSON são utilizados no passo seguinte na sequência.

Criar uma conta de Armazenamento

A conta dos Serviços de Multimédia que vai criar tem de ter uma conta de armazenamento associada à mesma. Crie primeiro a conta de armazenamento para a conta dos Serviços de Multimédia. Irá utilizar o nome da conta de armazenamento que substitui para os passos myStorageAccount subsequentes.

Criar uma conta de Armazenamento do Azure com a CLI

Utilize os seguintes comandos para criar uma conta de Armazenamento do Azure.

Para criar uma conta de armazenamento, primeiro tem de criar um grupo de recursos numa localização.

Para listar as localizações disponíveis, utilize o seguinte comando:

Listar localizações disponíveis com a CLI

Para listar as localizações disponíveis, utilize o seguinte comando:

az account list-locations

Criar um grupo de recursos com a CLI

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

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

Escolher um SKU

Também tem de escolher um SKU para a sua conta de armazenamento. Pode listar contas de armazenamento.

Escolha um SKU na seguinte lista: Standard_LRS, Standard_GRS, Standard_RAGRS, Standard_ZRS, Premium_LRS, Premium_ZRS, Standard_GZRS Standard_RAGZRS.

  • Mude myStorageAccount para um nome exclusivo com um comprimento inferior a 24 carateres.
  • Altere chooseLocation para a região na qual pretende trabalhar.
  • Altere chooseSKU para o SKU preferencial.
az storage account create -n <myStorageAccount> -g <resourceGroup>  --location <chooseLocation> --sku <chooseSKU>

Criar uma conta dos Serviços de Multimédia com um Principal de Serviço (Identidade Gerida)

Agora, crie a conta dos Serviços de Multimédia com um Principal de Serviço, também conhecido como Identidade Gerida.

Importante

É importante que se lembre de utilizar o sinalizador --mi no comando. Caso contrário, não poderá encontrar o principalId para um passo posterior.

O seguinte comando da CLI do Azure cria uma nova conta dos Serviços de Multimédia. Substitua os seguintes valores: your-media-services-account-nameyour-storage-account-namee your-resource-group-name pelos nomes que pretende utilizar. O comando pressupõe que já criou um grupo de recursos e uma conta de Armazenamento.

Fornece à conta dos Serviços de Multimédia uma identidade gerida atribuída pelo sistema com o --mi-system-assigned sinalizador.


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>

Resposta JSON de exemplo:

{
  "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 acesso à Identidade Gerida dos Serviços de Multimédia à conta de Armazenamento

Conceda à Identidade Gerida dos Serviços de Multimédia acesso à conta de Armazenamento. Existem três comandos:

Obter (mostrar) a Identidade Gerida da conta dos Serviços de Multimédia

O primeiro comando abaixo mostra a Identidade Gerida da conta dos Serviços de Multimédia que é a principalId listada no JSON devolvido pelo comando.

Este comando mostra todas as propriedades de uma conta dos Serviços de Multimédia.

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

Nota

Se tiver atribuído funções de acesso à conta dos Serviços de Multimédia, esta linha devolverá "storageAuthentication": "ManagedIdentity".

Resposta JSON de exemplo:

{
  "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 da função Contribuidor de Blobs de Armazenamento

O comando seguinte cria uma função Contribuidor de Blobs de Armazenamento.

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

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>"

Resposta JSON de exemplo:

{
  "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 leitor

O comando seguinte cria uma função leitor.

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

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"

Resposta JSON de exemplo:

{
  "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"
}

Utilizar a Identidade Gerida para aceder à conta de Armazenamento

O seguinte comando dá a uma Identidade Gerida dos Serviços de Multimédia acesso a uma conta de armazenamento.

No comando abaixo, altere your-resource-group-name para o nome do grupo de recursos e your-media-services-account-namepara o nome da conta dos Serviços de Multimédia com o qual pretende trabalhar:

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

Resposta JSON de exemplo:

{
  "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 verificar se a conta está encriptada com uma Chave Gerida pelo Cliente, veja as propriedades de encriptação da conta:

Este comando mostra todas as propriedades de uma conta dos Serviços de Multimédia.

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

Nota

Se tiver atribuído funções de acesso à conta dos Serviços de Multimédia, esta linha devolverá "storageAuthentication": "ManagedIdentity".

Resposta JSON de exemplo:

{
  "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 storageAuthentication propriedade deve mostrar "ManagedIdentity".

Para validação adicional, pode verificar os registos do Armazenamento do Azure para ver que método de autenticação é utilizado para cada pedido.

Limpar os recursos

Se não estiver a planear utilizar os recursos que criou, elimine o grupo de recursos.

Eliminar um grupo de recursos com a CLI

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

Obter ajuda e suporte

Pode contactar os Serviços de Multimédia com perguntas ou seguir as nossas atualizações através de um dos seguintes métodos: