我们应该如何在Function App中使用Azure Key Vault?

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

我计划在我的 Azure Function App 中使用 azure key Vault。

我可以看到我们可以通过以下两种方式在 Azure Function App 中使用密钥保管库:

a.在配置中使用引用变量

@Microsoft.KeyVault(SecretUri={copied identifier for the username secret})

b.使用.NET SDK

Azure.Security.KeyVault.Secrets
Azure.Identity

示例(使用.NET SDK):

static void Main(string[] args)
        {
            string secretName = "mySecret";

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

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

            Console.Write("Input the value of your secret > ");
            string secretValue = Console.ReadLine();

            Console.Write("Creating a secret in " + keyVaultName + " called '" + secretName + "' with the value '" + secretValue + "` ...");

            client.SetSecret(secretName, secretValue);

            Console.WriteLine(" done.");

            Console.WriteLine("Forgetting your secret.");
            secretValue = "";
            Console.WriteLine("Your secret is '" + secretValue + "'.");

            Console.WriteLine("Retrieving your secret from " + keyVaultName + ".");

            KeyVaultSecret secret = client.GetSecret(secretName);

            Console.WriteLine("Your secret is '" + secret.Value + "'.");

            Console.Write("Deleting your secret from " + keyVaultName + " ...");

            client.StartDeleteSecret(secretName);

            System.Threading.Thread.Sleep(5000);
            Console.WriteLine(" done.");

        }

但我的问题是,我应该如何决定应该使用哪一个?

azure-functions azure-keyvault
2个回答
2
投票

Key Vault 引用的形式为

@Microsoft.KeyVault({referenceString})
,它仅应用于 Azure 门户。虽然您提供的代码示例在门户和本地都运行良好

对于 Key Vault 参考,您需要为您的函数应用创建系统分配的托管标识,并为此函数的 keyvault 服务原则启用“获取”权限。虽然示例使用登录用户作为凭据,但您只需为用户启用 azure keyvault 的“获取”权限。


0
投票

从函数应用程序使用 KeyVault 的方式发生了很多变化。 这是一篇关于从函数应用程序中使用 KeyVault 的精彩且非常完整的文章, 更新了 .NET 8,包括如何设置基于角色的访问以及如何本地调试:

使用依赖注入和 Key Vault 作为配置提供程序创建 .NET 6/7/8 Azure Function App

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