Gérer les clés de compte de stockage avec Key Vault et l’interface de ligne de commande AzureManage storage account keys with Key Vault and the Azure CLI

Un compte de stockage Azure utilise des informations d’identification comprenant un nom de compte et une clé.An Azure storage account uses credentials comprising an account name and a key. La clé qui est générée automatiquement sert de mot de passe et non de clé de chiffrement.The key is auto-generated and serves as a password, rather than an as a cryptographic key. 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.Key Vault manages storage account keys by periodically regenerating them in storage account and provides shared access signature tokens for delegated access to resources in your storage account.

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.You can use the Key Vault managed storage account key feature to list (sync) keys with an Azure storage account, and regenerate (rotate) the keys periodically. Vous pouvez gérer les clés des comptes de stockage et des comptes de stockage classiques.You can manage keys for both storage accounts and Classic storage accounts.

Lorsque vous utilisez la fonctionnalité de clé de compte de stockage managé, tenez compte des points suivants :When you use the managed storage account key feature, consider the following points:

  • Les valeurs de clés ne sont jamais retournées en réponse à l’appelant.Key values are never returned in response to a caller.
  • Seul Key Vault doit gérer vos clés de compte de stockage.Only Key Vault should manage your storage account keys. Ne gérez pas les clés vous-même et évitez d’interférer avec les processus de Key Vault.Don't manage the keys yourself and avoid interfering with Key Vault processes.
  • Un seul objet Key Vault doit gérer les clés de compte de stockage.Only a single Key Vault object should manage storage account keys. Vous ne devez pas autoriser la gestion des clients par des objets multiples.Don't allow key management from multiple objects.
  • Régénérez les clés à l’aide de Key Vault uniquement.Regenerate keys by using Key Vault only. Ne régénérez pas manuellement vos clés de compte de stockage.Don't manually regenerate your storage account keys.

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.We recommend using Azure Storage integration with Azure Active Directory (Azure AD), Microsoft's cloud-based identity and access management service. 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 integration is available for Azure blobs and queues, and provides OAuth2 token-based access to Azure Storage (just like 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.Azure AD allows you to authenticate your client application by using an application or user identity, instead of storage account credentials. Vous pouvez utiliser une identité Azure AD managée lors de l’exécution sur Azure.You can use an Azure AD managed identity when you run on Azure. Les identités managées suppriment l’authentification du client ainsi que le stockage des informations d’identification dans ou avec votre application.Managed identities remove the need for client authentication and storing credentials in or with your application.

Azure AD utilise le contrôle d’accès en fonction du rôle Azure (RBAC Azure) pour gérer les autorisations, ce qui est également pris en charge par Key Vault.Azure AD uses Azure role-based access control (Azure RBAC) to manage authorization, which is also supported by Key Vault.

ID d’application du principal de serviceService principal application ID

Un locataire Azure AD fournit à chaque application inscrite un principal de service,An Azure AD tenant provides each registered application with a service principal. 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.The service principal serves as the Application ID, which is used during authorization setup for access to other Azure resources via Azure RBAC.

Key Vault est une application Microsoft préinscrite dans tous les locataires Azure AD.Key Vault is a Microsoft application that's pre-registered in all Azure AD tenants. Key Vault est inscrit sous le même ID d’application dans chaque cloud Azure.Key Vault is registered under the same Application ID in each Azure cloud.

LocatairesTenants CloudCloud ID de l'applicationApplication ID
Azure ADAzure AD Azure GovernmentAzure Government 7e7c393b-45d0-48b1-a35e-2905ddf8183c
Azure ADAzure AD Azure publicAzure public cfa8b339-82a2-471a-a3c9-0fc0be7a4093
AutresOther QuelconqueAny cfa8b339-82a2-471a-a3c9-0fc0be7a4093

PrérequisPrerequisites

Pour suivre ce guide, vous devez d’abord effectuer ce qui suit :To complete this guide, you must first do the following:

Gérer les clés de compte de stockageManage storage account keys

Se connecter au compte AzureConnect to your Azure account

