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

时间:2020-09-10 00:36:43

标签: c# azure azure-keyvault

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

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

是否有一种方法可以将所有列表都列出?

欢呼

1 个答案:

答案 0 :(得分:2)

here获取的以下代码在每个页面上遍历每个秘密,并调用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(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

它将返回机密列表以及指向下一页机密的链接。

然后您可以使用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]