Gérer les clés de compte de stockage avec Key Vault et Azure CLI (héritées)

Important

La fonctionnalité de clés de compte de stockage managé Key Vault (héritées) est prise en charge telle quelle sans aucune autre mise à jour planifiée. Seules les signatures d’accès partagé (SAP) de compte sont prises en charge avec une version du service de stockage signé par des définitions SAP antérieure à la version 2018-03-28.

Important

Nous vous recommandons d’utiliser l’intégration de Stockage Azure avec Azure Active Directory (Azure AD), le service Microsoft basé sur le cloud qui gère les identités et les accès. L’intégration d’Azure AD est disponible pour les objets blob et les files d’attente Azure et fournit un accès basé sur les jetons OAuth2 au Stockage Azure (comme Azure Key Vault). Azure AD vous permet d’authentifier votre application cliente en utilisant une identité d’application ou d’utilisateur plutôt que les informations d’identification du compte de stockage. Vous pouvez utiliser une identité Azure AD managée lors de l’exécution sur Azure. Les identités managées suppriment l’authentification du client ainsi que le stockage des informations d’identification dans ou avec votre application. Utilisez la solution ci-dessous uniquement lorsque l’authentification Azure AD n’est pas possible.

Un compte de stockage Azure utilise des informations d’identification comprenant un nom de compte et une clé. La clé qui est générée automatiquement sert de mot de passe et non de clé de chiffrement. Key Vault gère les clés de compte de stockage en les regénérant régulièrement dans le compte de stockage. De plus, il fournit des jetons de signature d’accès partagé pour permettre un accès délégué aux ressources de votre compte de stockage.

Vous pouvez utiliser la fonctionnalité de clé de compte de stockage gérée de Key Vault pour lister (synchroniser) les clés avec un compte de stockage Azure et regénérer (faire tourner) régulièrement les clés. Vous pouvez gérer les clés des comptes de stockage et des comptes de stockage classiques.

Lorsque vous utilisez la fonctionnalité de clé de compte de stockage managé, tenez compte des points suivants :

  • Les valeurs de clés ne sont jamais retournées en réponse à l’appelant.
  • Seul Key Vault doit gérer vos clés de compte de stockage. Ne gérez pas les clés vous-même et évitez d’interférer avec les processus de Key Vault.
  • Un seul objet Key Vault doit gérer les clés de compte de stockage. Vous ne devez pas autoriser la gestion des clients par des objets multiples.
  • Régénérez les clés à l’aide de Key Vault uniquement. Ne régénérez pas manuellement vos clés de compte de stockage.

Important

La regénération de clés directement dans le compte de stockage interrompt la configuration du compte de stockage managé et peut invalider les jetons SAS en cours d’utilisation et provoquer une panne.

ID d’application du principal de service

Un locataire Azure AD fournit à chaque application inscrite un principal de service, Le principal de service fait office d’ID d’application, qui est utilisé lors de la configuration de l’autorisation pour l’accès aux autres ressources Azure à l’aide du contrôle d’accès en fonction du rôle (RBAC) Azure.

Key Vault est une application Microsoft préinscrite dans tous les locataires Azure AD. Key Vault est inscrit sous le même ID d’application dans chaque cloud Azure.

Locataires Cloud ID de l'application
Azure AD Azure Government 7e7c393b-45d0-48b1-a35e-2905ddf8183c
Azure AD Azure public cfa8b339-82a2-471a-a3c9-0fc0be7a4093
Autres Quelconque cfa8b339-82a2-471a-a3c9-0fc0be7a4093

Prérequis

Pour suivre ce guide, vous devez d’abord effectuer les étapes suivantes :

Gérer les clés de compte de stockage

Se connecter au compte Azure

Authentifiez votre session Azure CLI à l’aide des commandes az login.

az login

Octroyer un accès Key Vault à votre compte de stockage

Utilisez la commande Azure CLI az role assignment create pour permettre à Key Vault d’accéder à votre compte de stockage. Fournissez à la commande les valeurs de paramètre suivantes :

  • --role: Transmettez le rôle Azure « Rôle de service d’opérateur de clé de compte de stockage ». Ce rôle limite l’étendue d’accès à votre compte de stockage. Pour un type de compte classique, transmettez « Rôle de service d’opérateur de clé de compte de stockage classique » à la place.
  • --assignee : Transmettez la valeur « https://vault.azure.net" », qui est l’URL de Key Vault dans le cloud public Azure. (Pour le cloud Azure Government, utilisez « --assignee-object-id » à la place. Consultez ID d’application du principal de service.)
  • --scope: Transmettez l’ID de ressource de votre compte de stockage, qui se présente sous la forme /subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName>. Recherchez votre ID d’abonnement à l’aide de la commande Azure CLI az account list. Recherchez le nom de votre compte de stockage et votre groupe de ressources de compte de stockage à l’aide de la commande Azure CLI az storage account list.