Authentifiez votre session Azure CLI à l’aide des commandes az login.Authenticate your Azure CLI session using the az login commands.

az login

Octroyer un accès Key Vault à votre compte de stockageGive Key Vault access to your storage account

Utilisez la commande Azure CLI az role assignment create pour permettre à Key Vault d’accéder à votre compte de stockage.Use the Azure CLI az role assignment create command to give Key Vault access your storage account. Fournissez à la commande les valeurs de paramètre suivantes :Provide the command the following parameter values:

  • --role: Transmettez le rôle Azure « Rôle de service d’opérateur de clé de compte de stockage ».--role: Pass the "Storage Account Key Operator Service Role" Azure role. Ce rôle limite l’étendue d’accès à votre compte de stockage.This role limits the access scope to your storage account. Pour un type de compte classique, transmettez « Rôle de service d’opérateur de clé de compte de stockage classique » à la place.For a classic storage account, pass "Classic Storage Account Key Operator Service Role" instead.
  • --assignee: Transmettez la valeur « https://vault.azure.net  », qui est l’URL de Key Vault dans le cloud public Azure.--assignee: Pass the value "https://vault.azure.net", which is the url for Key Vault in the Azure public cloud. (Pour le cloud Azure Government, utilisez « --asingee-object-id » à la place, consultez ID d’application du principal du service.)(For Azure Goverment cloud use '--asingee-object-id' instead, see Service principal application ID.)
  • --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>.--scope: Pass your storage account resource ID, which is in the form /subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName>. Pour trouver votre ID d’abonnement, utilisez la commande Azure CLI az account list ; pour trouver le nom de votre compte de stockage et le groupe de ressources du compte de stockage, utilisez la commande Azure CLI az storage account list.To find your subscription ID, use the Azure CLI az account list command; to find your storage account name and storage account resource group, use the Azure CLI az storage account list command.
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ésGive your user account permission to managed storage accounts

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.Use the Azure CLI az keyvault-set-policy cmdlet to update the Key Vault access policy and grant storage account permissions to your user account.

# 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.Note that permissions for storage accounts aren't available on the storage account "Access policies" page in the Azure portal.

Créer un compte de stockage managé Key VaultCreate a Key Vault Managed storage account

Créez un compte de stockage managé Key Vault à l’aide de la commande Azure CLI az keyvault storage.Create a Key Vault managed storage account using the Azure CLI az keyvault storage command. Définissez une période de régénération de 90 jours.Set a regeneration period of 90 days. 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.When it is time to rotate, KeyVault regenerates the key that is not active, and then sets the newly created key as active. Une seule clé à la fois est utilisée pour émettre des jetons SAP, c’est la clé active.Only one of the keys are used to issue SAS tokens at any one time, this is the active key. Fournissez à la commande les valeurs de paramètre suivantes :Provide the command the following parameter values:

  • --vault-name: transmettez le nom de votre coffre de clés.--vault-name: Pass the name of your key vault. Pour trouver le nom de votre coffre de clés, utilisez la commande Azure CLI az keyvault list.To find the name of your key vault, use the Azure CLI az keyvault list command.
  • -n: transmettez le nom de votre compte de stockage-n: Pass the name of your storage account. Pour trouver le nom de votre compte de stockage, utilisez la commande Azure CLI az storage account list.To find the name of your storage account, use the Azure CLI az storage account list command.
  • --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>.--resource-id: Pass your storage account resource ID, which is in the form /subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName>. Pour trouver votre ID d’abonnement, utilisez la commande Azure CLI az account list ; pour trouver le nom de votre compte de stockage et le groupe de ressources du compte de stockage, utilisez la commande Azure CLI az storage account list.To find your subscription ID, use the Azure CLI az account list command; to find your storage account name and storage account resource group, use the Azure CLI az storage account list command.
az keyvault storage add --vault-name <YourKeyVaultName> -n <YourStorageAccountName> --active-key-name key1 --auto-regenerate-key --regeneration-period P90D --resource-id "/subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName>"

