Esercitazione: Archiviazione attendibile di Servizi multimediali

Logo servizi multimediali v3


Avviso

Servizi multimediali di Azure verrà ritirato il 30 giugno 2024. Per altre informazioni, vedere la Guida al ritiro di AMS.

In questa esercitazione si apprenderà come:

  • Come abilitare l'archiviazione attendibile per Servizi multimediali di Azure
  • Come usare identità gestite per l'archiviazione attendibile
  • Come concedere ai servizi di Azure l'accesso a un account di archiviazione quando si usa il controllo di accesso alla rete, ad esempio un firewall o una VPN

Con l'API 2020-05-01, è possibile abilitare l'archiviazione attendibile associando un'identità gestita a un account di Servizi multimediali.

Nota

L'archiviazione attendibile è disponibile solo nell'API e non è attualmente abilitata nella portale di Azure.

Servizi multimediali può accedere automaticamente all'account di archiviazione usando l'autenticazione di sistema. Servizi multimediali convalida che l'utente che aggiunge l'associazione ha accesso all'account di archiviazione con Azure Resource Manager controllo degli accessi in base al ruolo.

Utilizzo degli account di archiviazione tra sottoscrizioni

Nota

Quando Servizi multimediali è configurato per usare l'identità gestita per accedere all'archiviazione, Servizi multimediali può usare qualsiasi account di archiviazione a cui può accedere l'identità gestita.

Quando si usa l'autenticazione di sistema per l'archiviazione, l'account di archiviazione deve trovarsi nella stessa sottoscrizione dell'account di Servizi multimediali. Usare gli account di archiviazione nella stessa area dell'account servizi multimediali per evitare costi aggiuntivi di uscita dei dati.

Per entrambi i tipi di autenticazione, l'entità che crea o aggiorna l'account servizi multimediali deve avere l'autorizzazione 'Microsoft.Storage/storageAccounts/listkeys/action' sull'account di archiviazione.

Panoramica

Importante

Usare l'API 2020-05-01 per tutte le richieste a Servizi multimediali.

Questi sono i passaggi generali per la creazione di archiviazione attendibile per Servizi multimediali:

  1. Crea un gruppo di risorse.
  2. Creare un account di archiviazione.
  3. Eseguire il polling dell'account di archiviazione fino a quando non è pronto. Quando l'account di archiviazione è pronto, la richiesta restituirà l'ID dell'entità servizio.
  4. Trovare l'ID del ruolo Collaboratore dati BLOB di archiviazione .
  5. Chiamare il provider di autorizzazione e aggiungere un'assegnazione di ruolo.
  6. Aggiornare l'account dei servizi multimediali per l'autenticazione all'account di archiviazione usando l'identità gestita.
  7. Eliminare le risorse se non si vuole continuare a usarle e caricarle.

Prerequisiti

È necessaria una sottoscrizione di Azure per iniziare. Se non si ha una sottoscrizione di Azure, creare un account per una versione di prova gratuita.

Ottenere l'ID tenant e l'ID sottoscrizione

Se non si conosce come ottenere l'ID tenant e l'ID sottoscrizione, vedere Come trovare la sottoscrizione e l'ID tenant.

Creare un'entità servizio e un segreto

Se non si sa come creare un'entità servizio e un segreto, vedere Ottenere le credenziali per accedere all'API servizi multimediali.

Usare un client REST

Questo script è destinato all'uso con un client REST, ad esempio ciò che è disponibile nelle estensioni del codice di Visual Studio. Adattarla per l'ambiente di sviluppo.

Impostare le variabili iniziali

Questa parte dello script è da usare in un client REST. È possibile usare variabili in modo diverso all'interno dell'ambiente di sviluppo.

### AAD details
@tenantId = your tenant ID
@servicePrincipalId = the service principal ID
@servicePrincipalSecret = the service principal secret

### AAD resources
@armResource = https%3A%2F%2Fmanagement.core.windows.net%2F
@graphResource = https%3A%2F%2Fgraph.windows.net%2F
@storageResource = https%3A%2F%2Fstorage.azure.com%2F

### Service endpoints
@armEndpoint = management.azure.com
@graphEndpoint = graph.windows.net
@aadEndpoint = login.microsoftonline.com

### ARM details
@subscription = your subscription id
@resourceGroup = the resource group you'll be creating
@storageName = the name of the storage you'll be creating
@accountName = the name of the account you'll be creating
@resourceLocation = East US (or the location that works best for your region)

Ottenere un token per Azure Resource Manager

// @name getArmToken
POST https://{{aadEndpoint}}/{{tenantId}}/oauth2/token
Accept: application/json
Content-Type: application/x-www-form-urlencoded

resource={{armResource}}&client_id={{servicePrincipalId}}&client_secret={{servicePrincipalSecret}}&grant_type=client_credentials

Ottenere un token per l'API Graph

