在本地开发中使用 azure KeyVault

问题描述 投票:0回答:2

我看过其他关于此的帖子,但似乎没有一个答案有效。 我有一个正在本地开发的 azure 函数应用程序。它使用应用程序设置从密钥库中获取用户名/密码。当部署到 Azure 时,它可以完美运行。但是在本地开发,并不是从vault中抓取数据

所以在代码中,我有这个:

var password = System.Environment.GetEnvironmentVariable("PASSWORD", EnvironmentVariableTarget.Process);

我已将我的用户添加到保险库访问策略中,并在那里也添加了应用程序身份。这就是它在天蓝色中工作的原因。 我看到这篇文章提到设置环境变量: https://github.com/Azure/azure-functions-host/issues/3907 我试过了,但仍然没有骰子。每当我调用上面的代码时,我只会取回设置键,如下所示:

@Microsoft.KeyVault(SecretUri=https://mykeyvault.vault.azure.net/secrets/PASSWORD/e97ba4bf3e2e4919b1899384ea349999)
azure azure-functions azure-keyvault
2个回答
5
投票

当然不行,keyvault参考只是function app或web app的特性,不适用于本地开发

在本地,您的选择是通过 SDK 手动获取秘密。

var client = new SecretClient(vaultUri: new Uri(keyVaultUrl), credential: new DefaultAzureCredential());    
secret = client.GetSecret("secret-name");

上面的代码使用了

DefaultAzureCredential
Azure.Identity
进行认证,它会依次尝试几种凭证类型进行认证,其中一种是
VisualStudioCredential
,意味着它将使用登录的用户帐户VS to auth,也可以直接在代码中使用
VisualStudioCredential
代替
DefaultAzureCredential

此外,当您将代码部署到 Azure 时,该代码也将起作用,因为

DefaultAzureCredential
将使用
ManagedIdentityCredential
进行身份验证,即使用 MSI 获取秘密(本质上,keyvault 引用功能也使用 MSI 获取秘密),因此您也可以直接使用它而不是这个功能,它们都取决于你自己。


0
投票

Azure Functions 本地开发允许通过

local.settings.json
使用 KeyVault 引用。所有应用程序配置变量都可以在
'Values'
下设置。功能工具将处理对
@Microsoft.KeyVault(<password-secret-path>)
的引用,应用程序将在运行时获取值。

AFAIK 这对 Azure 应用服务的作用不同

参见:

© www.soinside.com 2019 - 2024. All rights reserved.