Répertorier ou rechercher un secret dans Azure Key Vault avec JavaScript
Créez le Secret Client avec les identifiants d'authentification programmatique appropriés, puis utilisez le client pour activer et désactiver un secret de Azure Key Vault.
Toutes les méthodes de liste retournent un itérable. Vous pouvez obtenir tous les éléments de la liste ou chaîner la méthode byPage pour itérer une page d’éléments à la fois.
Une fois que vous avez les propriétés d’un secret, vous pouvez utiliser la méthode getSecret pour obtenir la valeur du secret.
Lister tous les secrets
Pour répertorier tous les secrets dans Azure Key Vault, utilisez la méthode listPropertiesOfSecrets pour obtenir les propriétés d’un secret actuel.
for await (const secretProperties of client.listPropertiesOfSecrets()){
// do something with properties
console.log(`Secret name: ${secretProperties.name}`);
}
Cette méthode renvoie l’objet SecretProperties.
Lister tous les secrets par page
Pour lister tous les secrets dans Azure Key Vault, utilisez la méthode listPropertiesOfSecrets pour obtenir les propriétés secrètes d’une page à la fois en définissant l’objet PageSettings.
// 5 secrets per page
const maxResults = 5;
let pageCount = 1;
let itemCount=1;
// loop through all secrets
for await (const page of client.listPropertiesOfSecrets().byPage({ maxPageSize: maxResults })) {
let itemOnPageCount = 1;
// loop through each secret on page
for (const secretProperties of page) {
console.log(`Page:${pageCount++}, item:${itemOnPageCount++}:${secretProperties.name}`);
itemCount++;
}
}
console.log(`Total # of secrets:${itemCount}`);
Cette méthode renvoie l’objet SecretProperties.
Lister toutes les versions d’un secret
Pour lister toutes les versions d’un secret dans Azure Key Vault, utilisez la méthode listPropertiesOfSecretVersions.
for await (const secretProperties of client.listPropertiesOfSecretVersions(secretName)) {
// do something with version's properties
console.log(`Version created on: ${secretProperties.createdOn.toString()}`);
}
Cette méthode renvoie l’objet SecretProperties.
Répertorier les secrets supprimés
Pour répertorier tous les secrets supprimés dans Azure Key Vault, utilisez la méthode listDeletedSecrets.
// 5 secrets per page
const maxResults = 5;
let pageCount = 1;
let itemCount=1;
// loop through all secrets
for await (const page of client.listDeletedSecrets().byPage({ maxPageSize: maxResults })) {
let itemOnPageCount = 1;
// loop through each secret on page
for (const secretProperties of page) {
console.log(`Page:${pageCount++}, item:${itemOnPageCount++}:${secretProperties.name}`);
itemCount++;
}
}
console.log(`Total # of secrets:${itemCount}`);
L’objet secretProperties est un objet DeletedSecret .
Rechercher un secret par propriété
Pour rechercher la version actuelle (la plus récente) d’un secret, qui correspond à un nom/valeur de propriété, effectuez une boucle sur tous les secrets et comparez les propriétés. Le code JavaScript suivant recherche tous les secrets activés.
Ce code utilise la méthode suivante dans une boucle de tous les secrets :
- listPropertiesOfSecrets() : retourne l’objet de propriété de la dernière version par secret
const secretsFound = [];
const propertyName = "enabled"
const propertyValue = false;
for await (const secretProperties of client.listPropertiesOfSecrets()){
if(propertyName === 'tags'){
if(JSON.stringify(secretProperties.tags) === JSON.stringify(propertyValue)){
secretsFound.push( secretProperties.name )
}
} else {
if(secretProperties[propertyName].toString() === propertyValue.toString()){
secretsFound.push( secretProperties.name )
}
}
}
console.log(secretsFound)
/*
[
'my-secret-1683734823721',
'my-secret-1683735278751',
'my-secret-1683735523489',
'my-secret-1684172237551'
]
*/
Rechercher des versions par propriété
Pour rechercher toutes les versions, qui correspondent à un nom/valeur de propriété, effectuez une boucle sur toutes les versions secrètes et comparez les propriétés.
Ce code utilise les méthodes suivantes dans une boucle imbriquée :
- listPropertiesOfSecrets() : retourne l’objet de propriété de la dernière version par secret
- listPropertiesOfSecretVersions() : retourne toutes les versions pour 1 secret
const secretsFound = [];
const propertyName = 'createdOn';
const propertyValue = 'Mon May 15 2023 20:52:37 GMT+0000 (Coordinated Universal Time)';
for await (const { name } of client.listPropertiesOfSecrets()){
console.log(`Secret name: ${name}`);
for await (const secretProperties of client.listPropertiesOfSecretVersions(name)) {
console.log(`Secret version ${secretProperties.version}`);
if(propertyName === 'tags'){
if(JSON.stringify(secretProperties.tags) === JSON.stringify(propertyValue)){
console.log(`Tags match`);
secretsFound.push({ name: secretProperties.name, version: secretProperties.version });
}
} else {
if(secretProperties[propertyName].toString() === propertyValue.toString()){
console.log(`${propertyName} matches`);
secretsFound.push({ name: secretProperties.name, version: secretProperties.version });
}
}
}
}
console.log(secretsFound);
/*
[
{
name: 'my-secret-1684183956189',
version: '93beaec3ff614be9a67cd2f4ef4d90c5'
}
]
*/