Tutorial: Acessar o armazenamento com uma Identidade Gerenciada dos Serviços de Mídia
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.
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-name
your-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:
- P & R
- Stack Overflow. Marque perguntas com
azure-media-services
. - @MSFTAzureMedia ou use @AzureSupport para solicitar suporte.
- Abra um tíquete de suporte por meio do portal do Azure.