Azure - 是否可以使用企业应用程序设置环境变量?

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

在我们的项目中,我们不使用应用程序注册,而是使用 Azure 中的企业应用程序。

我正在尝试在本地开发(.NET Core)中从 Azure Key Vault 访问一个秘密,这需要

DefaultAzureCredential
而这又使用环境变量,即
AZURE_CLIENT_ID, AZURE_CLIENT_SECRET/AZURE_CLIENT_CERTIFICATE_PATH
AZURE_TENANT_ID
AZURE_CLIENT_SECRET
仅出现在应用程序注册中。

是否可以使用企业应用程序设置环境变量?

如果没有,有没有办法使用 .NET Core 访问 Azure Key Vault 中的秘密?

azure asp.net-core azure-keyvault azure-app-registration
1个回答
0
投票

无论如何,当我们想要访问 Azure KeyVault 秘密时,我们必须授予访问策略。我们可以为 Azure AD 应用程序、特定用户/组和一般的 ManagedIdentity 实例授予访问策略。

当我们想使用

DefauleAzureCredential
时,我们可以选择为Azure AD应用程序设置
client id/client secret/tenant id
,因为你没有客户端密码,也许这对你不可用。然后我们也可以使用用户凭证,我觉得我们在本地测试代码的时候用这个很好,只需要我们做的是
adding access policy for a user
,然后
sign in Visual Studio with that user
,然后我们就可以简单地获得访问权限通过以下代码进行保管库秘密:

public async Task<string> IndexAsync()
        {
            const string secretName = "clientsecret";
            var kvUri = "https://keyvaultname.vault.azure.net/";
            var a = new DefaultAzureCredential();
            var client = new SecretClient(new Uri(kvUri), a);
            var secret = await client.GetSecretAsync(secretName);
            string secretVaule = secret.Value.Value;
            return secretVaule ;
        }

我们也可以使用 ManagedIdentity,但这需要应用托管在 Azure 中。就跟着这个官方文档。它还包含文档中的示例。

builder.Configuration.AddAzureKeyVault(
       new Uri("https://vaultName.vault.azure.net/"),
       new DefaultAzureCredential(
           new DefaultAzureCredentialOptions { ManagedIdentityClientId = "userManagedIdentityClientId" }//required when using user ManagedIdentity
       ));
© www.soinside.com 2019 - 2024. All rights reserved.