Partager via


Bibliothèque de client Azure KeyVault Administration pour .NET - version 4.3.0

Azure Key Vault Managed HSM est un service cloud entièrement managé, hautement disponible et conforme aux normes qui vous permet de protéger les clés de chiffrement pour vos applications cloud à l’aide de HSM validés FIPS 140-2 Niveau 3.

Les clients de la bibliothèque d’administration Azure Key Vault prennent en charge les tâches administratives telles que la sauvegarde/restauration complète et le contrôle d’accès en fonction du rôle (RBAC) au niveau des clés.

| Code sourcePackage (NuGet) | | Documentation produitÉchantillons

Prise en main

Installer le package

Installez la bibliothèque de client d’administration Azure Key Vault pour .NET avec NuGet :

dotnet add package Azure.Security.KeyVault.Administration

Prérequis

Pour créer une ressource HSM managée, exécutez la commande CLI suivante :

az keyvault create --hsm-name <your-key-vault-name> --resource-group <your-resource-group-name> --administrators <your-user-object-id> --location <your-azure-location>

Pour obtenir, <your-user-object-id> vous pouvez exécuter la commande CLI suivante :

az ad user show --id <your-user-principal> --query id

Authentifier le client

Pour interagir avec le service Azure Key Vault, vous devez créer une instance des classes clientes ci-dessous. Vous avez besoin d’une URL de coffre, que vous pouvez voir sous le nom « Nom DNS » dans le portail, et d’informations d’identification pour instancier un objet client.

Les exemples présentés ci-dessous utilisent un DefaultAzureCredential, qui convient à la plupart des scénarios, notamment aux environnements de développement et de production locaux. En outre, nous vous recommandons d’utiliser une identité managée pour l’authentification dans les environnements de production. Vous trouverez plus d’informations sur les différentes méthodes d’authentification et leurs types d’informations d’identification correspondants dans la documentation Azure Identity .

Pour utiliser le DefaultAzureCredential fournisseur indiqué ci-dessous ou d’autres fournisseurs d’informations d’identification fournis avec le Kit de développement logiciel (SDK) Azure, vous devez d’abord installer le package Azure.Identity :

dotnet add package Azure.Identity

Activer votre HSM managé

Toutes les commandes du plan de données sont désactivées tant que le HSM n’est pas activé. Vous ne pourrez pas créer de clés ou attribuer des rôles. Seuls les administrateurs désignés qui ont fait l’objet d’une attribution pendant l’exécution de la commande create peuvent activer le HSM. Pour activer le HSM, vous devez télécharger le domaine de sécurité.

Pour activer votre HSM, vous avez besoin de :

  • Un minimum de 3 paires de clés RSA (maximum 10)
  • Spécifier le nombre minimal de clés requises pour déchiffrer le domaine de sécurité (quorum)

Pour activer le HSM, vous devez envoyer au moins trois clés publiques RSA au HSM (10 au maximum). Le HSM chiffre le domaine de sécurité avec ces clés et le renvoie. Une fois ce domaine de sécurité correctement téléchargé, votre HSM est prêt à être utilisé. Vous devez aussi spécifier un quorum, qui est le nombre minimal de clés privées nécessaires au déchiffrement du domaine de sécurité.

L’exemple ci-dessous montre comment utiliser openssl pour générer 3 certificats auto-signés.

openssl req -newkey rsa:2048 -nodes -keyout cert_0.key -x509 -days 365 -out cert_0.cer
openssl req -newkey rsa:2048 -nodes -keyout cert_1.key -x509 -days 365 -out cert_1.cer
openssl req -newkey rsa:2048 -nodes -keyout cert_2.key -x509 -days 365 -out cert_2.cer

Utilisez la commande az keyvault security-domain download pour télécharger le domaine de sécurité et activer votre HSM managé. L’exemple ci-dessous utilise 3 paires de clés RSA (seules les clés publiques sont nécessaires pour cette commande) et définit le quorum sur 2.

az keyvault security-domain download --hsm-name <your-managed-hsm-name> --sd-wrapping-keys ./certs/cert_0.cer ./certs/cert_1.cer ./certs/cert_2.cer --sd-quorum 2 --security-domain-file ContosoMHSM-SD.json

Contrôle de l’accès à votre HSM managé

Les administrateurs désignés affectés lors de la création sont automatiquement ajoutés au rôle intégré « Administrateurs HSM managés », qui sont en mesure de télécharger un domaine de sécurité et de gérer des rôles pour l’accès au plan de données, entre autres autorisations limitées.

Pour effectuer d’autres actions sur des clés, vous devez affecter des principaux à d’autres rôles, tels que « Utilisateur de chiffrement HSM managé », qui peut effectuer des opérations de clé non destructrices :

az keyvault role assignment create --hsm-name <your-managed-hsm-name> --role "Managed HSM Crypto User" --scope / --assignee-object-id <principal-or-user-object-ID> --assignee-principal-type <principal-type>

Lisez les bonnes pratiques pour sécuriser correctement votre HSM managé.

Créer KeyVaultAccessControlClient

Instanciez un DefaultAzureCredential à passer au KeyVaultAccessControlClient. Les mêmes instance d’informations d’identification de jeton peuvent être utilisées avec plusieurs clients s’ils authentificationnt avec la même identité.

KeyVaultAccessControlClient client = new KeyVaultAccessControlClient(new Uri(managedHsmUrl), new DefaultAzureCredential());

