我正在开发一个 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/