Listar ou localizar um segredo no Azure Key Vault com JavaScript
Crie o SecretClient com as credenciais de autenticação programática apropriadas e use o cliente para localizar um segredo do Cofre da Chave do Azure.
Todos os métodos de lista retornam um iterável. Você pode obter todos os itens na lista ou encadear o método byPage para iterar uma página de itens de cada vez.
Depois de ter as propriedades de um segredo, você pode usar o método getSecret para obter o valor do segredo.
Listar todos os segredos
Para listar todos os segredos no Cofre de Chaves do Azure, use o método listPropertiesOfSecrets para obter as propriedades de um segredo atual.
for await (const secretProperties of client.listPropertiesOfSecrets()){
// do something with properties
console.log(`Secret name: ${secretProperties.name}`);
}
Esse método retorna o objeto SecretProperties .
Listar todos os segredos por página
Para listar todos os segredos no Cofre da Chave do Azure, use o método listPropertiesOfSecrets para obter propriedades secretas uma página de cada vez, definindo o objeto 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}`);
Esse método retorna o objeto SecretProperties .
Listar todas as versões de um segredo
Para listar todas as versões de um segredo no Cofre da Chave do Azure, use o método listPropertiesOfSecretVersions .
for await (const secretProperties of client.listPropertiesOfSecretVersions(secretName)) {
// do something with version's properties
console.log(`Version created on: ${secretProperties.createdOn.toString()}`);
}
Esse método retorna o objeto SecretProperties .
Listar segredos excluídos
Para listar todos os segredos excluídos no Cofre da Chave do Azure, use o método 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}`);
O objeto secretProperties é um objeto DeletedSecret .
Encontre segredo por propriedade
Para encontrar a versão atual (mais recente) de um segredo, que corresponde a um nome/valor de propriedade, faça um loop sobre todos os segredos e compare as propriedades. O código JavaScript a seguir localiza todos os segredos ativados.
Esse código usa o seguinte método em um loop de todos os segredos:
- listPropertiesOfSecrets() - retorna o objeto de propriedade da versão mais recente por segredo
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'
]
*/
Encontrar versões por propriedade
Para encontrar todas as versões que correspondem a um nome/valor de propriedade, faça um loop em todas as versões secretas e compare as propriedades.
Esse código usa os seguintes métodos em um loop aninhado:
- listPropertiesOfSecrets() - retorna o objeto de propriedade das versões mais recentes por segredo
- listPropertiesOfSecretVersions() - retorna todas as versões para 1 segredo
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'
}
]
*/