Questa parte dello script è da usare in un client REST. È possibile usare variabili in modo diverso all'interno dell'ambiente di sviluppo.

// @name getGraphToken
POST https://{{aadEndpoint}}/{{tenantId}}/oauth2/token
Accept: application/json
Content-Type: application/x-www-form-urlencoded

resource={{graphResource}}&client_id={{servicePrincipalId}}&client_secret={{servicePrincipalSecret}}&grant_type=client_credentials

Ottenere i dettagli dell'entità servizio

// @name getServicePrincipals
GET https://{{graphEndpoint}}/{{tenantId}}/servicePrincipals?$filter=appId%20eq%20'{{servicePrincipalId}}'&api-version=1.6
x-ms-client-request-id: cae3e4f7-17a0-476a-a05a-0dab934ba959
Authorization:  Bearer {{getGraphToken.response.body.access_token}}

Archiviare l'ID dell'entità servizio

@servicePrincipalObjectId = {{getServicePrincipals.response.body.value[0].objectId}}

Creare un gruppo di risorse

// @name createResourceGroup
PUT https://{{armEndpoint}}/subscriptions/{{subscription}}/resourceGroups/{{resourceGroup}}
    ?api-version=2016-09-01
Authorization: Bearer {{getArmToken.response.body.access_token}}
Content-Type: application/json; charset=utf-8

{
    "location": "{{resourceLocation}}"
}

Crea account di archiviazione

// @name createStorageAccount
PUT https://{{armEndpoint}}/subscriptions/{{subscription}}/resourceGroups/{{resourceGroup}}/providers/Microsoft.Storage/storageAccounts/{{storageName}}
    ?api-version=2019-06-01
Authorization: Bearer {{getArmToken.response.body.access_token}}
Content-Type: application/json; charset=utf-8

{
    "sku": {
    "name": "Standard_GRS"
    },
    "kind": "StorageV2",
    "location": "{{resourceLocation}}",
    "properties": {
    }
}

Ottenere lo stato dell'account di archiviazione

L'account di archiviazione richiederà un po ' di tempo per essere pronto in modo che questa richiesta esegue il polling per il relativo stato. Ripetere questa richiesta fino a quando l'account di archiviazione non è pronto.

// @name getStorageAccountStatus
GET {{createStorageAccount.response.headers.Location}}
Authorization: Bearer {{getArmToken.response.body.access_token}}

Ottenere i dettagli dell'account di archiviazione

Quando l'account di archiviazione è pronto, ottenere le proprietà dell'account di archiviazione.

// @name getStorageAccount
GET https://{{armEndpoint}}/subscriptions/{{subscription}}/resourceGroups/{{resourceGroup}}/providers/Microsoft.Storage/storageAccounts/{{storageName}}
    ?api-version=2019-06-01
Authorization: Bearer {{getArmToken.response.body.access_token}}

Ottenere un token per ARM

// @name getStorageToken
POST https://{{aadEndpoint}}/{{tenantId}}/oauth2/token
Accept: application/json
Content-Type: application/x-www-form-urlencoded

resource={{storageResource}}&client_id={{servicePrincipalId}}&client_secret={{servicePrincipalSecret}}&grant_type=client_credentials

Creare un account di Servizi multimediali con un'identità gestita assegnata dal sistema

// @name createMediaServicesAccount
PUT https://{{armEndpoint}}/subscriptions/{{subscription}}/resourceGroups/{{resourceGroup}}/providers/Microsoft.Media/mediaservices/{{accountName}}?api-version=2020-05-01
Authorization: Bearer {{getArmToken.response.body.access_token}}
Content-Type: application/json; charset=utf-8

{
  "identity": {
      "type": "SystemAssigned"
  },
  "properties": {
    "storageAccounts": [
      {
        "id": "{{getStorageAccountStatus.response.body.id}}"
      }
    ],
    "encryption": {
      "type": "SystemKey"
    }
  },
  "location": "{{resourceLocation}}"
}

Ottenere la definizione del ruolo dei dati BLOB di archiviazione

// @name getStorageBlobDataContributorRoleDefinition
GET https://management.azure.com/subscriptions/{{subscription}}/resourceGroups/{{resourceGroup}}/providers/Microsoft.Storage/storageAccounts/{{storageName}}/providers/Microsoft.Authorization/roleDefinitions?$filter=roleName%20eq%20%27Storage%20Blob%20Data%20Contributor%27&api-version=2015-07-01
Authorization: Bearer {{getArmToken.response.body.access_token}}

Impostare l'assegnazione di ruolo di archiviazione

L'assegnazione di ruolo indica che l'entità servizio per l'account Servizi multimediali ha il ruolo di collaboratore dei dati BLOB di archiviazione. Questo può richiedere un po' di tempo ed è importante attendere o l'account di Servizi multimediali non verrà configurato correttamente.

