在Azure密钥库中,我可以仅通过密钥名称检索密钥的所有版本吗



我将在Azure密钥保管库中存储一个值,当我检索它时,我也想检索所有以前的版本。我不知道会有多少以前的版本,可能只有一个。

我已经研究了getSecret C#方法,如果我不指定版本,我可以得到最新版本,如果我知道,我可以获得特定版本。https://learn.microsoft.com/en-us/java/api/com.azure.security.keyvault.secrets.secretclient.getsecret?view=azure-java稳定

有没有办法把它们都列在一个列表里?

干杯

从这里获得的以下代码按每个页面对每个秘密进行迭代,并调用SecretClient#getSecret(String,String(。这将返回带有相应版本值的机密。

secretClient.listPropertiesOfSecretVersions("secretName", new Context(key1, value2))
.iterableByPage().forEach(resp -> {
System.out.printf("Got response headers . Url: %s, Status code: %d %n",
resp.getRequest().getUrl(), resp.getStatusCode());
resp.getItems().forEach(value -> {
KeyVaultSecret secretWithValue = secretClient.getSecret(value.getName(), value.getVersion());
System.out.printf("Received secret's version with name %s and value %s",
secretWithValue.getName(), secretWithValue.getValue());
});
});

对于SDK:

listPropertiesOfSecretVersions(字符串名称(

for (SecretProperties secret : secretClient.listPropertiesOfSecretVersions("secretName")) {
KeyVaultSecret secretWithValue = secretClient.getSecret(secret.getName(), secret.getVersion());
System.out.printf("Received secret's version with name %s and value %s",
secretWithValue.getName(), secretWithValue.getValue());
}

您可以使用getSecret(字符串vaultBaseUrl、字符串secretName、字符串secret版本(

对于REST API:

您可以使用"获取机密版本"。

您可以使用列出指定机密的所有版本

GET {vaultBaseUrl}/secrets/{secret-name}/versions?api-version=7.1

它将返回一个秘密列表,并链接到下一页的秘密。

然后你可以使用Get-Secret

GET {vaultBaseUrl}/secrets/{secret-name}/{secret-version}?api-version=7.1

对于CLI:

如果您使用列表版本cli,则可以将其作为

az keyvault secret list-versions [--id]
[--maxresults]
[--name]
[--subscription]
[--vault-name]

然后你可以使用az密钥库获得秘密显示

az keyvault secret show [--id]
[--name]
[--subscription]
[--vault-name]
[--version]

最新更新