Créer KeyVaultBackupClient

Instanciez un DefaultAzureCredential à passer au KeyVaultBackupClient. Les mêmes instance d’informations d’identification de jeton peuvent être utilisées avec plusieurs clients s’ils authentificationnt avec la même identité.

KeyVaultBackupClient client = new KeyVaultBackupClient(new Uri(managedHsmUrl), new DefaultAzureCredential());

Créer KeyVaultSettingClient

Instanciez un DefaultAzureCredential à passer au KeyVaultSettingsClient. Les mêmes instance d’informations d’identification de jeton peuvent être utilisées avec plusieurs clients s’ils authentificationnt avec la même identité.

KeyVaultSettingsClient client = new KeyVaultSettingsClient(new Uri(managedHsmUrl), new DefaultAzureCredential());

Concepts clés

KeyVaultRoleDefinition

A KeyVaultRoleDefinition est une collection d’autorisations. Une définition de rôle définit les opérations qui peuvent être effectuées, telles que la lecture, l’écriture et la suppression. Il peut également définir les opérations qui sont exclues des opérations autorisées.

KeyVaultRoleDefinitions peut être listé et spécifié dans le cadre d’un KeyVaultRoleAssignment.

KeyVaultRoleAssignment

A KeyVaultRoleAssignment est l’association d’un KeyVaultRoleDefinition à un principal de service. Ils peuvent être créés, répertoriés, extraits individuellement et supprimés.

KeyVaultAccessControlClient

Un KeyVaultAccessControlClient fournit des opérations synchrones et asynchrones permettant la gestion des KeyVaultRoleDefinition objets et KeyVaultRoleAssignment .

KeyVaultBackupClient

Un KeyVaultBackupClient fournit des opérations synchrones et asynchrones pour effectuer des sauvegardes de clés complètes, des restaurations de clés complètes et des restaurations de clés sélectives.

BackupOperation

Représente BackupOperation une opération de longue durée pour une sauvegarde de clé complète.

RestoreOperation

Un RestoreOperation représente une opération de longue durée pour une restauration de clé complète et de clé sélective.

Sécurité des threads

Nous garantissons que toutes les méthodes de instance client sont sécurisées pour les threads et indépendantes les unes des autres (recommandations). Cela garantit que la recommandation de réutilisation des instances clientes est toujours sécurisée, même entre les threads.

Concepts supplémentaires

Options clientes | Accès à la réponse | Opérations de longue durée | Gestion des défaillances | Diagnostics | Moqueur | Durée de vie du client

Exemples

Le package Azure.Security.KeyVault.Administration prend en charge les API synchrones et asynchrones.

La section suivante fournit plusieurs extraits de code à l’aide de ce client qui a été créé ci-dessus pour les clients de contrôle d’accès ou de sauvegarde, couvrant certaines des tâches les plus courantes liées au contrôle d’accès Azure Key Vault :

Exemples de synchronisation

Exemples asynchrones

Résolution des problèmes

Consultez notre guide de résolution des problèmes pour plus d’informations sur la façon de diagnostiquer différents scénarios d’échec.

Général

Lorsque vous interagissez avec la bibliothèque Azure Key Vault Administration à l’aide du KIT de développement logiciel (SDK) .NET, les erreurs retournées par le service correspondent aux mêmes codes de status HTTP retournés pour les demandes d’API REST.

Par exemple, si vous essayez de récupérer une attribution de rôle qui n’existe pas dans votre Key Vault Azure, une 404 erreur est retournée, indiquant « Introuvable ».

try
{
    KeyVaultRoleAssignment roleAssignment = client.GetRoleAssignment(KeyVaultRoleScope.Global, "example-name");
}
catch (RequestFailedException ex)
{
    Console.WriteLine(ex.ToString());
}
Azure.RequestFailedException: Service request failed.
Status: 404 (Not Found)

Content:
{"error":{"code":"RoleAssignmentNotFound","message":"Requested role assignment not found (Activity ID: a67f09f4-b68e-11ea-bd6d-0242ac120006)"}}

Headers:
X-Content-Type-Options: REDACTED
x-ms-request-id: a67f09f4-b68e-11ea-bd6d-0242ac120006
Content-Length: 143
Content-Type: application/json

Configuration de la journalisation de la console

Le moyen le plus simple de voir les journaux consiste à activer la journalisation de la console. Pour créer un écouteur de journal du SDK Azure qui génère des messages vers la console, utilisez la AzureEventSourceListener.CreateConsoleLogger méthode .

// Setup a listener to monitor logged events.
using AzureEventSourceListener listener = AzureEventSourceListener.CreateConsoleLogger();

Pour en savoir plus sur les autres mécanismes de journalisation , consultez ici.

Étapes suivantes

Bien commencer avec nos exemples.

Contribution

Ce projet accepte les contributions et les suggestions. La plupart des contributions vous demandent d’accepter un contrat de licence de contribution (CLA) déclarant que vous avez le droit de nous accorder, et que vous nous accordez réellement, les droits d’utilisation de votre contribution. Pour plus d’informations, visitez https://cla.microsoft.com.

Ce projet a adopté le Code de conduite Open Source de Microsoft. Pour plus d’informations, consultez les Questions fréquentes (FAQ) sur le code de conduite ou envoyez vos questions ou vos commentaires à opencode@microsoft.com.

Impressions