Jetons de signature d’accès partagéShared access signature tokens

Vous pouvez également demander à Key Vault de générer des jetons de signature d’accès partagé.You can also ask Key Vault to generate shared access signature tokens. Une signature d'accès partagé fournit un accès délégué aux ressources de votre compte de stockage.A shared access signature provides delegated access to resources in your storage account. Vous pouvez accorder aux clients l’accès aux ressources dans votre compte de stockage sans partager les clés de votre compte.You can grant clients access to resources in your storage account without sharing your account keys. Une signature d’accès partagé constitue un moyen sécurisé de partager vos ressources de stockage sans compromettre vos clés de compte.A shared access signature provides you with a secure way to share your storage resources without compromising your account keys.

Les commandes figurant dans cette section effectuent les actions suivantes :The commands in this section complete the following actions:

  • Définissez une définition de signature d’accès partagé <YourSASDefinitionName>.Set an account shared access signature definition <YourSASDefinitionName>. La définition pointe sur un compte de stockage managé Key Vault <YourStorageAccountName> dans votre coffre de clés <YourKeyVaultName>.The definition is set on a Key Vault managed storage account <YourStorageAccountName> in your key vault <YourKeyVaultName>.
  • Créez un jeton de signature d’accès partagé pour les services Blob, Fichier, Table et File d’attente.Create an account shared access signature token for Blob, File, Table, and Queue services. Le jeton est créé pour les types de ressource Service, Conteneur et Objet.The token is created for resource types Service, Container, and Object. Le jeton est créé avec toutes les autorisations, via le protocole https et avec les dates de début et de fin spécifiées.The token is created with all permissions, over https, and with the specified start and end dates.
  • Définissez une définition de signature d’accès partagé au stockage géré par Key Vault dans le coffre.Set a Key Vault managed storage shared access signature definition in the vault. La définition comporte l’URI du modèle du jeton de signature d’accès partagé créé.The definition has the template URI of the shared access signature token that was created. La définition possède le type de signature d’accès partagé account et est valide pendant N jours.The definition has the shared access signature type account and is valid for N days.
  • Vérifiez que la signature d’accès partagé a été enregistrée dans votre coffre de clés en tant que secret.Verify that the shared access signature was saved in your key vault as a secret.

Créer un jeton de signature d’accès partagéCreate a shared access signature token

Créez une définition de signature d’accès partagé à l’aide de la commande Azure CLI az storage account generate-sas.Create a shared access signature definition using the Azure CLI az storage account generate-sas command. Cette opération nécessite les autorisations storage et setsas.This operation requires the storage and setsas permissions.

az storage account generate-sas --expiry 2020-01-01 --permissions rw --resource-types sco --services bfqt --https-only --account-name <YourStorageAccountName> --account-key 00000000

Une fois l’opération exécutée avec succès, copiez la sortie.After the operation runs successfully, copy the output.

"se=2020-01-01&sp=***"

Cette sortie est transmise au paramètre --template-uri à l’étape suivante.This output will be the passed to the --template-uri parameter in the next step.

Générer une définition de signature d’accès partagéGenerate a shared access signature definition

Utilisez la commande Azure CLI az keyvault storage sas-definition create, en transmettant la sortie de l’étape précédente au paramètre --template-uri, afin de créer une définition de signature d’accès partagé.Use the the Azure CLI az keyvault storage sas-definition create command, passing the output from the previous step to the --template-uri parameter, to create a shared access signature definition. Vous pouvez fournir le nom de votre choix au paramètre -n.You can provide the name of your choice to the -n parameter.

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

Vérifier la définition de la signature d’accès partagéVerify the shared access signature definition

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.You can verify that the shared access signature definition has been stored in your key vault using the Azure CLI az keyvault storage sas-definition show command.

Vous pouvez maintenant utiliser la commande az keyvault storage sas-definition show et la propriété id pour afficher le contenu de ce secret.You can now use the az keyvault storage sas-definition show command and the id property to view the content of that secret.

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

Étapes suivantesNext steps