我们应该如何在 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 的“获取”权限。
我计划在我的 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 的“获取”权限。