Aujourd’hui, je vais vous montrer comment créer ce que Microsoft appelle un compte de stockage géré. Peut-être savez-vous que chaque compte de stockage dispose de deux clés privées interchangeables que vous pouvez utiliser pour vous authentifier par programmation afin d'accéder aux quatre services suivants :
Voyons de plus près le compte de stockage général v2 ipstorage704 illustré à la Figure 1. Ce compte est non géré, ce qui implique que nous gérons ces deux clés privées et non Azure.
Figure 1. Compte de stockage Azure non géré.
Si vous oubliez de régénérer et d'effectuer la rotation des clés, ou pire, que vous laissez les clés en texte clair dans le code source, vous mettez carrément en péril la sécurité des données Azure.
Qu'est-ce qu'un compte de stockage géré ?
Un compte de stockage géré est un compte de stockage général dont la sécurité est gérée par Azure. Nous viserons ainsi les objectifs suivants :
Pour configurer votre environnement Azure aux fins de cet exercice, vous devrez accomplir les trois tâches suivantes :
Oui, nous devons définir un compte de stockage géré par programmation avec Azure PowerShell ou l'interface de ligne de commande (CLI) Azure, car cette fonctionnalité n'est pas disponible actuellement sur le portail Azure. J'ai emprunté le code de l'article des docs Microsoft Azure intitulé Manage storage account keys with Key Vault and Azure PowerShell (Gérer les clés de compte de stockage avec Key Vault et Azure PowerShell). Maintenant, au travail !
Ouvrez une console PowerShell avec des privilèges élevés ou une instance Visual Studio Code et authentifiez-vous auprès de votre abonnement Azure :
Connect-AzAccount
Si vous disposez de plusieurs abonnements Azure, vous devrez indiquer votre contexte par défaut :
Set-AzContext -SubscriptionName 'MySub'
Définissons ensuite les variables qui permettront de simplifier les références au compte de stockage et à Key Vault. Notez qu'il vous faudra remplacer mes valeurs par les vôtres :
$resourceGroupName = "ipswitch"
$storageAccountName = "ipstorage704"
$storageAccountKey = "aUQBMQFMnnk2fBNsv2K49mqW31Vc0nHjMDGJm4HAZId+5PgBYfKbrZMippBaTGjlGOsg+EovpVYKwhBCIT0eSA=="
$keyVaultName = "ipswitch-keyvault"
$keyVaultSpAppId = "cfa8b339-82a2-471a-a3c9-0fc0be7a4093"
Quelques remarques concernant le code précédent :
Nous devons aussi récupérer notre ID utilisateur et référencer le compte de stockage cible :
$userId = (Get-AzContext).Account.Id
$storageAccount = Get-AzStorageAccount -ResourceGroupName $resourceGroupName -StorageAccountName $storageAccountName
Au nom du principe du privilège minimal, affectons le rôle de service d'opérateur de clé de compte de stockage (contrôle des accès basé sur les rôles d'Azure, RBAC) à notre Key Vault. Ceci garantit que Key Vault peut uniquement gérer les clés du compte de stockage (pas d'autre secret ou ressource Key Vault) :
New-AzRoleAssignment -ApplicationId $keyVaultSpAppId -RoleDefinitionName 'Storage Account Key Operator Service Role' -Scope $storageAccount.Id
Regardez la figure 2 : vous pouvez constater que mon Key Vault a l'affectation de rôle RBAC appropriée pour mon compte de stockage.
Figure 2. Mon Key Vault peut accéder à mon compte de stockage.
Vous savez peut-être déjà qu'Azure Key Vault utilise des règles d'accès pour accorder aux utilisateurs ou responsables du service des autorisations spécifiques sur les secrets Azure Key Vault. Il nous faut accorder ces autorisations à notre ID utilisateur :
Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -UserPrincipalName $userId -PermissionsToStorage get, list, delete, set, update, regeneratekey, getsas, listsas, deletesas, setsas, recover, backup, restore, purge
La figure 3 illustre la vue du portail Azure de mes autorisations d'accès Key Vault.
Figure 3. Mon compte utilisateur contrôle totalement les secrets Key Vault.
Enfin, nous allons ajouter le compte de stockage cible à la liste Key Vault des comptes de stockage gérés :
Add-AzKeyVaultManagedStorageAccount -VaultName $keyVaultName -AccountName $storageAccountName -AccountResourceId $storageAccount.Id -ActiveKeyName 'key1' -DisableAutoRegenerateKey
Quelques remarques sur le code précédent :
Pour configurer Key Vault de manière à utiliser, par exemple, une période de régénération de 90 jours, commencez par définir une variable :
$regenerationPeriod = [System.Timespan]::FromDays(90)
Puis utilisez la paire paramètre/valeur suivante au lieu du commutateur -DisableAutoRegenerateKey :
-RegenerationPeriod $regenerationPeriod
Lors de l'exécution de Add-AzKeyVaultManagedStorageAccount, il se peut que vous receviez une erreur de type « Bad Request » (requête erronée). Il s'agit d'un problème connu pour lequel il existe au moins un rapport de bogue GitHub.
Même si vous recevez cette erreur, tout n'est pas perdu. Il suffit d'ouvrir Azure Cloud Shell, de vous authentifier auprès de votre abonnement, et d'exécuter la commande Azure CLI suivante, en utilisant les noms et ID de vos ressources :
az keyvault storage add --vault-name ipswitch-keyvault -n ipstorage704 --active-key-name key1 --auto-regenerate-key --regeneration-period P90D --resource-id "/subscriptions/2fbf906e-1101-4bc0-b64f-adc44e462fff/resourceGroups/ipswitch/providers/Microsoft.Storage/storageAccounts/ipstorage704"
Le code précédent a été mis en œuvre avec succès sur mon système. Notez que nous spécifions ainsi une période de régénération de 90 jours.
Malheureusement, le portail Azure n'affiche aucune information concernant notre compte de stockage géré dans Key Vault ou le compte de stockage. Nous pouvons cependant exécuter Get-AzKeyVaultManagedStorageAccount pour effectuer la vérification :
Get-AzKeyVaultManagedStorageAccount -VaultName 'ipswitch-keyvault' -Name 'ipstorage704'
Id : https://ipswitch-keyvault.vault.azure.net:443/storage/ipstorage704
Vault Name : ipswitch-keyvault
AccountName : ipstorage704
Account Resource Id : /subscriptions/2fbf906e-1101-4bc0-b64f-adc44e462fff/resourceGroups/ipswitch/providers/Microsoft.Storage/
storageAccounts/ipstorage704
Active Key Name : key1
Auto Regenerate Key : True
Regeneration Period : 90.00:00:00
Enabled : True
Created : 9/30/19 8:25:18 PM
Updated : 9/30/19 8:25:18 PM
Tags :
Nous y sommes ! La procédure de création d'un compte de stockage géré est peu pratique, mais l'avantage de ne plus gérer manuellement les clés d'accès du compte de stockage rend cette configuration très intéressante, quelles que soient les difficultés.
Tim Warner is a Microsoft MVP, Microsoft Press/Wiley author, and Azure solution architect based in Nashville, TN. Contact Tim at Twitter (@TechTrainerTim) or his website, techtrainertim.com.
Laissez nos experts vous apprendre à utiliser les meilleures fonctionnalités de Sitefinity pour offrir des expériences numériques convaincantes.
Pour en savoir plusAbonnez-vous pour obtenir toutes les nouvelles, informations et didacticiels dont vous avez besoin pour créer de meilleures applications et sites professionnels