Partager via


Tutoriel : Stockage approuvé Media Services

Logo de Media Services v3


Avertissement

Azure Media Services sera mis hors service le 30 juin 2024. Pour plus d’informations, consultez le Guide de mise hors service AMS.

Ce didacticiel vous apprendra à effectuer les opérations suivantes :

  • Comment activer le stockage approuvé pour Azure Media Services.
  • Comment utiliser des identités managées pour le stockage approuvé.
  • Comment autoriser Azure Services à accéder à un compte de stockage lors de l’utilisation d’un contrôle d’accès réseau tel qu’un pare-feu ou un VPN.

Avec l’API 2020-05-01, vous pouvez activer le stockage approuvé en associant une identité managée à un compte Media Services.

Notes

Le stockage approuvé est uniquement disponible dans l’API et n’est actuellement pas activé dans le portail Azure.

Media Services peut accéder automatiquement à votre compte de stockage à l’aide de l’authentification système. Media Services vérifie que l’utilisateur qui ajoute l’association a accès au compte de stockage avec Azure Resource Manager RBAC.

Utilisation de comptes de stockage inter-abonnements

Notes

Lorsque Media Services est configuré pour utiliser l'identité managée pour accéder au stockage, Media Services peut utiliser tout compte de stockage auquel l'identité managée peut accéder.

Lorsque vous utilisez l'authentification système pour le stockage, le compte de stockage doit être dans le même abonnement que le compte Media Services. Utilisez des comptes de stockage situés dans la même région que le compte Media Services afin d’éviter des frais supplémentaires de sortie des données.

Pour les deux types d'authentification, le principal qui crée ou met à jour le compte Media Services doit avoir l'autorisation « Microsoft.Storage/storageAccounts/listkeys/action » sur le compte de stockage.

Vue d’ensemble

Important

Utilisez l’API 2020-05-01 pour toutes les requêtes à Media Services.

Voici les étapes générales pour créer un stockage approuvé pour Media Services :

  1. Créez un groupe de ressources.
  2. Créez un compte de stockage.
  3. Interrogez le compte de stockage jusqu’à ce qu’il soit prêt. Lorsque le compte de stockage est prêt, la requête retourne l’ID du principal du service.
  4. Recherchez l’ID du rôle Contributeur aux données Blob du stockage.
  5. Appelez le fournisseur d’autorisation et ajoutez une attribution de rôle.
  6. Mettez à jour le compte Media Services pour l’authentification auprès du compte de stockage à l’aide de Managed Identity.
  7. Supprimez les ressources si vous ne souhaitez pas continuer à les utiliser et à être facturé pour elles.

Prérequis

Pour commencer, vous avez besoin d’un abonnement Azure. Si vous n’avez pas d’abonnement Azure, créez un compte d’essai gratuit.

Obtenir votre ID d’abonnement et votre ID de locataire

Si vous ne savez pas comment obtenir votre ID de locataire et votre ID d’abonnement, consultez Guide pratique pour rechercher votre abonnement et votre ID de locataire.

Créer un principal du service et un secret

Si vous ne savez pas comment créer un principal du service et un secret, consultez Obtenir des informations d’identification pour accéder à l’API Media Services.

Utiliser un client REST

Ce script est destiné à être utilisé avec un client REST, comme ce qui est disponible dans les extensions Visual Studio Code. Adaptez-le à votre environnement de développement.

Définir les variables initiales

Cette partie du script est censée être utilisée dans un client REST. Vous pouvez utiliser des variables différemment dans votre environnement de développement.

### 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)

Obtenir un jeton pour 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

Obtenir un jeton pour l’API Graph

Cette partie du script est censée être utilisée dans un client REST. Vous pouvez utiliser des variables différemment dans votre environnement de développement.

// @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

Obtenir les détails du principal du service

// @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}}

Stocker l’ID du principal du service

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

Créer un groupe de ressources

// @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}}"
}

Créer un compte de stockage

// @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": {
    }
}

Obtenir l’état du compte de stockage

Il faut un certain temps avant que le compte de stockage soit prêt. Cette requête interroge donc son état. Répétez cette requête jusqu’à ce que le compte de stockage soit prêt.

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

Obtenir les détails du compte de stockage

Une fois le compte de stockage prêt, récupérez ses propriétés.

// @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}}

Obtenir un jeton pour 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

Créer un compte Media Services avec une identité managée affectée par le système

// @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}}"
}

Obtenir la définition du rôle de données Blob du stockage

// @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}}

Définir l’attribution de rôle de stockage

L’attribution de rôle indique que le principal du service pour le compte Media Services a le rôle de stockage Contributeur aux données Blob du stockage. Cela peut prendre un certain temps, et il est important d’attendre, sinon le compte Media Services ne sera pas configuré correctement.

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

Accorder à l’identité managée un accès de contournement au compte de stockage

Cette action change l’accès de « identité managée affectée par le système » en « Managed Identity ». Ainsi, Azure Services peut accéder au compte de stockage par le biais d’un pare-feu, car les services Azure peuvent accéder au compte de stockage quelles que soient les règles d’accès IP (ACL).

Là encore, attendez que le rôle ait été attribué dans le compte de stockage, sinon le compte Media Services sera configuré de manière incorrecte.

// @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"
      }
    }
}

Mettre à jour le compte Media Services de façon à utiliser Managed Identity

Il peut être nécessaire de retenter cette requête à plusieurs reprises, car la propagation de l’attribution de rôle de stockage peut prendre quelques minutes.

// @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}}"
}

Tester l’accès

Testez l’accès en créant une ressource dans le compte de stockage.

// @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

{
}

Supprimer des ressources

Si vous ne souhaitez pas conserver les ressources que vous avez créées et continuer à être facturé, supprimez-les.

### 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}}

Obtenir de l’aide et du support

Vous pouvez contacter Media Services pour toute question ou suivre nos mises à jour selon l’une des méthodes suivantes :