Tutorial: Acessar o armazenamento com uma identidade gerenciada dos Serviços de Mídia

logotipo dos Serviços de Mídia v3


Advertência

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

Observação

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

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

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

Este tutorial usa a API de Serviços de Mídia 2020-05-01.

Visão geral

Advertência

Não é possível usar URLs JobInputHTTP ou SAS com uma conta de armazenamento que não esteja associada a uma conta de Serviços de Mídia. Estes destinam-se a ser uma conveniência para os clientes que têm de conteúdo existente que podem ser acedidos utilizando HTTP(S), por exemplo, se tiver ficheiros multimédia num servidor público ou armazenados noutro fornecedor de serviços em 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:

  • 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 Mídia para acessar a conta de armazenamento usando a Identidade Gerenciada
  • Carregar conteúdo de mídia para ativos de serviços de mídia
  • Crie trabalhos de codificação que usam Ativos de Serviços de Mídia como entrada de trabalho. NÃO usar URLs SAS ou JobInputHTTP.

Entrar no Azure

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

Entre no Azure. Quando utilizar este comando, ser-lhe-á solicitada 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 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 dos Serviços de Mídia.

az account set --subscription <subscriptionName>

Nomes de recursos

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 estiver planejando usá-los depois de terminar o teste. As regras de nomenclatura são diferentes para muitos tipos de recursos, por isso é melhor ficar com todas as 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 deste artigo.

Você verá esses nomes referenciados nos comandos abaixo. Os nomes dos recursos de que você precisará são:

  • minhaRG
  • myStorageAccount
  • myAmsAccount
  • Localização

Observação

Os hífenes acima são usados apenas para separar palavras de orientação. Devido à inconsistência de nomear recursos nos serviços do Azure, não use hífenes quando nomear 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 tiver certeza do nome real da região a ser usado, use este comando para obter uma 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 abaixo é feita em uma ordem específica 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 de Serviços de Mídia que você criará deve ter uma conta de armazenamento associada a ela. Crie primeiro a conta de armazenamento para a conta dos Serviços de Multimédia. 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

Escolha uma SKU

Você também precisa escolher um SKU para sua conta de armazenamento. Você pode listar 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 inferior a 24 caracteres.
  • Altere chooseLocation para a região na qual você deseja trabalhar.
  • Mude chooseSKU para o seu SKU preferido.
az storage account create -n <myStorageAccount> -g <resourceGroup>  --location <chooseLocation> --sku <chooseSKU>

Criar uma conta de 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 conhecida como Identidade Gerenciada.

Importante

É importante que você se lembre de usar o sinalizador --mi no comando. Caso contrário, você não será capaz de encontrar o principalId para uma etapa posterior.

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

Ele fornece à conta de Serviços de Mídia uma identidade gerenciada atribuída ao 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 à Identidade Gerenciada dos Serviços de Mídia acesso à conta de Armazenamento

Conceda à Identidade Gerenciada dos Serviços de Mídia acesso à conta de armazenamento. Existem três comandos:

Obter (mostrar) a Identidade Gerenciada da conta dos Serviços de Mídia

O primeiro comando abaixo mostra a Identidade Gerenciada da conta dos Serviços de Mídia, que é a principalId listada no JSON retornado pelo comando.

Este comando mostra todas as propriedades de uma conta de 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/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0/resourceGroups/your-resource-group-name/providers/Microsoft.Media/mediaservices/your-media-services-account",
  "identity": {
    "principalId": "ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0",
    "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
    "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/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0/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 de Colaborador do Blob de Armazenamento

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

Altere assignee para o principalId. O comando pressupõe que você já tenha criado um grupo de recursos e uma conta de armazenamento. Use your-resource-group-name e your-storage-account-name como parte do valor scope, 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>"

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 Leitor

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

Altere assignee para o principalId. O comando pressupõe que você já tenha criado um grupo de recursos e uma conta de armazenamento. Use your-resource-group-name e your-storage-account-name como parte do valor scope, 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"

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 dá a uma Identidade Gerenciada dos Serviços de Mí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 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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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á criptografada usando uma Chave Gerenciada pelo Cliente, exiba as propriedades de criptografia da conta:

Este comando mostra todas as propriedades de uma conta de 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/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0/resourceGroups/your-resource-group-name/providers/Microsoft.Media/mediaservices/your-media-services-account",
  "identity": {
    "principalId": "ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0",
    "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
    "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/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0/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 estiver planejando usar os recursos criados, exclua o grupo de recursos.

Excluir um grupo de recursos com a CLI

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

Obtenha ajuda e suporte

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