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

How Should we use Azure key vault in Function App?

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

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

一个。在配置中使用引用变量

@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.");

        }

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

Key Vault 引用的格式为 @Microsoft.KeyVault({referenceString})仅适用于 Azure 门户。虽然您提供的代码示例 在门户和本地都运行良好

对于密钥保管库参考,您需要为您的函数应用创建一个system-assigned托管标识,并为密钥保管库启用此函数服务原则的“获取”权限.虽然示例使用登录用户作为凭据,但您只需要为用户启用 Azure keyvault 的“获取”权限。