Tutoriel : Utiliser une clé de Key Vault pour chiffrer les données dans un compte 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.
Notes
Les identités managées sont uniquement disponibles pour les comptes Media Services créés à l’aide de l’API v3. Si vous utilisez l’API v2 et souhaitez utiliser des identités managées, effectuez une migration de la v2 vers la v3 Introduction à la migration de Media Services v2 vers la version 3.
Si vous souhaitez que Media Services chiffre les données à l'aide d'une clé de votre coffre de clés Key Vault, le compte Media Services doit avoir accès à ce coffre de clés. Suivez les étapes ci-dessous afin de créer une identité managée pour le compte Media Services, et d'accorder à cette identité l'accès à votre coffre de clés à l'aide de l'interface de ligne de commande Media Services.
Ce tutoriel utilise l’API Media Services 2020-05-01.
Connexion à Azure
Pour utiliser l’une des commandes de cet article, vous devez d’abord être connecté à l’abonnement que vous souhaitez utiliser.
Connectez-vous à Azure. Lorsque vous utilisez cette commande, vous êtes invité à entrer l’abonnement que vous souhaitez utiliser.
az login
Définir l’abonnement
Utilisez cette commande pour définir l’abonnement que vous souhaitez utiliser.
Définir l’abonnement Azure avec l’interface CLI
Dans la commande suivante, fournissez l’ID d’abonnement Azure que vous souhaitez utiliser pour le compte Media Services.
az account set --subscription <subscriptionName>
Noms de ressource
Avant de commencer, choisissez les noms des ressources que vous allez créer. Ils doivent être aisément identifiables en tant qu’ensemble, surtout si vous ne prévoyez pas de les utiliser une fois les tests terminés. Les règles de nommage variant selon les types de ressources, l’idéal est de s’en tenir aux minuscules. Par exemple, « mediatest1rg » pour le nom de votre groupe de ressources et « mediatest1stor » pour le nom de votre compte de stockage. Utilisez les mêmes noms à chacune des étapes de cet article.
Vous verrez ces noms référencés dans les commandes ci-dessous. Les noms de ressources dont vous aurez besoin sont les suivants :
- myRG
- myStorageAccount
- myAmsAccount
- myKeyVault
- myKey
- location
Notes
Les tirets ci-dessus sont uniquement utilisés pour séparer les mots. Compte tenu de l’incohérence de nommage des ressources dans les services Azure, n’utilisez pas de tirets lorsque vous nommez vos ressources. Par ailleurs, vous ne créez pas le nom de région. Celui-ci est déterminé par Azure.
Liste des régions Azure
Si besoin, utilisez cette commande pour accéder à la liste des régions :
Utilisez cette commande pour répertorier les régions disponibles pour votre compte.
az account list-locations --query "[].{DisplayName:displayName, Name:name}" -o table
Séquence
Chacune des étapes ci-dessous suit un ordre particulier car une ou plusieurs valeurs des réponses JSON sont utilisées à l’étape suivante de la séquence.
Créer un compte de stockage
Un compte de stockage doit être associé au compte Media Services que vous allez créer. Commencez par créer le compte de stockage à associer au compte Media Services. Vous allez utiliser your-storage-account-name
pour les étapes suivantes.
Créer un compte de stockage Azure avec l’interface CLI
Utilisez les commandes suivantes pour créer un compte Stockage Azure.
Pour créer un compte de stockage, vous devez d’abord créer un groupe de ressources dans un emplacement.
Pour répertorier les emplacements disponibles, utilisez la commande suivante :
Lister les emplacements disponibles avec l’interface CLI
Pour répertorier les emplacements disponibles, utilisez la commande suivante :
az account list-locations
Créer un groupe de ressources avec l’interface CLI
Pour créer un groupe de ressources, utilisez la commande suivante :
az group create -n <resourceGroupName> --location chooseLocation
Choisir une référence (SKU)
Vous devez également choisir un niveau tarifaire pour votre compte de stockage. Vous pouvez répertorier les comptes de stockage.
Choisissez un niveau tarifaire dans la liste suivante : Standard_LRS, Standard_GRS, Standard_RAGRS, Standard_ZRS, Premium_LRS, Premium_ZRS, Standard_GZRS, Standard_RAGZRS.
- Remplacez
myStorageAccount
par un nom unique dont la longueur est inférieure à 24 caractères. - Remplacez
chooseLocation
par la région dans laquelle vous voulez travailler. - Remplacez
chooseSKU
par le niveau tarifaire de votre choix.
az storage account create -n <myStorageAccount> -g <resourceGroup> --location <chooseLocation> --sku <chooseSKU>
Créer un compte Media Services avec un principal de service (identité managée)
Créez maintenant le compte Media Services avec un principal de service, également appelé identité managée.
Important
N’oubliez surtout pas d’utiliser l’indicateur --mi dans la commande. Sinon, vous ne trouverez pas la propriété principalId
nécessaire ultérieurement.
La commande suivante de Azure CLI crée un nouveau compte Media Services. Remplacez les valeurs suivantes : your-media-services-account-name
your-storage-account-name
et your-resource-group-name
par les noms que vous voulez utiliser. La commande suppose que vous avez déjà créé un groupe de ressources et un compte de stockage.
Cela donne au compte Media Services une identité managée attribuée par le système avec l’indicateur --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>
Exemple de réponse 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"
}
Créer un coffre de clés
Créez le coffre de clés. Le coffre de clés est utilisé pour chiffrer les données multimédias. Vous utiliserez your-keyvault-name
pour créer votre clé et pour les étapes ultérieures.
Utilisez la commande suivante pour créer un coffre Key Vault et une clé. Remplacez your-resource-group-name
, your-keyvault-name
et your-key-name
par les valeurs que vous voulez utiliser. La commande suppose que vous avez déjà créé un groupe de ressources.
Notes
--bypass AzureServices
permet à Media Services (et d’autres services Azure) d’accéder au coffre Key Vault alors que cet accès serait normalement bloqué par les listes ACL réseau Key Vault. Si --enable-purge-protection
n’est pas défini, vous ne pourrez pas utiliser votre clé.
Créer le coffre Key Vault
az keyvault create --resource-group <your-resource-group-name> --bypass AzureServices --enable-purge-protection --name <your-keyvault-name>
Exemple de réponse JSON :
{
"id": "/subscriptions/the-subscription-id/resourceGroups/your-resource-group-name/providers/Microsoft.KeyVault/vaults/your-keyvault-name",
"location": "your-region",
"name": "your-keyvault-name",
"properties": {
"accessPolicies": [
{
"applicationId": null,
"objectId": "00000000-0000-0000-0000-000000000000",
"permissions": {
"certificates": [
"get",
"list",
"delete",
"create",
"import",
"update",
"managecontacts",
"getissuers",
"listissuers",
"setissuers",
"deleteissuers",
"manageissuers",
"recover"
],
"keys": [
"get",
"create",
"delete",
"list",
"update",
"import",
"backup",
"restore",
"recover"
],
"secrets": [
"get",
"list",
"set",
"delete",
"backup",
"restore",
"recover"
],
"storage": [
"get",
"list",
"delete",
"set",
"update",
"regeneratekey",
"setsas",
"listsas",
"getsas",
"deletesas"
]
},
"tenantId": "the-tenant-id"
}
],
"createMode": null,
"enablePurgeProtection": true,
"enableRbacAuthorization": null,
"enableSoftDelete": true,
"enabledForDeployment": false,
"enabledForDiskEncryption": null,
"enabledForTemplateDeployment": null,
"networkAcls": null,
"privateEndpointConnections": null,
"provisioningState": "Succeeded",
"sku": {
"name": "standard"
},
"softDeleteRetentionInDays": 90,
"tenantId": "the-tenant-id",
"vaultUri": "https://your-keyvault-name.vault.azure.net/"
},
"resourceGroup": "your-resource-group-name",
"tags": {},
"type": "Microsoft.KeyVault/vaults"
}
Créer la clé
az keyvault key create --kty RSA --name your-key-name --vault-name your-keyvault-name
Exemple de réponse JSON :
{
"attributes": {
"created": "2021-05-12T22:41:29+00:00",
"enabled": true,
"expires": null,
"notBefore": null,
"recoveryLevel": "Recoverable",
"updated": "2021-05-12T22:41:29+00:00"
},
"key": {
"crv": null,
"d": null,
"dp": null,
"dq": null,
"e": "AQAB",
"k": null,
"keyOps": [
"encrypt",
"decrypt",
"sign",
"verify",
"wrapKey",
"unwrapKey"
],
"kid": "https://your-keyvault-name.vault.azure.net/keys/your-key-name/your-subsription-id",
"kty": "RSA",
"n": "THISISTHEKEY51V9thvU7KsBUo/q1mEOcuxqt0qUcnx0IRO9YCL32fPjD/nnS8hKS5qkgUKfe2NRAtzVQ+elQAha65l7OsHu+TXmH/n/RPCgstpqSdCfiUR1JTmFYFRWdxCPwoKJMYaqlCEhn2Dkon3StTN0Id0sjRSA/YOLjgWU7YnVbntg5/048HgcTKn3PCWCuJc+P8hI/8Os5EAIpun62PffYwPX0/NIA1PY8wIB+sYEY0zxVGwWrCu7VgCo9xeqbMQEq5OenYmYpc+cjLozU/ohGhfWTpQU8d7fFypTHQraENDOFKEY",
"p": null,
"q": null,
"qi": null,
"t": null,
"x": null,
"y": null
},
"managed": null,
"tags": null
}
Accorder à l'identité managée attribuée au système Media Services l'accès au coffre de clés
Accordez à l'identité managée Media Services l'accès au coffre de clés. Deux commandes sont disponibles :
Permet d'obtenir (d'afficher) l'identité managée du compte Media Services
La première commande ci-dessous affiche l’identité managée du compte Media Services correspondant à la propriété principalId
répertoriée dans le fichier JSON que la commande a retourné.
Cette commande affiche toutes les propriétés d’un compte Media Services.
az ams account show --name <your-media-services-account-name> --resource-group <your-resource-group>
Notes
Si vous avez attribué des rôles d’accès au compte Media Services, cette ligne retourne "storageAuthentication": "ManagedIdentity"
.
Exemple de réponse 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"
}
Définir la stratégie Key Vault
La deuxième commande accorde à l'ID du principal l'accès au coffre de clés. Définissez object-id
sur la valeur de principalId
que vous avez obtenue à l'étape précédente.
Pour utiliser cette commande, vous devez inclure Media Services principalId
en tant que object-id
. Si ce n’est déjà fait, utilisez az ams account show --name <your-media-services-account-name> --resource-group <your-resource-group>
pour accéder à cet ID.
az keyvault set-policy --name <your-keyvault-name> --object-id <principalId> --key-permissions decrypt encrypt get list unwrapKey wrapKey
Exemple de réponse JSON :
{
"id": "/subscriptions/00000000-0000-0000-000000000000/resourceGroups/your-resource-group-name/providers/Microsoft.KeyVault/vaults/your-keyvault-name",
"location": "your-region",
"name": "your-keyvault-name",
"properties": {
"accessPolicies": [
{
"applicationId": null,
"objectId": "00000000-0000-0000-000000000000",
"permissions": {
"certificates": [
"get",
"list",
"delete",
"create",
"import",
"update",
"managecontacts",
"getissuers",
"listissuers",
"setissuers",
"deleteissuers",
"manageissuers",
"recover"
],
"keys": [
"get",
"create",
"delete",
"list",
"update",
"import",
"backup",
"restore",
"recover"
],
"secrets": [
"get",
"list",
"set",
"delete",
"backup",
"restore",
"recover"
],
"storage": [
"get",
"list",
"delete",
"set",
"update",
"regeneratekey",
"setsas",
"listsas",
"getsas",
"deletesas"
]
},
"tenantId": "00000000-0000-0000-000000000000"
},
{
"applicationId": null,
"objectId": "00000000-0000-0000-000000000000",
"permissions": {
"certificates": null,
"keys": [
"encrypt",
"get",
"list",
"wrapKey",
"decrypt",
"unwrapKey"
],
"secrets": null,
"storage": null
},
"tenantId": "00000000-0000-0000-000000000000"
}
],
"createMode": null,
"enablePurgeProtection": true,
"enableRbacAuthorization": null,
"enableSoftDelete": true,
"enabledForDeployment": false,
"enabledForDiskEncryption": null,
"enabledForTemplateDeployment": null,
"networkAcls": null,
"privateEndpointConnections": null,
"provisioningState": "Succeeded",
"sku": {
"name": "standard"
},
"softDeleteRetentionInDays": 90,
"tenantId": "00000000-0000-0000-000000000000",
"vaultUri": "https://your-keyvault-name.vault.azure.net/"
},
"resourceGroup": "your-resource-group-name",
"tags": {},
"type": "Microsoft.KeyVault/vaults"
}
Définir Media Services pour utiliser la clé de Key Vault
Définissez Media Services pour utiliser la clé que vous avez créée. La valeur de la propriété key-identifier
provient de la sortie générée lors de la création de la clé. Cette commande peut échouer en raison du temps nécessaire à la propagation des modifications du contrôle d'accès. Dans ce cas, réessayez au bout de quelques minutes.
Pour utiliser cette commande, vous devez déjà avoir créé un coffre Key Vault et une clé.
az ams account encryption set --account-name <your-media-services-account-name> --resource-group <your-resource-group> --key-type CustomerKey --key-identifier https://<your-keyvault-name>.vault.azure.net/keys/<your-key-name>
Exemple de réponse JSON :
{
"id": "/subscriptions/00000000-0000-0000-000000000000/resourceGroups/your-resource-group-name/providers/Microsoft.KeyVault/vaults/your-keyvault-name",
"location": "your-region",
"name": "your-keyvault-name",
"properties": {
"accessPolicies": [
{
"applicationId": null,
"objectId": "00000000-0000-0000-000000000000",
"permissions": {
"certificates": [
"get",
"list",
"delete",
"create",
"import",
"update",
"managecontacts",
"getissuers",
"listissuers",
"setissuers",
"deleteissuers",
"manageissuers",
"recover"
],
"keys": [
"get",
"create",
"delete",
"list",
"update",
"import",
"backup",
"restore",
"recover"
],
"secrets": [
"get",
"list",
"set",
"delete",
"backup",
"restore",
"recover"
],
"storage": [
"get",
"list",
"delete",
"set",
"update",
"regeneratekey",
"setsas",
"listsas",
"getsas",
"deletesas"
]
},
"tenantId": "the-tenant-id"
},
{
"applicationId": null,
"objectId": "the-media-services-account-id",
"permissions": {
"certificates": null,
"keys": [
"encrypt",
"get",
"list",
"wrapKey",
"decrypt",
"unwrapKey"
],
"secrets": null,
"storage": null
},
"tenantId": "the-tenant-id"
}
],
"createMode": null,
"enablePurgeProtection": true,
"enableRbacAuthorization": null,
"enableSoftDelete": true,
"enabledForDeployment": false,
"enabledForDiskEncryption": null,
"enabledForTemplateDeployment": null,
"networkAcls": null,
"privateEndpointConnections": null,
"provisioningState": "Succeeded",
"sku": {
"name": "standard"
},
"softDeleteRetentionInDays": 90,
"tenantId": "the-tenant-id",
"vaultUri": "https://your-keyvault-name.vault.azure.net/"
},
"resourceGroup": "your-resource-group-name",
"tags": {},
"type": "Microsoft.KeyVault/vaults"
}
Validation
Pour vérifier que le compte est chiffré à l’aide d’une clé gérée par le client, consultez les propriétés de chiffrement du compte :
Afficher le chiffrement du compte avec l’interface CLI
Pour plus d’informations sur cette commande, consultez la référence relative à l’interface CLI de Media Services.
La propriété type
doit afficher CustomerKey
et la propriété currentKeyIdentifier
doit être définie sur le chemin d'une clé du coffre de clés du client.
Nettoyer les ressources
Si vous n’avez pas l’intention d’utiliser les ressources que vous avez créées, supprimez le groupe de ressources.
Supprimer un groupe de ressources avec l’interface CLI
az group delete --name <your-resource-group-name>
Obtenir de l’aide et du support
Vous pouvez contacter Media Services pour vous poser des questions ou suivre nos mises à jour en suivant l’une des méthodes suivantes :
- Q & R
- Stack Overflow. Balisez les questions avec
azure-media-services
. - @MSFTAzureMedia ou utiliser @AzureSupport pour demander du support.
- Ouvrez un ticket de support via le Portail Azure.