PUT https://management.azure.com/subscriptions/{{subscription}}/resourceGroups/{{resourceGroup}}/providers/Microsoft.Storage/storageAccounts/{{storageName}}/providers/Microsoft.Authorization/roleAssignments/{{$guid}}?api-version=2020-04-01-preview
Authorization: Bearer {{getArmToken.response.body.access_token}}
Content-Type: application/json; charset=utf-8

{
  "properties": {
    "roleDefinitionId": "/subscriptions/{{subscription}}/resourceGroups/{{resourceGroup}}/providers/Microsoft.Storage/storageAccounts/{{storageName}}/providers/Microsoft.Authorization/roleDefinitions/{{getStorageBlobDataContributorRoleDefinition.response.body.value[0].name}}",
    "principalId": "{{createMediaServicesAccount.response.body.identity.principalId}}"
  }
}

Concedere l'accesso all'identità gestita all'account di archiviazione

Questa azione modifica l'accesso dall'identità gestita dal sistema all'identità gestita. In questo modo, l'account di archiviazione può accedere all'account di archiviazione tramite un firewall come servizi di Azure può accedere all'account di archiviazione indipendentemente dalle regole di accesso IP (ACL).

Attendere di nuovo che il ruolo sia stato assegnato nell'account di archiviazione o che l'account di Servizi multimediali venga configurato in modo errato.

// @name setStorageAccountFirewall
PUT https://{{armEndpoint}}/subscriptions/{{subscription}}/resourceGroups/{{resourceGroup}}/providers/Microsoft.Storage/storageAccounts/{{storageName}}
    ?api-version=2019-06-01
Authorization: Bearer {{getArmToken.response.body.access_token}}
Content-Type: application/json; charset=utf-8

{
    "sku": {
    "name": "Standard_GRS"
    },
    "kind": "StorageV2",
    "location": "{{resourceLocation}}",
    "properties": {
      "minimumTlsVersion": "TLS1_2",
      "networkAcls": {
        "bypass": "AzureServices",
        "virtualNetworkRules": [],
        "ipRules": [],
        "defaultAction": "Deny"
      }
    }
}

Aggiornare l'account servizi multimediali per usare l'identità gestita

Questa richiesta potrebbe essere necessario ripetere alcune volte perché l'assegnazione di ruolo di archiviazione può richiedere alcuni minuti per propagare.

// @name updateMediaServicesAccountWithManagedStorageAuth
PUT https://{{armEndpoint}}/subscriptions/{{subscription}}/resourceGroups/{{resourceGroup}}/providers/Microsoft.Media/mediaservices/{{accountName}}?api-version=2020-05-01
Authorization: Bearer {{getArmToken.response.body.access_token}}
Content-Type: application/json; charset=utf-8

{
  "identity": {
      "type": "SystemAssigned"
  },
  "properties": {
    "storageAccounts": [
      {
        "id": "{{getStorageAccountStatus.response.body.id}}"
      }
    ],
    "storageAuthentication": "ManagedIdentity",
    "encryption": {
      "type": "SystemKey"
    }
  },
  "location": "{{resourceLocation}}"
}

Test dell'accesso

Testare l'accesso creando un asset nell'account di archiviazione.

// @name createAsset
PUT https://{{armEndpoint}}/subscriptions/{{subscription}}/resourceGroups/{{resourceGroup}}/providers/Microsoft.Media/mediaservices/{{accountName}}/assets/testasset{{index}}withoutmi?api-version=2018-07-01
Authorization: Bearer {{getArmToken.response.body.access_token}}
Content-Type: application/json; charset=utf-8

{
}

Eliminare le risorse

Se non si desidera mantenere le risorse create e continuare a essere addebitate per tali risorse, eliminarle.

### Clean up the Storage account
DELETE https://{{armEndpoint}}/subscriptions/{{subscription}}/resourceGroups/{{resourceGroup}}/providers/Microsoft.Storage/storageAccounts/{{storageName}}
    ?api-version=2019-06-01
Authorization: Bearer {{getArmToken.response.body.access_token}}

### Clean up the Media Services account
DELETE https://{{armEndpoint}}/subscriptions/{{subscription}}/resourceGroups/{{resourceGroup}}/providers/Microsoft.Media/mediaservices/{{accountName}}?api-version=2020-05-01
Authorization: Bearer {{getArmToken.response.body.access_token}}

### Clean up the Media Services account
GET https://{{armEndpoint}}/subscriptions/{{subscription}}/resourceGroups/{{resourceGroup}}/providers/Microsoft.Media/mediaservices/{{accountName}}?api-version=2020-05-01
Authorization: Bearer {{getArmToken.response.body.access_token}}

Guida e supporto tecnico

È possibile contattare Servizi multimediali con domande o seguire gli aggiornamenti in base a uno dei metodi seguenti: