Démarrage rapide : bibliothèque de client de clés Azure Key Vault pour JavaScript
Commencez à utiliser la bibliothèque de client de clés Azure Key Vault pour JavaScript. Azure Key Vault est un service cloud qui fournit un magasin de clés de chiffrement sécurisé. Vous pouvez stocker des clés, des mots de passe, des certificats et d’autres secrets en toute sécurité. Vous pouvez créer et gérer des coffres de clés Azure grâce au portail Azure. Dans ce guide de démarrage rapide, vous allez découvrir comment créer, récupérer et supprimer des clés dans un coffre de clés Azure en utilisant la bibliothèque de client de clés JavaScript.
Ressources de la bibliothèque de client Key Vault :
Documentation de référence sur les API | Code source de la bibliothèque | Package (npm)
Pour plus d’informations sur Key Vault et les clés, consultez :
Prérequis
- Un abonnement Azure - En créer un gratuitement
- Actuellement Node.js LTS.
- Azure CLI
- Un coffre-fort de clé existant - vous pouvez en créer un à l’aide des éléments ci-après :
Ce guide de démarrage rapide suppose que vous exécutez l’interface Azure CLI.
Connexion à Azure
Exécutez la commande
login
.az login
Si l’interface CLI peut ouvrir votre navigateur par défaut, elle le fait et charge une page de connexion Azure par la même occasion.
Sinon, ouvrez une page de navigateur à l’adresse https://aka.ms/devicelogin et entrez le code d’autorisation affiché dans votre terminal.
Dans le navigateur, connectez-vous avec les informations d’identification de votre compte.
Créer une application Node.js
Créez une application Node.js qui utilise votre coffre-fort de clé.
Dans un terminal, créez un dossier nommé
key-vault-node-app
et modifiez-le dans ce dossier :mkdir key-vault-node-app && cd key-vault-node-app
Initialiser le projet Node.js :
npm init -y
Installer des packages Key Vault
À l’aide du terminal, installez la bibliothèque de client de secrets Azure Key Vault, @azure/keyvault-keys pour Node.js.
npm install @azure/keyvault-keys
Installez la bibliothèque de client d’identité Azure, le package @azure/identity pour vous authentifier dans un coffre de clés.
npm install @azure/identity
Accorder l’accès à votre coffre de clés
Créez une stratégie d’accès pour votre coffre de clés, qui accorde des autorisations de clé à votre compte d’utilisateur.
az keyvault set-policy --name <YourKeyVaultName> --upn user@domain.com --key-permissions delete get list create update purge
Définir des variables d’environnement
Cette application utilise le nom de coffre de clés en tant que variable d’environnement appelée KEY_VAULT_NAME
.
set KEY_VAULT_NAME=<your-key-vault-name>
Authentifier et créer un client
Les requêtes d’application vers les Services Azure doivent être autorisées. L’utilisation de la méthode DefaultAzureCredential fournie par la bibliothèque de client Azure Identity est l’approche recommandée pour implémenter des connexions sans mot de passe aux services Azure dans votre code. DefaultAzureCredential
prend en charge plusieurs méthodes d’authentification et détermine quelle méthode doit être utilisée au moment de l’exécution. Cette approche permet à votre application d’utiliser différentes méthodes d’authentification dans différents environnements (local ou production) sans implémenter de code spécifique à l’environnement.
Dans ce guide de démarrage rapide, DefaultAzureCredential
s’authentifie auprès du coffre de clés à l’aide des informations d’identification de l’utilisateur de développement local connecté à Azure CLI. Quand l’application est déployée sur Azure, le même code DefaultAzureCredential
peut découvrir et utiliser automatiquement une identité managée affectée à un service d’application, une machine virtuelle ou d’autres services. Pour plus d’informations, consultez Vue d’ensemble des identités managées.
Dans cet code, le nom de votre coffre de clés est utilisé pour créer l’URI du coffre de clés, au format https://<your-key-vault-name>.vault.azure.net
. Pour plus d’informations sur l’authentification auprès du coffre de clés, consultez le Guide du développeur.
Exemple de code
Les exemples de code ci-dessous vous montrent comment créer un client et définir, récupérer et supprimer un secret.
Ce code utilise les classes et méthodes de secret Key Vault suivantes :
Configurer le framework d’application
Créez un fichier texte et collez le code suivant dans le fichier index.js.
const { KeyClient } = require("@azure/keyvault-keys"); const { DefaultAzureCredential } = require("@azure/identity"); async function main() { // DefaultAzureCredential expects the following three environment variables: // - AZURE_TENANT_ID: The tenant ID in Azure Active Directory // - AZURE_CLIENT_ID: The application (client) ID registered in the AAD tenant // - AZURE_CLIENT_SECRET: The client secret for the registered application const credential = new DefaultAzureCredential(); const keyVaultName = process.env["KEY_VAULT_NAME"]; if(!keyVaultName) throw new Error("KEY_VAULT_NAME is empty"); const url = "https://" + keyVaultName + ".vault.azure.net"; const client = new KeyClient(url, credential); const uniqueString = Date.now(); const keyName = `sample-key-${uniqueString}`; const ecKeyName = `sample-ec-key-${uniqueString}`; const rsaKeyName = `sample-rsa-key-${uniqueString}`; // Create key using the general method const result = await client.createKey(keyName, "EC"); console.log("key: ", result); // Create key using specialized key creation methods const ecResult = await client.createEcKey(ecKeyName, { curve: "P-256" }); const rsaResult = await client.createRsaKey(rsaKeyName, { keySize: 2048 }); console.log("Elliptic curve key: ", ecResult); console.log("RSA Key: ", rsaResult); // Get a specific key const key = await client.getKey(keyName); console.log("key: ", key); // Or list the keys we have for await (const keyProperties of client.listPropertiesOfKeys()) { const key = await client.getKey(keyProperties.name); console.log("key: ", key); } // Update the key const updatedKey = await client.updateKeyProperties(keyName, result.properties.version, { enabled: false }); console.log("updated key: ", updatedKey); // Delete the key - the key is soft-deleted but not yet purged const deletePoller = await client.beginDeleteKey(keyName); await deletePoller.pollUntilDone(); const deletedKey = await client.getDeletedKey(keyName); console.log("deleted key: ", deletedKey); // Purge the key - the key is permanently deleted // This operation could take some time to complete console.time("purge a single key"); await client.purgeDeletedKey(keyName); console.timeEnd("purge a single key"); } main().catch((error) => { console.error("An error occurred:", error); process.exit(1); });
Exécuter l’exemple d’application
Exécutez l’application :
node index.js
Les méthodes de création et d’obtenir retournent un objet JSON complet pour le certificat :
"key": { "key": { "kid": "https://YOUR-KEY-VAULT-NAME.vault.azure.net/keys/YOUR-KEY-NAME/YOUR-KEY-VERSION", "kty": "YOUR-KEY-TYPE", "keyOps": [ ARRAY-OF-VALID-OPERATIONS ], ... other properties based on key type }, "id": "https://YOUR-KEY-VAULT-NAME.vault.azure.net/keys/YOUR-KEY-NAME/YOUR-KEY-VERSION", "name": "YOUR-KEY-NAME", "keyOperations": [ ARRAY-OF-VALID-OPERATIONS ], "keyType": "YOUR-KEY-TYPE", "properties": { "tags": undefined, "enabled": true, "notBefore": undefined, "expiresOn": undefined, "createdOn": 2021-11-29T18:29:11.000Z, "updatedOn": 2021-11-29T18:29:11.000Z, "recoverableDays": 90, "recoveryLevel": "Recoverable+Purgeable", "exportable": undefined, "releasePolicy": undefined, "vaultUrl": "https://YOUR-KEY-VAULT-NAME.vault.azure.net", "version": "YOUR-KEY-VERSION", "name": "YOUR-KEY-VAULT-NAME", "managed": undefined, "id": "https://YOUR-KEY-VAULT-NAME.vault.azure.net/keys/YOUR-KEY-NAME/YOUR-KEY-VERSION" } }
Intégration à la configuration de l’application
Le SDK Azure fournit une méthode d’aide, parseKeyVaultCertificateIdentifier,pour analyser l'ID du certificat Key Vault donné. Cette étape est nécessaire si vous utilisez des références de configuration d’application à Key Vault. App Config stocke l'ID de la clé du coffre- fort. Vous avez besoin de la méthode parseKeyVaultCertificateIdentifier pour analyser cet ID et obtenir le nom du certificat. Une fois que vous avez le nom de la clé, vous pouvez obtenir la valeur de clé actuelle à l’aide du code de ce démarrage rapide.
Étapes suivantes
Dans ce guide de démarrage rapide, vous avez créé un coffre de clés, stocké une clé et récupéré cette clé. Pour en savoir plus sur Key Vault et sur la manière de l’intégrer à vos applications, consultez ces articles.
- Lire la vue d’ensemble Azure Key Vault
- Lire une présentation des clés Azure Key Vault
- Découvrir comment Sécuriser l’accès à un coffre de clés
- Consulter le Guide du développeur Azure Key Vault
- Passer en revue la Vue d’ensemble de la sécurité de Key Vault