Tutoriel : Stockage approuvé Media Services
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 :
- Créez un groupe de ressources.
- Créez un compte de stockage.
- 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.
- Recherchez l’ID du rôle Contributeur aux données Blob du stockage.
- Appelez le fournisseur d’autorisation et ajoutez une attribution de rôle.
- Mettez à jour le compte Media Services pour l’authentification auprès du compte de stockage à l’aide de Managed Identity.
- 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 :
- Q & R
-
Stack Overflow. Étiquetez les questions avec
azure-media-services
. - @MSFTAzureMedia ou utiliser @AzureSupport pour demander de l’aide.
- Ouvrez un ticket de support via le Portail Azure.