c# - 是否应该隐藏 Azure Key Vault URL?

标签 c# azure security azure-keyvault

Microsoft Docs他们将 Azure Key Vault 的部分名称存储为环境变量,然后按如下方式使用它:

string keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME");
var kvUri = "https://" + keyVaultName + ".vault.azure.net";

var client = new SecretClient(new Uri(kvUri), new DefaultAzureCredential());

我明白它是如何工作的,但我不明白他们为什么这样做?

  1. 我不明白为什么需要隐藏保管库的 URL,因为除非在访问策略中显式配置,否则您无法输入它。访问策略。您只需得到 403 Forbidden(参见屏幕截图)。

  2. 即使这是一个 secret ,为什么不使用 appconfig.json 文件呢?这不是您通常使用的 - 以及为什么他们将其拆分为发布和开发 (appsettings.Development.json) 版本?

Attempt to access key vault without permission

最佳答案

I don't get why the URL for the vault needs to be hidden, since you cannot enter it unless it is explicitly configured in Access Policies.

基本上,keyvault uri 需要隐藏,因为它们可能会吸引暴力攻击者和黑客不必要的注意力,并且他们可能会尝试使用已公开共享的 uri 进入您的 keyvault。如果对 keyvault 的访问配置不正确,它可能容易被误用,并且由于 uri 中提到的 keyvault 名称应该是私有(private)的,因此它被隐藏了。。

Even if it were a secret, why not use the appconfig.json file? Isn't that what you usually use - and why they split it in a release and Development (appsettings.Development.json) version.

您通常可以通过调用该 key 的访问 key 并提供在 Key Vault 中使用该 key 的正确权限,来使用 appsettings.json 文件中存储在 keyvault 中的 key 。 运行应用程序时,appsettings.json 文件分为两部分,其中 secret 在开发中加载,值在生产中加载,因此有两个版本的 appsettings.json 文件,一个用于生产,一个用于发布版本。

欲了解更多信息,请参阅以下链接:

SO 线程 :- Access azure key vault secret with application client secret

微软文档:- Azure Key Vault configuration provider in ASP.NET Core

关于c# - 是否应该隐藏 Azure Key Vault URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71589288/

相关文章:

c# - 使用 HtmlAgilityPack 包裹元素?

azure - 当源列为 NULL 或 0 时,用 0 填充 hashbytes 列

c# - Azure 应用程序自定义身份验证签名 key

c# - HttpClient.GetStreamAsync 卡住

Windows 窗体用户控件中的 C# 按键监听器

git - Azure 上的 Bitbucket 持续部署不起作用

security - 网址重写 - 这会导致安全问题吗?

php - 将密码存储在数据库中并确保管理面板的安全

ios - iPhone 的临时文件目录有多安全?

c# - 解析中缀表达式,同时将分隔符保留为数组元素