az role assignment create --role "Storage Account Key Operator Service Role" --assignee "https://vault.azure.net" --scope "/subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName>"

Autoriser votre compte d’utilisateur à accéder à des comptes de stockage managés

Utilisez l’interface de ligne de commande Azure az keyvault-set-policy pour mettre à jour la stratégie d’accès au coffre de clés et accorder des autorisations de compte de stockage à votre compte d’utilisateur.

# Give your user principal access to all storage account permissions, on your Key Vault instance

az keyvault set-policy --name <YourKeyVaultName> --upn user@domain.com --storage-permissions get list delete set update regeneratekey getsas listsas deletesas setsas recover backup restore purge

Notez que les autorisations pour les comptes de stockage ne sont pas disponibles sur la page « Stratégies d’accès » du compte de stockage dans le portail Azure.

Créer un compte de stockage managé Key Vault

Créez un compte de stockage managé Key Vault à l’aide de la commande Azure CLI az keyvault storage. Définissez une période de régénération de 30 jours. Lorsque le moment est venu d’opérer une rotation, KeyVault régénère la clé qui n’est pas active, puis définit la clé nouvellement créée comme active. Une seule clé à la fois est utilisée pour émettre des jetons SAP, c’est la clé active. Fournissez à la commande les valeurs de paramètre suivantes :

  • --vault-name: transmettez le nom de votre coffre de clés. Pour trouver le nom de votre coffre de clés, utilisez la commande Azure CLI az keyvault list.
  • -n: transmettez le nom de votre compte de stockage Pour trouver le nom de votre compte de stockage, utilisez la commande Azure CLI az storage account list.
  • --resource-id: Transmettez l’ID de ressource de votre compte de stockage, qui se présente sous la forme /subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName>. Recherchez votre ID d’abonnement à l’aide de la commande Azure CLI az account list. Recherchez le nom de votre compte de stockage et votre groupe de ressources de compte de stockage à l’aide de la commande Azure CLI az storage account list.
az keyvault storage add --vault-name <YourKeyVaultName> -n <YourStorageAccountName> --active-key-name key1 --auto-regenerate-key --regeneration-period P30D --resource-id "/subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName>"

Jetons de signature d’accès partagé

Vous pouvez également demander à Key Vault de générer des jetons de signature d’accès partagé. Une signature d'accès partagé fournit un accès délégué aux ressources de votre compte de stockage. Vous pouvez accorder aux clients l’accès aux ressources dans votre compte de stockage sans partager les clés de votre compte. Une signature d’accès partagé constitue un moyen sécurisé de partager vos ressources de stockage sans compromettre vos clés de compte.

Les commandes figurant dans cette section effectuent les actions suivantes :

  • Définissez une définition de signature d’accès partagé <YourSASDefinitionName>. La définition pointe sur un compte de stockage managé Key Vault <YourStorageAccountName> dans votre coffre de clés <YourKeyVaultName>.
  • Définissez une définition de signature d’accès partagé au stockage géré par Key Vault dans le coffre. La définition comporte l’URI du modèle du jeton de signature d’accès partagé créé. La définition possède le type de signature d’accès partagé account et est valide pendant N jours.
  • Vérifiez que la signature d’accès partagé a été enregistrée dans votre coffre de clés en tant que secret.

Définir un modèle de définition de signature d’accès partagé

Key Vault utilise le modèle de définition SAP pour générer des jetons pour les applications clientes.

Exemple de modèle de définition SAP :

"sv=2018-03-28&ss=bfqt&srt=sco&sp=rw&spr=https"

Le modèle de définition SAP est alors passé au paramètre --template-uri à l’étape suivante.

Paramètres SAP de compte requis dans un modèle de définition SAP pour Key Vault

Paramètre de demande SAP Description
SignedVersion (sv) Obligatoire. Spécifie la version du service de stockage signé à utiliser pour autoriser les demandes effectuées avec cette signature d’accès partagé (SAP) du compte. Doit être défini sur la version 2015-04-05 ou une version ultérieure. Key Vault prend en charge les versions antérieures à la version 2018-03-28
SignedServices (ss) Obligatoire. Spécifie les services signés accessibles avec la signature SAP du compte. Les valeurs possibles incluent :

- Blob (b)
- File d’attente (q)
- Table (t)
- Fichier (f)

Vous pouvez combiner des valeurs pour fournir l’accès à plusieurs services. Par exemple, ss=bf spécifie l’accès aux points de terminaison Blob et Fichier.
SignedResourceTypes (srt) Obligatoire. Spécifie les types de ressources signés accessibles avec la signature SAP du compte.

