Partager via


Tutoriel : Utiliser une clé Key Vault pour chiffrer les données dans un compte Media Services

logo 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.

Note

Les identités managées sont disponibles uniquement 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, migrez de v2 vers v3 Migrate from Media Services v2 to v3 introduction.

Si vous souhaitez que Media Services chiffre les données à l’aide d’une clé à partir de votre coffre de clés, le compte Media Services doit être accordé accès au coffre de clés. Suivez les étapes ci-dessous pour créer une identité managée pour le compte Media Services et accorder à cette identité l’accès à votre coffre de clés à l’aide de l’interface CLI Media Services.

compte Media Services utilise Key Vault avec un d’identité managée

Ce tutoriel utilise l’API Media Services 2020-05-01.

Se connecter à 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 avec lequel vous souhaitez travailler.

Définir l’abonnement Azure avec l’interface CLI

Dans la commande suivante, indiquez l’ID d’abonnement Azure que vous souhaitez utiliser pour le compte Media Services.

az account set --subscription <subscriptionName>

Noms de ressources

Avant de commencer, choisissez les noms des ressources que vous allez créer. Ils doivent être facilement identifiables en tant qu’ensemble, en particulier si vous ne prévoyez pas de les utiliser une fois que vous avez effectué des tests. Les règles d’affectation de noms sont différentes pour de nombreux types de ressources. Il est donc préférable de respecter toutes les 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 pour chaque étape de cet article.

Vous verrez ces noms référencés dans les commandes ci-dessous. Les noms des ressources dont vous aurez besoin sont les suivants :

  • myRG
  • myStorageAccount
  • myAmsAccount
  • myKeyVault
  • myKey
  • emplacement

Note

Les traits d’union ci-dessus sont utilisés uniquement pour séparer les mots d’aide. En raison de l’incohérence du nommage des ressources dans les services Azure, n’utilisez pas de traits d’union lorsque vous nommez vos ressources. En outre, vous ne créez pas le nom de la région. Le nom de la région est déterminé par Azure.

Répertorier les régions Azure

Si vous n’êtes pas sûr du nom de la région réelle à utiliser, utilisez cette commande pour obtenir une description :

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 est effectuée dans 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

Le compte Media Services que vous allez créer doit avoir un compte de stockage associé. Créez d’abord le compte de stockage pour le compte Media Services. Vous utiliserez 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 de 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 :

Répertorier 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 une référence SKU pour votre compte de stockage. Vous pouvez répertorier les comptes de stockage.

Choisissez une référence SKU 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 souhaitez travailler.
  • Remplacez chooseSKU par votre référence SKU préférée.
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, sinon appelé identité managée.

Important

Il est important que vous vous souveniez d’utiliser l’indicateur --mi dans la commande. Sinon, vous ne pourrez pas trouver le principalId pour une étape ultérieure.

La commande Azure CLI suivante crée un compte Media Services. Remplacez les valeurs suivantes : your-media-services-account-nameyour-storage-account-nameet your-resource-group-name par les noms que vous souhaitez utiliser. La commande suppose que vous avez déjà créé un groupe de ressources et un compte de stockage.

Il donne au compte Media Services une identité managée affectée par le système avec l’indicateur de --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. Key Vault 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 les commandes suivantes pour créer un coffre de clés et une clé. Modifiez your-resource-group-name, your-keyvault-name et your-key-name aux valeurs que vous souhaitez utiliser. La commande suppose que vous avez déjà créé un groupe de ressources.

Note

L'--bypass AzureServices permet à Media Services (et à d’autres services Azure) d’accéder au coffre de clés lorsque cet accès serait normalement bloqué par les listes de contrôle d’accès réseau Key Vault Le --enable-purge-protection s’il n’est pas défini, vous ne pourrez pas utiliser votre clé.

Créer le coffre de clés


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": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
        "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 affectée par le 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. Il existe deux commandes :

Obtenir (afficher) l’identité managée du compte Media Services

La première commande ci-dessous montre l’identité managée du compte Media Services, qui est la principalId répertoriée dans le json retourné par la commande.

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>

Note

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

Définir la stratégie Key Vault

La deuxième commande accorde à l’ID 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 le principalId Media Services 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 obtenir 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é à partir 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 lors de la création de la clé. Cette commande peut échouer en raison du temps nécessaire pour propager les modifications du contrôle d’accès. Si cela se produit, réessayez après quelques minutes.

Pour utiliser cette commande, vous devez déjà avoir créé un coffre de clés 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, affichez les propriétés de chiffrement du compte :

Afficher le chiffrement de compte avec l’interface CLI

Pour plus d’informations sur cette commande, consultez la référence de l’interface CLI Media Services.

La propriété type doit afficher CustomerKey et la currentKeyIdentifier doit être définie sur le chemin d’accès d’une clé dans le coffre de clés du client.

Nettoyer les ressources

Si vous ne prévoyez pas 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 avec des questions ou suivre nos mises à jour par l’une des méthodes suivantes :