博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NET - .NET Core 之 Azure Key Vault 密钥保管库的使用
阅读量:4050 次
发布时间:2019-05-25

本文共 3509 字,大约阅读时间需要 11 分钟。

关于 Azure Key Vault

Azure Key Vault 有助于解决以下问题:

  • 机密管理 - Azure Key Vault 可以用来安全地存储令牌、密码、证书、API 密钥和其他机密,并对其访问进行严格控制
  • 密钥管理 - Azure Key Vault 也可用作密钥管理解决方案。 可以通过 Azure Key Vault 轻松创建和控制用于加密数据的加密密钥。
  • 证书管理 - Azure Key Vault 也是一项服务,可用来轻松预配、管理和部署公用和专用传输层安全性/安全套接字层 (TLS/SSL) 证书,以用于 Azure 以及内部连接资源。

 

创建保管库

  1. 在 Azure 门户菜单或“主页”中,选择“创建资源” 。
  2. 在“搜索”框中输入“Key Vault”。
  3. 从结果列表中选择“Key Vault”。
  4. 在“Key Vault”部分,选择“创建”。
  5. 在“创建密钥保管库”部分,提供以下信息:
    • Name:必须提供唯一的名称。 对于本快速入门,我们使用 Contoso-vault2
    • 订阅:选择订阅。
    • 在“资源组”下选择“新建”,然后输入资源组名称。
    • 在“位置”下拉菜单中选择一个位置。
    • 让其他选项保留默认值。
  6. 提供上述信息后,选择“创建”。

请记下下面列出的两个属性:

  • 保管库名称:在本示例中,此项为 Contoso-Vault2。 将在其他步骤中使用此名称。
  • 保管库 URI:在本示例中,此项为  。 通过其 REST API 使用保管库的应用程序必须使用此 URI。

目前,只有你的 Azure 帐户有权对这个新保管库执行操作。

Key Vault 创建完成后的输出

 

对 Azure Key Vault 进行身份验证

借助 Azure 密钥保管库,可以在集中的安全云存储库中存储机密并控制其分发,因而无需在应用程序中存储凭据。 应用程序只需要在运行时使用密钥保管库进行身份验证即可访问这些机密。

应用标识和安全主体

使用密钥保管库进行的身份验证可与  结合使用,后者负责对任何给定安全主体的标识进行身份验证。

安全主体是一个对象,表示请求访问 Azure 资源的用户、组、服务或应用程序。 Azure 为每个安全主体分配唯一的对象 ID。

 

注册应用程序

注册应用程序会在应用与 Microsoft 标识平台之间建立信任关系。 信任是单向的:应用信任 Microsoft 标识平台,但标识平台并不信任应用。

按照以下步骤创建应用注册:

  1. 登录 。

  2. 如果有权访问多个租户,请使用顶部菜单中的“目录 + 订阅”筛选器 ,选择要在其中注册应用程序的租户。

  3. 搜索并选择“Azure Active Directory” 。

  4. 在“管理”下,选择“应用注册”,然后选择“新建注册” 。

  5. 输入应用程序的名称。 应用的用户可能会看到此名称,你稍后可对其进行更改。

  6. 指定可使用该应用程序的人员,这有时称为“登录访问者”。

    表 1
    支持的帐户类型 说明
    仅此组织目录中的帐户 如果要生成仅供租户中的用户(或来宾)使用的应用程序,请选择此选项。
    通常称为业务线 (LOB) 应用程序,这是 Microsoft 标识平台中的单租户应用程序。
    任何组织目录中的帐户 如果希望任何 Azure AD 租户中的用户都能够使用你的应用程序,请选择此选项。 例如,如果要构建打算向多个组织提供的软件即服务 (SaaS) 应用程序,则适合使用此选项。
    这在 Microsoft 标识平台中被称为多租户应用程序。
  7. 请勿对“重定向 URI (可选)”输入任何内容,你将在下一部分中进行配置。

  8. 选择“注册”,完成初始应用注册。

    Web 浏览器中 Azure 门户的屏幕截图,其中显示了“注册应用程序”窗格。

注册完成后,Azure 门户会显示应用注册的“概述”窗格,其中包括其应用程序(客户端)ID 。 此值也被称为客户端 ID,它可唯一地标识 Microsoft 标识平台中的应用程序。

应用程序的代码(或者更通常是应用程序中使用的身份验证库)也将使用客户端 ID 来验证从标识平台接收的安全令牌。

Web 浏览器中 Azure 门户的屏幕截图,其中显示了“注册应用程序”窗格。

添加凭据

