如何在 .NET Core 中使用 Azure Key Vaul

这篇具有很好参考价值的文章主要介绍了如何在 .NET Core 中使用 Azure Key Vaul。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Azure Key Vault是一个安全可靠的存储库,用于存储在.NET Core应用程序中使用的令牌、密钥、密码、证书和其他敏感数据。接下来我们讲讲如何在C#中使用它。

在构建.NET Core应用程序时,我们经常使用各种“秘密”,如客户端ID、访问令牌、密码、证书、加密密钥和API密钥。自然地,我们需要一种安全的方式来存储、管理和控制对这些敏感数据的访问。Azure Key Vault为此提供了一个方便的基于云的解决方案。我们将探讨如何在C#中使用Azure Key Vault。如果要使用我接下来提供的代码示例,你的系统需要安装Visual Studio 2022。

在Visual Studio中创建一个控制台应用程序项目

首先,让我们在Visual Studio中创建一个.NET Core控制台应用程序项目。假设您的系统已安装Visual Studio 2022,请按照我下面的步骤创建一个新的.NET Core控制台应用程序项目。

  • 启动Visual Studio IDE。
  • 点击“创建新项目”。
  • 在“创建新项目”窗口中,从模板列表中选择“控制台应用程序 (.NET Core)”。
  • 点击“下一步”。
  • 在“配置新项目”窗口中,指定新项目的名称和位置。
  • 点击“下一步”。
  • 在接下来显示的“附加信息”窗口中,选择“.NET 7.0 (标准支持期)”作为您想要使用的框架版本。
  • 点击“创建”。

接下来我们将使用这个.NET 7控制台应用程序项目来处理Azure Key Vault。

什么是Azure Key Vault?

Azure Key Vault是一种基于云的安全存储解决方案,用于保护应用程序的秘密或与应用程序相关的其他敏感数据。这些秘密可能是令牌、密钥、ID、密码、证书等。Azure Key Vault提供了一个安全、可靠的集中存储秘密的地方,并具有强大的访问控制,消除了开发人员直接在应用程序中管理敏感数据的需求。接下来,我们来看看怎么创建一个密钥保管库,创建一些秘密,然后通过编程方式读取和删除这些秘密


在Azure中创建一个Key Vault,请按照以下步骤进行操作。

  1. 从Azure门户菜单或主页上,选择“创建资源”。
  2. 从显示的资源列表中选择“密钥保管库”。
  3. 点击“创建”。
  4. 在“创建密钥保管库”屏幕上,指定订阅、资源组名称、区域和定价层,将其他选项保留为默认值。
  5. 点击“查看 + 创建”。
  6. 检查输入的详细信息,然后点击“创建”。

接下来,您应该在前面创建的密钥保管库实例中添加一个秘密。请按照以下步骤进行操作。

  1. 从密钥保管库配置页面中选择“秘密”。
  2. 点击“生成/导入”以向密钥保管库添加一个秘密。
  3. 从“上传选项”下拉菜单中选择“手动”(默认选项)。
  4. 指定秘密的名称和值。
  5. 可选择指定内容类型、激活日期和过期日期。
  6. 点击“创建”。

为了提供对我们创建的秘密的访问权限,请按照以下步骤进行操作。

  1. 从密钥保管库屏幕中选择“访问控制 (IAM)”。
  2. 点击“添加角色分配”。
  3. 从显示的角色列表中选择要分配的角色。
  4. 将访问权限分配给“托管标识”或“用户、组或服务主体”。
  5. 选择要分配角色的成员。
  6. 可选择指定角色的描述。
  7. 点击“下一步”。
  8. 点击“查看 + 分配”。

从Azure Key Vault中读取数据

然后,我们创建DefaultAzureCredential类的实例,并将其作为参数传递给SecretClient类。这将创建一个我们可以用来连接和使用Azure Key Vault的秘密客户端。在创建SecretClient的实例时,还应该指定KeyVault URI,如下面给出的代码片段所示。

var credentials = new DefaultAzureCredential();
azureKeyVaultSecretClient = new SecretClient(new
Uri(KeyVaultUri), credentials);

