c# - 安全存储 Azure Key Vault clientSecret

标签 c# azure-keyvault

我正在开发一个 C# 桌面应用程序(3D 建模软件的插件),我需要从 GraphQL 端点访问信息。为了访问端点,我需要提供一个 key 。所以我所做的就是将该 key 存储在 Azure Key Vault 上。
这是我用来从 Azure Key Vault 获取 key 的代码:

var clientProd = new SecretClient(new Uri("my-azure-keyvault-url"),
  new ClientSecretCredential(
    "tenantId",
    "clientId",
    "clientSecret"));

Response<KeyVaultSecret> secret = await clientProd.GetSecretAsync("cbe-graphQL-prod");

但现在我发现自己陷入了这种恶性循环,我不确定 clientSecret 应该来自哪里,因此它不会被推送到版本控制。
我打算将此应用程序部署到公司中的多个用户,因此我不想在每个人的计算机上创建环境变量(即使使用组策略也是如此)。

最好的方法是什么?

谢谢!

最佳答案

如果您在 Azure 中托管应用程序,则可以使用系统分配的托管标识来访问 key 保管库,而无需任何凭据(客户端 ID、客户端 key )

如果您的应用程序托管在本地,您可以限制应用程序注册(服务主体)对存储 secret 的 key 保管库的访问。

然后您可以将客户端 key 存储为环境变量或对客户端 key 进行硬编码

关于c# - 安全存储 Azure Key Vault clientSecret,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70388409/

相关文章:

c# - 在 mvc3 c# 项目中检索 AD 信息

c# - 返回空 T

c# - Microsoft.Azure.KeyVault.Models.KeyVaultErrorException : 'Operation returned an invalid status code ' BadRequest''

Azure Key Vault - 如何更新 secret

java - 如何通过 Java SDK 在 Azure Key Vault 中创建 key ?

Azure Key Vault 错误地创建复合标识

c# - 在 C# 中使用 COM dll

c# - 使用通用 IHostBuilder 时访问 IServiceProvider

c# - 在 wpf 中绑定(bind)值为空或为空时如何使用触发器/(等)标记内容集

azure - 运行 Terraform Apply 时 Azure Key Vault 访问策略出现问题