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

In an Azure key vault can i retrieve all versions of a secret by just secret name?

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

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

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

干杯

以下取自 here 的代码遍历每个页面的每个秘密并调用 SecretClient#getSecret(String, String)。这将 return 具有相应版本值的秘密。

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(String name)

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(String vaultBaseUrl, String secretName, String secretVersion)

对于 REST API:

您可以使用 Get Secret Versions.

您可以使用

列出指定机密的所有版本
GET {vaultBaseUrl}/secrets/{secret-name}/versions?api-version=7.1

它将 return 一个秘密列表以及 link 到下一页的秘密。

那么你可以使用Get Secret

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

对于 CLI:

如果你使用list-versions cli,你可以这样做

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

然后你可以使用az keyvault secret show

获取秘密
az keyvault secret show [--id]
                        [--name]
                        [--subscription]
                        [--vault-name]
                        [--version]