- Service (s) : accès aux API au niveau du service (par exemple, Obtenir/Définir des propriétés du service, Obtenir les statistiques du service, Lister les conteneurs/filles d’attente/tables/partages)
- Conteneur (c) : accès aux API au niveau du conteneur (par exemple, Créer/Supprimer un conteneur, Créer/Supprimer une fille d’attente, Créer/Supprimer une table, Créer/Supprimer un partage, Lister les objets blob/fichiers et répertoires)
- Objet (o) : accès aux API au niveau de l’objet pour les objets blob, les messages de file d’attente, les entités de table et les fichiers (par exemple, Placer un objet blob, Interroger une entité, Obtenir des messages, Créer un fichier, etc.)

Vous pouvez combiner des valeurs pour fournir l’accès à plusieurs types de ressources. Par exemple, srt=sc spécifie l’accès aux ressources de service et de conteneur.
SignedPermission (sp) Obligatoire. Spécifie les autorisations signées pour la signature SAP du compte. Les autorisations ne sont valides que si elles correspondent au type de ressource signé spécifié ; dans le cas contraire, elles sont ignorées.

- Lecture (r) : valide pour tous les types de ressources signées (Service, Conteneur et Objet). Permet des autorisations de lecture sur le type de ressource spécifié.
- Écriture (w) : valide pour tous les types de ressources signées (Service, Conteneur et Objet). Permet des autorisations d’écriture sur le type de ressource spécifié.
- Supprimer (d) : valide pour les types de ressources Conteneur et Objet, à l’exception des messages de file d’attente.
- Suppression définitive (y) : valide pour le type de ressource Objet suivant uniquement : Objet blob.
- Liste (l) : valide pour les types de ressources Service et Conteneur uniquement.
- Ajouter (a) : valide pour les types de ressources Objet suivants uniquement : messages de file d’attente, entités de table et objets blob d’ajout.
- Créer (c) : valide pour les types de ressources Objet suivants uniquement : objets blob et fichiers. Les utilisateurs peuvent créer des objets blob ou des fichiers, mais ne peuvent pas remplacer des objets blob ou des fichiers existants.
- Mettre à jour (u) : valide pour les types de ressources Objet suivants uniquement : messages de file d’attente et entités de table.
- Processus (p) : valide pour le type de ressource Objet suivant uniquement : messages de file d’attente.
- Étiquette (t) : valide pour le type de ressource Objet suivant uniquement : objets blob. Autorise les opérations d’étiquette d’objet blob.
- Filtre (f) : valide pour le type de ressource Objet suivant uniquement : objet blob. Autorise le filtrage par étiquette d’objet blob.
- Définir une stratégie d’immuabilité (i) : valide pour le type de ressource Objet suivant uniquement : objet blob. Autorise la définition/suppression d’une stratégie d’immuabilité et la conservation légale sur un objet blob.
SignedProtocol (spr) facultatif. Spécifie le protocoles autorisé pour une demande effectuée avec la signature SAP du compte. Les valeurs possibles sont à la fois HTTPS et HTTP (https,http) ou uniquement HTTPS (https). La valeur par défaut est https,http.

Notez que HTTP seul n’est pas une valeur autorisée.

Pour plus d’informations sur la signatures SAP de compte, consultez Créer une signature SAP de compte

Notes

Key Vault ignore les paramètres de durée de vie tels que « Signed Expiry » (Expiration signée), « Signed Start » (Démarrage signé) et les paramètres introduits après la version 2018-03-28

Établir une définition de signature d’accès partagé dans Key Vault

Utilisez la commande Azure CLI az keyvault storage sas-definition create, en passant le modèle de définition SAP de l’étape précédente au paramètre --template-uri, afin de créer une définition de signature d’accès partagé. Vous pouvez fournir le nom de votre choix au paramètre -n.

az keyvault storage sas-definition create --vault-name <YourKeyVaultName> --account-name <YourStorageAccountName> -n <YourSASDefinitionName> --validity-period P2D --sas-type account --template-uri <sasDefinitionTemplate>

Vérifier la définition de la signature d’accès partagé

Vous pouvez vérifier que la définition de signature d’accès partagé a été stockée dans votre coffre de clés à l’aide de la commande Azure CLI az keyvault storage sas-definition show.

Vous pouvez maintenant utiliser la commande az keyvault storage sas-definition show et la propriété id pour afficher le contenu de ce secret.

az keyvault storage sas-definition show --id https://<YourKeyVaultName>.vault.azure.net/storage/<YourStorageAccountName>/sas/<YourSASDefinitionName>

Étapes suivantes