Partager via


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 :


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 :

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'
  }
]
*/

Étapes suivantes