凭据供访问 Web API 的机密客户端应用程序使用。 Web 应用、其他 Web API 或服务类型和守护程序类型的应用程序都是机密客户端。 通过凭据,应用程序可以自己的身份进行身份验证,无需用户在运行时进行任何交互。

可将证书和客户端密码(字符串)作为凭据添加到机密客户端应用注册。

Web 浏览器中 Azure 门户的屏幕截图,其中显示了“注册应用程序”窗格。

添加客户端密码

客户端密码(也称为应用程序密码)是应用可用于代替证书来标识自身的字符串。 这是两种凭证类型中更容易使用的一种,而且通常在开发过程中使用,但它不如证书安全。 应在生产环境中运行的应用程序中使用证书。

  1. 在 Azure 门户中的“应用注册”中选择你的应用程序。
  2. 选择“证书和密码” > “新建客户端密码” 。
  3. 添加客户端机密的说明。
  4. 选择持续时间。
  5. 选择 添加 。
  6. “记录密码的值”,以便在客户端应用程序中使用 - 离开此页面后,它将不再显示。

 

授权安全主体访问 Key Vault

  1. 若要在本地运行 Azure CLI 命令,请安装 。

  2. 仅限本地 CLI:使用 az login 登录到 Azure:

    Bash复制

    az cloud set -n AzureChinaCloudaz login

    3 .应用程序和其他服务主体:请使用  命令来检索服务主体。 请检查命令的输出,以确定要为其分配访问策略的安全主体的对象 ID。

        Azure CLI复制

az ad sp list --show-mine

          

 

分配访问策略

使用  命令来分配所需的权限:

az keyvault set-policy --name myKeyVault --object-id 
--secret-permissions list get --key-permissions list get --certificate-permissions list get

      将 <object-id> 替换为服务主体的对象 ID。即Azure AD 所创建应用的object-id 。az ad sp list --show-mine中查找。

 

代码配置

program.cs

public static IWebHost BuildWebHost(string[] args) =>    WebHost.CreateDefaultBuilder(args)    .ConfigureAppConfiguration(SetkeyVault)    .UseStartup
() .Build();public static void SetkeyVault(WebHostBuilderContext ctx, IConfigurationBuilder builder){ var builtConfig = builder.Build(); builder.AddAzureKeyVault( builtConfig["KeyVault"], builtConfig["AzureADApplicationId"], builtConfig["AzureADPassword"]); }}

Startup.cs

public class Startup{​​​​​    public Startup(IConfiguration configuration)    {​​​​​        this.Configuration = configuration;    }​​​​​     public IConfiguration Configuration {​​​​​ get; }​​​​​     public void ConfigureServices(IServiceCollection services)    {​​​​​        this.Configuration.Bind(new ApplicationConfiguration());

ApplicationConfiguration.cs

public class ApplicationConfiguration{​​​​​    public static string SqlConnectionString {​​​​​ get; set; }​​​​​}

 

appsettings.json 文件中配置用于访问Azure Key Vault所创建的AD应用的ID和Secret。

 

转载地址:http://xmnci.baihongyu.com/

你可能感兴趣的文章
配置ssh公钥
查看>>
git clone拉代码的时候出现permission denied 没有权限的问题解决
查看>>
前端-vue-文件上传(图片、word,ppt,pdf,excel,txt等文件流)
查看>>
word,PDF,excel、ppt等文件上传,视频上传查看等
查看>>
java 不用递归写tree
查看>>
springboot2 集成Hibernate JPA 用 声明式事物
查看>>
fhs-framework jetcache 缓存维护之自动清除缓存
查看>>
SpringBoot 动态编译 JAVA class 解决 jar in jar 的依赖问题
查看>>
fhs_framework springcloud使用统一的控制器来接收rpc调用请求教程,无需每个rpc接口都写控制器
查看>>
fhs-framework springboot mybatis 解决表关联查询问题的关键方案-翻译服务
查看>>
Springboot + easyui + mybatis 高级搜索功能实现
查看>>
k8s 踩坑笔记
查看>>
SpringCloud Seata Nacos 整合教程和坑
查看>>
nacos 本地覆盖远程 本地优先
查看>>
java 查询内存泄漏
查看>>
httpclient4.5 绕过ssl证书校验 -看别人文章解决不了的,看下我这个
查看>>
基于webpack的vue语法糖实现思路
查看>>
jenkins流水线脚本 从sonar代码扫描,到maven构建,到docker打包,到k8s发布
查看>>
微服务项目占用内存过多机器扛不住怎么办?服务allinone设计
查看>>
项目快速开发经验
查看>>