Gérer Key Vault dans Azure Stack Hub à l’aide de PowerShell

Cet article explique comment créer et gérer un coffre de clés dans Azure Stack Hub à l’aide de PowerShell. Vous apprendrez à utiliser les applets de commande PowerShell Key Vault pour :

  • Création d’un coffre de clés
  • Stocker et gérer des clés de chiffrement et des secrets.
  • Autoriser des utilisateurs ou des apps à appeler des opérations dans le coffre.

Notes

Les applets de commande PowerShell Key Vault décrites dans cet article sont fournies dans le SDK Azure PowerShell.

Prérequis

Activer votre abonnement de locataire pour les opérations Key Vault

Avant de pouvoir exécuter des opérations sur un coffre de clés, vous devez vérifier que votre abonnement de locataire est activé pour les opérations de coffre. Pour vérifier que les opérations de coffre de clés sont activées, exécutez la commande suivante :

Get-AzResourceProvider -ProviderNamespace Microsoft.KeyVault | ft -Autosize

Si votre abonnement est activé pour les opérations de coffre, la sortie indique que RegistrationState est Registered pour tous les types de ressources d’un coffre de clés.

État d’inscription du coffre de clés dans PowerShell

Si les opérations de coffre ne sont pas activées, exécutez la commande suivante pour inscrire le service Key Vault dans votre abonnement :

Register-AzResourceProvider -ProviderNamespace Microsoft.KeyVault

Si l’inscription réussit, la sortie suivante est retournée :

Inscription du coffre de clés dans PowerShell réussie

Quand vous appelez les commandes Key Vault, vous pouvez obtenir une erreur similaire à « L’abonnement n’est pas inscrit pour utiliser l’espace de noms Microsoft.KeyVault ». Si vous recevez une erreur, assurez-vous d’avoir activé le fournisseur de ressources Key Vault en suivant les instructions fournies précédemment.

Création d’un coffre de clés

Avant de créer un coffre de clés, créez un groupe de ressources pour que toutes les ressources associées au coffre de clés fassent partie d’un groupe de ressources. Utilisez la commande suivante pour créer un groupe de ressources :

New-AzResourceGroup -Name "VaultRG" -Location local -verbose -Force

Nouveau groupe de ressources généré dans PowerShell

Maintenant, utilisez l’applet de commande suivante pour créer un coffre de clés dans le groupe de ressources que vous avez créé plus tôt. Cette commande lit trois paramètres obligatoires : le nom du groupe de ressources, le nom du coffre de clés et l’emplacement géographique.

Exécutez la commande suivante pour créer un coffre de clés :

New-AzKeyVault -VaultName "Vault01" -ResourceGroupName "VaultRG" -Location local -verbose

Nouveau coffre de clés généré dans PowerShell

La sortie de cette commande affiche les propriétés du coffre de clés que vous avez créé. Lorsqu’une app accède à ce coffre, elle doit utiliser la propriété URI du coffre, https://vault01.vault.local.azurestack.external dans cet exemple.

Déploiement Active Directory Federation Services (AD FS)

Dans un déploiement AD FS, vous risquez d’obtenir cet avertissement : « La stratégie d’accès n’est pas définie. Aucun utilisateur ou application n’a l’autorisation d’accès pour utiliser ce coffre. » Pour résoudre ce problème, définissez une stratégie d’accès pour le coffre en utilisant la commande Set-AzKeyVaultAccessPolicy :

# Obtain the security identifier(SID) of the active directory user
$adUser = Get-ADUser -Filter "Name -eq '{Active directory user name}'"
$objectSID = $adUser.SID.Value

# Set the key vault access policy
Set-AzKeyVaultAccessPolicy -VaultName "{key vault name}" -ResourceGroupName "{resource group name}" -ObjectId "{object SID}" -PermissionsToKeys {permissionsToKeys} -PermissionsToSecrets {permissionsToSecrets} -BypassObjectIdValidation

Gérer les clés et les secrets

Une fois que vous avez créé un coffre, effectuez les étapes suivantes pour créer et gérer les clés et les secrets dans le coffre.

Créer une clé

Utilisez l’applet de commande Add-AzureKeyVaultKey pour créer ou importer une clé protégée par logiciel dans un coffre de clés :

Add-AzureKeyVaultKey -VaultName "Vault01" -Name "Key01" -verbose -Destination Software

Le paramètre -Destination permet de spécifier que la clé est protégée par un logiciel. Une fois l’opération terminée, la commande affiche les détails de la clé créée.

Nouvelle clé de coffre de clés générée dans PowerShell

Vous pouvez maintenant référencer la clé créée à l’aide de son URI. Si vous créez ou importez une clé qui a le même nom qu’une clé existante, la clé d’origine est mise à jour avec les valeurs spécifiées dans la nouvelle clé. Vous pouvez accéder à la version précédente à l’aide de l’URI propre à la version de la clé. Par exemple :

  • Utilisez https://vault10.vault.local.azurestack.external:443/keys/key01 pour toujours obtenir la version actuelle.
  • Utilisez https://vault010.vault.local.azurestack.external:443/keys/key01/d0b36ee2e3d14e9f967b8b6b1d38938a pour obtenir cette version spécifique.

Obtenir une clé

Utilisez l’applet de commande Get-AzureKeyVaultKey pour lire une clé et ses détails :

Get-AzureKeyVaultKey -VaultName "Vault01" -Name "Key01"

Créer un secret

Utilisez la cmdlet Set-AzureKeyVaultSecret pour créer ou mettre à jour un secret dans un coffre. Un secret est créé s’il n’existe pas encore. Une nouvelle version du secret est créée s’il existe déjà :

$secretvalue = ConvertTo-SecureString "User@123" -AsPlainText -Force
Set-AzureKeyVaultSecret -VaultName "Vault01" -Name "Secret01" -SecretValue $secretvalue

Créer un secret dans PowerShell

Obtenir un secret

Utilisez la cmdlet Get-AzureKeyVaultSecret pour lire un secret dans un coffre de clés. Cette commande peut retourner toutes les versions ou des versions spécifiques d’un secret :

Get-AzureKeyVaultSecret -VaultName "Vault01" -Name "Secret01"

Après avoir créé les clés et les secrets, vous pouvez autoriser des apps externes à les utiliser.

Autoriser une app à utiliser une clé ou un secret

Utilisez l’applet de commande suivante pour autoriser une application à accéder à une clé ou à un secret dans le coffre de clés.

Dans l’exemple suivant, le nom du coffre est ContosoKeyVault et l’ID client de l’application que vous souhaitez autoriser est 8f8c4bbd-485b-45fd-98f7-ec6300b7b4ed. Pour autoriser l’app, exécutez la commande suivante. Vous pouvez également spécifier le paramètre PermissionsToKeys pour définir des autorisations pour un utilisateur, une app ou un groupe de sécurité.

Quand vous utilisez l’applet de commande sur un environnement Azure Stack Hub configuré pour AD FS, le paramètre BypassObjectIdValidation doit être fourni

Set-AzKeyVaultAccessPolicy -VaultName 'ContosoKeyVault' -ServicePrincipalName 8f8c4bbd-485b-45fd-98f7-ec6300b7b4ed -PermissionsToKeys decrypt,sign -BypassObjectIdValidation

Si vous souhaitez autoriser cette même app à lire les secrets de votre coffre, exécutez l’applet de commande suivante :

Set-AzKeyVaultAccessPolicy -VaultName 'ContosoKeyVault' -ServicePrincipalName 8f8c4bbd-485b-45fd-98f7-ec6300 -PermissionsToKeys Get -BypassObjectIdValidation

Étapes suivantes