这里是完整的代码清单可以参考一下。

 class Program
{
        const string KeyVaultName = "AzureKeyValueExample";
        const string KeyVaultUri = $ https://{KeyVaultName}.vault.azure.net";
        static SecretClient ? azureKeyVaultSecretClient;
        static void Main(string[] args)
        {
            var credentials = new DefaultAzureCredential();
            azureKeyVaultSecretClient = new SecretClient(new
            Uri(KeyVaultUri), credentials);
            Console.WriteLine("Displaying all secrets with their values:");
            var azureKeyVaultSecrets =
            azureKeyVaultSecretClient.GetPropertiesOfSecrets();
            foreach(var secret in azureKeyVaultSecrets)
            {
                var secretValue =
                azureKeyVaultSecretClient.GetSecret(secret.Name);
                Console.WriteLine($ "{secret.Name} |
                {secretValue.Value.Value} |
                {secretValue.Value.Properties.ContentType}"
);
            }
            Console.Read();
        }
    }

如何在 .NET Core 中使用 Azure Key Vaul,云数据库,.netcore,azure,flask

如图所示。当你在控制台窗口中执行上述程序时,它将显示您的秘密及其值。

Azure Key Vault创建一个新密匙

可以使用以下代码片段在密钥保管库实例中创建一个新的秘密并为其分配一个值。

string secretName = "NewSecret";
string secretValue = "NewSecretValue";
await azureKeyVaultSecretClient.SetSecretAsync(secretName, secretValue);
var secret = azureKeyVaultSecretClient.GetSecret(secretName);
Console.WriteLine($ "{secretName} created with value {secretValue}");

然后可以在Azure门户中查看到新创建的秘密,如下图所示

如何在 .NET Core 中使用 Azure Key Vaul,云数据库,.netcore,azure,flask

新密钥显示在Azure门户的密钥库屏幕上。

从Azure Key Vault中删除一个秘密

使用SecretClient类的StartDeleteSecret方法可以从Azure Key Vault中删除一个秘密。只需要将要删除的秘密的名称作为参数传递给该方法,如下面的代码片段所示。

string secretNameForDelete = "NewSecret";
var deleteOperation = azureKeyVaultSecretClient.StartDeleteSecret(secretNameForDelete);
Console.WriteLine($"Deleting secret {secretNameForDelete} from Key Vault");
while (!deleteOperation.HasCompleted)
{
     Thread.Sleep(500);
     deleteOperation.UpdateStatus();
}
Console.WriteLine($"Secret {secretNameForDelete} deleted from Key Vault");
Console.Read();

执行完以后你就可以发现该密匙已经被删除了。

结论

当您执行程序时,可能会遇到Azure. Identity. CredentialUnavailableException 异常。为了解决这个问题,在Visual Studio IDE中,点击工具 -> 选项 -> Azure服务身份验证。确保您使用Azure账户凭据登录。 通过Azure Key Vault,您可以集中管理密钥和秘密,提高应用程序的安全性和行业合规性,并简化敏感数据的管理和保护。

作者: Joydip Kanjilal

更多技术干货请关注公号“云原生数据库

squids.cn,目前可体验全网zui低价RDS,免费的迁移工具DBMotion、SQL开发工具等文章来源地址https://www.toymoban.com/news/detail-563475.html

