根据值从azure密钥库获取密钥名称



这个想法是用户发送给我一个api-key,我返回他的品牌名称。api键是GUID,所以我不能把它作为秘密名称存储。

我正在寻找一种方法来从密钥库按值检索秘密名称. 这就是我的团队提出的,但它非常缓慢,并且在向密钥库添加新秘密时急剧增加。

public String getClientApiKeyName(final String apiKeyValue) {
for (SecretProperties secretProperties : secretClient.listPropertiesOfSecrets()) {
if (secretProperties.isEnabled()) {
final KeyVaultSecret secretWithValue = secretClient.getSecret(
secretProperties.getName(),
secretProperties.getVersion()
);
if (secretWithValue.getValue().equals(apiKeyValue)) {
return secretWithValue.getName();
}
}
}
return null;
}

Key Vault是为您自己的服务秘密而设计的。如果您正在存储客户的秘密(特别是对于高吞吐量密钥存储场景),请考虑将密钥放入加密的数据库或存储帐户中,并仅将主密钥存储在Azure密钥库中。

节流

如果您看到错误代码429,您应该遵循最佳实践你应该实现:

  • 减少每个请求的操作数。
  • 减少请求的频率。
  • 避免立即重试。
    • 所有请求都将超过您的使用限制。

回退代码示例

SecretClientOptions = new SecretClientOptions(){重试={延迟= TimeSpan.FromSeconds (2),MaxDelay = TimeSpan.FromSeconds(16),MaxRetries = 5,Mode = RetryMode。指数}};var client = new SecretClient(new Uri("https://keyVaultName.vault.azure.net"), new DefaultAzureCredential(),options);//获取秘密

https://learn.microsoft.com/en-us/azure/key-vault/general/overview-throttling

最新更新