c# - 如何使用 Keyvault 将 asp.net 5 API 连接到存储在 Azure 中的数据库
问题描述
我目前正在尝试开发一个可以访问数据库的 API(在 Azure 上运行),但出于明显的安全原因,我不想将连接字符串以明文形式放入我的 appsetting.json 文件中,而是使用 Keyvault。
因此,我已经创建了资源组、数据库、API 管理服务和 Keyvault,我已经在其中创建了包含我的 API 请求者的连接字符串的密钥。在 Keyvault 的访问策略中,我已经为我的 API 添加了一个条目,并授予它获取和列出机密的权限。这是一个屏幕截图。
Keyvault 权限(对不起链接,我还不允许嵌入图像)
在我的应用程序中,我拥有所需的所有模型和控制器。
现在我的问题是,如何从我的 API 中使用这个秘密连接到我的数据库?
我的 Program.CreateHostBuilder 类看起来像这样
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration(async (context, builder) =>
{
var client = new SecretClient(
new Uri("https://example.vault.azure.net/"),
new DefaultAzureCredential());
KeyVaultSecret secret = await client.GetSecretAsync("ConnectionString");
string authenticationKey = secret.Value;
}
).ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
我必须从那里做什么才能让我的应用程序连接到数据库?
感谢您的阅读!:)
解决方案
For .net Core and already having Azure Key Vault in place. Let's assume your connection string is in your appsettings.json:
{
"ConnectionStrings": {
"MyDatabase": "server=127.0.0.1;port=5678;database=mydb;user=name;password=Password "
}
}
And you do your setup in Startup.cs:
string connectionString = configuration.GetConnectionString("MyDatabase");
In Azure Key Vault, create a secret:
- Name: ConnectionStrings--MyDatabase
- Value: server=127.0.0.1;port=5678;database=mydb;user=name;password=Password
The IConfiguration.GetConnectionString("MyDatabase")
now takes the value from the Key Vault.
Note: In your key vault, the name of your secret should match with the name of your connection string.
After getting connection string connect to database and perform the database operation
For more details refer this Thread
推荐阅读
- aws-lambda - 当我选择我的 api 网关方式的 CORS 时出现错误
- angular - 获取用于 Azure DevOps API 使用的 OAuth 令牌
- angular - mat 小吃店单元测试消息为空
- netlogo - Netlogo,沿着链接移动的乌龟
- c# - 当csv文件中的特定条件满足时,如何将一行拆分为新行?
- reactjs - 有什么方法可以将 Saga 与新的 React 钩子一起使用?
- jquery - 如何根据来自 JSON 数据源的搜索为文本框提供建议
- r - 在鼠标悬停弹出窗口中显示 r Shiny actionButton Title
- python - 查找从一个列表中的点到另一个列表中的点的最小距离之和?
- java - JUNG 库可以根据预定义的属性制作边吗?