到了这里,关于如何在 .NET Core 中使用 Azure Key Vaul的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【C# .NET 】使用 Entity Framework Core 操作sqlite数据库

    添加包 EF Core design package   NuGet Gallery | Home 使用用于 EF Core 迁移和现有数据库中的反向工程(基架)的工具需要安装相应的工具包: 可在 Visual Studio 包管理器控制台中使用的 PowerShell 工具的 Microsoft.EntityFrameworkCore.Tools 跨平台命令行工具的 dotnet-ef 和 Microsoft.EntityFramewor

    2024年02月14日
    浏览(13)
  • 在Linux平台下使用.NET Core访问Access数据库读取mdb文件数据

    今天有群友在群里问 C# 能不能在 Linux 下访问 Access数据库 ? 我觉得这很有趣,因此研究折腾了一下,也因为很久没有写博文了,所以特意上来写博文分享经验。 操作系统: Ubuntu 22.04.3 LTS (Jammy) 开发工具: Visual Studio 2022 (17.8.0) 运行时版本: .NET Runtime 8.0 依赖库: unixodbc 、

    2024年02月05日
    浏览(13)
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库

    .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库

    记录日志为文档 记录日志到数据库

    2024年02月20日
    浏览(44)
  • 使用asp.net core web api创建web后台,并连接和使用Sql Server数据库

    使用asp.net core web api创建web后台,并连接和使用Sql Server数据库

    前言:因为要写一个安卓端app,实现从服务器中获取电影数据,所以需要搭建服务端代码,之前学过C#,所以想用C#实现服务器段代码用于测试,本文使用C#语言,使用asp.net core web api组件搭建服务器端,并访问sql server 数据库。 一、安装Visual studio 2022 社区版,并安装ASP.NET和

    2024年02月14日
    浏览(15)
  • NET Core添加 Sqlite 数据库

    NET Core添加 Sqlite 数据库

    .net framework 命令行项目使用 sqlite,DbContext C# .NET EF框架 webapi 安装使用sqlite visual studio 2022,ADO.NET 实体数据模型添加 sqlite数据库对象 Visual Studio 2022 .NET Core 6.0 Microsoft.EntityFrameworkCore.Sqlite Microsoft.EntityFrameworkCore.Sqlite.Core Newtonsoft.Json ORMContext Program.cs 测试结果 Sqlite3是个特别好的本

    2024年02月11日
    浏览(13)
  • .net core .net6 读取数据库 读取配置文件 保姆级教程

    .net core .net6 读取数据库 读取配置文件 保姆级教程

    本文环境 Microsoft Visual Studio 2022 .Net6 SQLServer2019 在解决方案管理器右键添加相关的包,如下两个包 Microsoft.Data.SqlClient SQLServer SQLServer数据库 Microsoft.Extensions.Configuration.Json json配置文件 添加配置文件 appsettings.json,选始终复制 添加json配置文件内容如下 DefaultConnection 根据自己的

    2024年02月08日
    浏览(12)
  • .Net Core Entity Framework Core 的基础封装 -数据库操作拦截器

    .Net Core Entity Framework Core 的基础封装 -数据库操作拦截器

    自己制作的一个基于Entity Framework Core 的数据库操作拦截器,可以打印数据库执行sql,方便开发调试,代码如下: 运行结果如下:  

    2024年02月22日
    浏览(26)
  • ASP.NET Core MVC 从入门到精通之数据库

    ASP.NET Core MVC 从入门到精通之数据库

    随着技术的发展,ASP.NET Core MVC也推出了好长时间,经过不断的版本更新迭代,已经越来越完善,本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容,适用于初学者,在校毕业生,或其他想从事ASP.NET Core MVC 系统开发的人员。 经过前几篇文章的讲解,初步

    2023年04月27日
    浏览(15)
  • .NET6 + EF Core + MySQL 创建实体和数据库、EFCore 数据迁移

    .NET6 + EF Core + MySQL 创建实体和数据库、EFCore 数据迁移

    接上期文章《.NET6项目连接数据库方式方法》,有人问了我几个问题,现在就这几个问题,拓展延申一下创建实体类、数据库。把ORM框架和数据迁移都写进去。 我的项目是在Linux上创建的,使用的是vscode开发工具远程开发。为了方便大家阅读和操作,我将项目down到我的本地电

    2024年02月05日
    浏览(13)
  • .net 6 EF Core MySql数据库表生成实体类命令

    安装下面这几个包 Microsoft.EntityFrameworkCore Microsoft.EntityFrameworkCore.Tools Microsoft.EntityFrameworkCore.Design Pomelo.EntityFrameworkCore.MySql Scaffold-DbContext “server=127.0.0.1;port=3306;database=DB;uid=root;pwd=pwdpwd;sslmode=none;” Pomelo.EntityFrameworkCore.MySql -OutputDir Models -Force -NoOnConfiguring -NoPluralize -Context “D

    2024年02月05日
    浏览(10)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包