我团队中的每个开发人员都有自己的个人Azure Key Vault 链接到他们的本地机器。我们有生产站点查看的生产 Azure 密钥保管库。
在代码中,它从保险库中寻找特定的秘密。开发人员不会在他们的个人密钥保管库中拥有秘密,但生产密钥保管库将拥有秘密。
因此,当开发人员进行调试时,它会捕获一个异常,说明该秘密不存在。
有没有办法有条件地检查秘密是否存在,或者我是否只需要让它捕获异常?
没有方法可以检查密钥保管库中是否存在机密。因此,可以利用一些创造力来做到这一点(为了简洁,跳过了参数检查):
public bool CheckIfSecretExists(string accessToken, string secretUri)
{
var kvClient= new KeyVaultClient(accessToken);
try
{
kvClient.GetSecretAsync(secretUri ).Result.Value;
return true;
}
catch (AggregateException ex)
{
if (ex.InnerException is KeyVaultErrorException exception && exception.Body.Error.Code == "SecretNotFound")
return false;
throw;
}
}
Run Code Online (Sandbox Code Playgroud)
编辑: 找到了一种无需依赖异常即可检查秘密是否存在的方法:
public async Task<bool> DoesSecretExist(string accessToken, string keyVaultBaseUrl, string secretName)
{
var kvClient = new KeyVaultClient(accessToken);
try
{
IPage<SecretItem> secretVersions = await kvClient.GetSecretVersionsAsync(keyVaultBaseUrl, secretName)
.ConfigureAwait(false);
if (!secretVersions.Any())
return false;
return true;
}
catch (Exception )
{
throw;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3712 次 |
| 最近记录: |