【壹刊】Azure AD(三)Azure资源的托管标识

一,引言

  来个惯例,吹水!????????????????????

  前一周因为考试,还有个人的私事,一下子差点颓废了。想了想,写博客这种的东西还是得坚持,再忙,也要检查。要养成一种习惯,同时这也是自我约束的一种形式。虽然说不能浪费大量时间在刷朋友圈,看自媒体的新闻,看一些营销号的视频等等,不喜勿喷啊,这是我个人的一些观念,也没有带认识眼光啊!好了,废话不多说,在此先立个Flag,

  1,保证每周输出一篇文章。

  2,开始检查每周4次的5公里跑步。

好了,开始今天的分析????????????????????

------------------------------------我是分割线------------------------------------

  之前有个章节讲到Azure AD的一些基础概念,以及Azure AD究竟可以用来做什么?,还讲了讲如何在我们的项目中集成Azure AD 保护我们的API资源!讲了这些,其实远远不够,AD里里面还有好多概念性的知识,同时也是在其他模块中有使用到的,就比如什么叫“托管标识”,托管标识又分为“系统托管标识”和“用户托管标识”;什么叫“服务主体”,它又能干什么,和Azure又有什么关系?好的,那么今天就带着这些问题,我们来剖析,探个究竟!。

二,正文

1,“什么是托管标识”

  • 客户端ID:Azure AD 生成的唯一标识符,在其初始预配期间与应用程序和服务主体绑定。

  • 主体 ID - 托管标识的服务主体对象的对象 ID,用于授予对 Azure 资源的基于角色的访问权限。

  • Azure 实例元数据服务 (IMDS) - 一个 REST 终结点(url链接),可供通过 Azure 资源管理器创建的所有 IaaS VM 使用。 

2,托管标识分为两种类型:

  • 系统分配托管标识:直接在 Azure 服务实例上启用。 启用标识后,Azure 将在实例的订阅信任的 Azure AD 租户中创建实例的标识。 创建标识后,系统会将凭据预配到实例。 系统分配标识的生命周期直接绑定到启用它的 Azure 服务实例。 如果实例遭删除,Azure 会自动清理 Azure AD 中的凭据和标识。

  • 用户分配托管标识:是作为独立的 Azure 资源创建的。 在创建过程中,Azure 会在由所用订阅信任的 Azure AD 租户中创建一个标识。 在创建标识后,可以将标识分配到一个或多个 Azure 服务实例。 用户分配标识的生命周期与它所分配到的 Azure 服务实例的生命周期是分开管理的。

下图演示了托管服务标识如何与 Azure 虚拟机 (VM) 协同工作:

3,系统分配托管标识如何与 Azure VM 协同工作

  1. Azure 资源管理器收到请求,要求在 VM 上启用系统分配托管标识。(图1)

  2. Azure 资源管理器在 Azure AD 中创建与 VM 标识相对应的服务主体。 服务主体在此订阅信任的 Azure AD 租户中创建。

  3. Azure 资源管理器通过使用服务主体客户端 ID 和证书更新 Azure 实例元数据服务标识终结点来配置 VM 上的标识。

  4. VM 有了标识以后,请根据服务主体信息向 VM 授予对 Azure 资源的访问权限。 若要调用 Azure 资源管理器,请在 Azure AD 中使用基于角色的访问控制 (RBAC) 向 VM 服务主体分配相应的角色。 若要调用 Key Vault,请授予代码对 Key Vault 中特定机密或密钥的访问权限。

  5. 在 VM 上运行的代码可以从只能从 VM 中访问的 Azure 实例元数据服务终结点请求令牌:http://169.254.169.254/metadata/identity/oauth2/token

  • resource 参数指定了要向其发送令牌的服务。 若要向 Azure 资源管理器进行身份验证,请使用 resource=https://management.azure.com/

  • API 版本参数指定 IMDS 版本,请使用 api-version=2018-02-01 或更高版本。

  • 调用了 Azure AD,以便使用在步骤 3 中配置的客户端 ID 和证书请求访问令牌(在步骤 5 中指定)。 Azure AD 返回 JSON Web 令牌 (JWT) 访问令牌。

  • 代码在调用支持 Azure AD 身份验证的服务时发送访问令牌。

  • 4,用户分配托管标识如何与 Azure VM 协同工作

    1. Azure 资源管理器收到请求,要求创建用户分配托管标识。

    2. Azure 资源管理器在 Azure AD 中创建与用户分配托管标识相对应的服务主体。 服务主体在此订阅信任的 Azure AD 租户中创建。

    3. Azure 资源管理器收到在 VM 上配置用户分配的托管标识的请求,并使用用户分配的托管标识服务主体客户端 ID 和证书更新 Azure 实例元数据服务标识终结点。

    4. 创建用户分配托管标识以后,请根据服务主体信息向标识授予对 Azure 资源的访问权限。 若要调用 Azure 资源管理器,请在 Azure AD 中使用 RBAC 向用户分配标识的服务主体分配相应的角色。 若要调用 Key Vault,请授予代码对 Key Vault 中特定机密或密钥的访问权限。

       备注

      也可在步骤 3 之前执行此步骤。

    5. 在 VM 上运行的代码可以从只能从 VM 中访问的 Azure 实例元数据服务标识终结点请求令牌:http://169.254.169.254/metadata/identity/oauth2/token

    • resource 参数指定了要向其发送令牌的服务。 若要向 Azure 资源管理器进行身份验证,请使用 resource=https://management.azure.com/

    • 客户端 ID 参数指定为其请求令牌的标识。 当单台 VM 上有多个用户分配的标识时,此值是消除歧义所必需的。

    • API 版本参数指定 Azure 实例元数据服务版本。 请使用 api-version=2018-02-01 或指定更高的版本。

  • 调用了 Azure AD,以便使用在步骤 3 中配置的客户端 ID 和证书请求访问令牌(在步骤 5 中指定)。 Azure AD 返回 JSON Web 令牌 (JWT) 访问令牌。

  • 代码在调用支持 Azure AD 身份验证的服务时发送访问令牌。

  •  稍后会提示

     注意,此时在AD的应用注册页面是找不到刚刚注册的应用的,只有在给Azure 资源分配托管标识访问Azure资源管理器,我这里是提前创建了是一个vm资源,也就是使用vm系统分配的托管标识访问Azure Key Vault。简而言之,Azure Key Vault作为密钥保管库,Key Vault 随后可让客户端应用程序使用机密访问未受 Azure Active Directory (AD) 保护的资源。 托管服务标识由 Azure 自动管理,可用于向支持 Azure AD 身份验证的服务进行身份验证,这样就无需在代码中插入凭据了。

    但是Azure中资源和资源之间是相互隔离的,不能够相互访问。

    所以,我们需要开启vm的系统分配的托管标识,然后再key vault 中开启 vm的访问策略。如下所示

    添加 “vm001” 对 “key vault” 的访问策略

     

     

     创建 “机密” 信息

     

     

    名称输入:conn;值输入 123 ,点击“创建”,

    然后使用ssh 登陆刚刚创建好的vm001上,获取访问 “key vault” 的 “access_token” 

    在终端窗口中,使用 CURL 向 Azure 资源终结点的本地托管标识发出请求,以获取 Azure Key Vault 的访问令牌

    <strong>世纪互联版</strong

    curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.cn' -H Metadata:true
    

    <strong>全球版</strong>

    curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net' -H Metadata:true  
    

     可以使用此访问令牌对 Azure Key Vault 进行身份验证。  下一个 CURL 请求显示如何使用 CURL 和 Key Vault REST API 从 Key Vault 读取密钥。  将需要 Key Vault 的 URL,该 URL 位于 Key Vault 的“概述” 页的“软件包” 部分。  另外,还需要在前面的调用中获取的访问令牌

    curl https://<YOUR-KEY-VAULT-URL>/secrets/<secret-name>?api-version=2016-10-01 -H "Authorization: Bearer <ACCESS TOKEN>"
    

    通过在请求头添加Bearer认证,获取key vault 中刚刚创建的机密信息  名称 “conn”,值 “123”

    bingo,成功的拿到密钥。开启系统分配的托管标识,其实就是授予例如 Azure VM资源的托管标识对另外一个Azure 资源的访问权限。

    三,结尾

    今天的文章大概介绍了 Azure系统的托管标识到底是个什么东西,可以用来干什么,这里不仅仅可以去 VM 访问 "key Vault",还可以访问 “Azure 存储”,“Azure Cosmos DB”等,都是同样的道理。

    下一篇开始讲解一下关于用户自己分配的托管标识,已经作一下演示,同时演示使用用户分配的托管身份运行应用程序。

    版权:转载请在文章明显位置注明作者及出处。如发现错误,欢迎批评指正。

    作者:Allen 版权:转载请在文章明显位置注明作者及出处。如发现错误,欢迎批评指正。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/309479.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[JavaWeb-JDBC]JDBC概念

JDBC&#xff1a; 1. 概念&#xff1a;Java DataBase Connectivity Java 数据库连接&#xff0c; Java语言操作数据库JDBC本质&#xff1a;其实是官方&#xff08;sun公司&#xff09;定义的一套操作所有关系型数据库的规则&#xff0c;即接口。各个数据库厂商去实现这套接口…

创建型模式——建造者模式

一、 实验目的与要求 1.练习使用工厂模式。设计相关的模拟场景并进行实施&#xff0c;验证模式特性&#xff0c;掌握其优缺点。 2.实验结束后&#xff0c;对相关内容进行总结。 二、实验内容 1.模式应用场景说明 Decis创建一个获取多套餐信息&#xff0c;包含A套餐&#xf…

android studio模拟器的安装与使用

来回弄了好几遍&#xff0c;网上也都搜过下载过很多版本&#xff0c;其中夜神模拟器是真的方便&#xff0c;也好用&#xff0c;棒极了&#xff01;那么我就来分享一下&#xff1a; 第一&#xff0c;肯定是下载啦 下载链接&#xff1a;夜神模拟器官方 接着就是连接了&#xff0c…

如何训练解决问题的能力?

作为程序员&#xff0c;技术能力固然很重要&#xff0c;但平时除了提升技术能力也别忽略了其它方面的能力。你可以写一辈子代码&#xff0c;但你不能一辈子只写代码。当你的技术能力足以使你在公司站稳脚跟时&#xff0c;你可以停下来锻炼自己的管理能力&#xff0c;比如职场中…

PS照片换底色

因为写简历嘛&#xff0c;手边没有白色底的照片&#xff0c;就用ps换了个底色&#xff0c;记录一下&#xff0c;下次可能还要用。这里我用幂幂的照片来代替。 打开ps&#xff0c;点击文件&#xff0c;点击打开&#xff0c;找到你需要处理的照片。 -点击旁边的对象选择工具&…

小心 HttpClient 中的 FormUrlEncodeContent 的 bug

小心 HttpClient 中的 FormUrlEncodeContent 的 bugIntro最近发现活动室预约项目里的上传图片有时候会有问题&#xff0c;周末找时间测试了一下&#xff0c;发现小图片的上传没问题&#xff0c;大图片上传会有问题&#xff0c;而且异常信息还很奇怪&#xff0c;System.UriForma…

IDEA导入MySQL的jdbc驱动出现“java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver”

目录 一、一般的解决思路 1、JDBC下载链接 2、选择下载内容&#xff0c;并进行下载 3、将驱动导入java项目 二、依然导入驱动失败怎么办 当我们在idea中使用java操作mysql数据库时会出现&#xff1a; Exception in thread "main" java.lang.ClassNotFoundExce…

Android程序设计基础-设计布局之伪今日头条主界面

一、 实验目的 &#xff08;1&#xff09; 掌握Andriod Studio的基本使用方法&#xff1b; &#xff08;2&#xff09; 掌握Andriod Studio中常用的控件及其使用方法&#xff1b; 二、实验内容 &#xff08;1&#xff09;使用Android Studio编写任意一个Android程序并运行&a…

基于 abp vNext 和 .NET Core 开发博客项目 - 博客接口实战篇(一)

系列文章使用 abp cli 搭建项目给项目瘦身&#xff0c;让它跑起来完善与美化&#xff0c;Swagger登场数据访问和代码优先自定义仓储之增删改查统一规范API&#xff0c;包装返回模型再说Swagger&#xff0c;分组、描述、小绿锁接入GitHub&#xff0c;用JWT保护你的API异常处理和…

MySql轻松入门系列——第一站 从源码角度轻松认识mysql整体框架图

一&#xff1a;背景1. 讲故事最近看各大技术社区&#xff0c;不管是知乎&#xff0c;掘金&#xff0c;博客园&#xff0c;csdn基本上看不到有小伙伴分享sqlserver类的文章&#xff0c;看样子这些年sqlserver没落了&#xff0c;已经后继无人了&#xff0c;再写sqlserver是不可能…

嫌弃俄罗斯的火箭报价太黑!马斯克自己造火箭!SpaceX首次载人发射任务成功!太牛了!...

当你仰望天空&#xff0c;可曾想象到&#xff0c;距地8公里的平流层每分钟有65架飞机在天空穿梭&#xff0c;距地20公里有太阳能激光通信无人机展翅翱翔、高空通信热气球悠闲的漂荡&#xff0c;再往上有世界各大企业的低轨宽带卫星&#xff0c;在往上是各国的若干低轨道、中轨道…

ASP.NET Core 3.x API版本控制

前言一般来说需要更改我们API的时候才考虑版本控制&#xff0c;但是我觉得我们不应该等到那时候来实现它&#xff0c;我们应该有一个版本策略从我们应用程序开发时就开始制定好我们的策略&#xff0c;我们一直遵循着这个策略进行开发。我们其实可以通过多种方式进行实现我们API…

[JavaWeb-HTML]HTML标签_文本标签_练习

案列效果: 文本素材: "中关村黑马程序员训练营"是由传智播客联合中关村软件园、CSDN&#xff0c; 并委托传智播客进行教学实施的软件开发高端培训机构&#xff0c;致力于服务各大软件企业&#xff0c;解决当前软件开发技术飞速发展&#xff0c; 而企业招不到优秀人才…

在 WSL2.0 的 Ubuntu 18 里使用 Docker

近日&#xff0c;随着Windows 10 2004版本的发布&#xff0c;WSL 2经过了近一年的insider测试&#xff0c;现在也正式上线了。Windows 10 2004中引入了一个真实的Linux kernel&#xff0c;使得系统全部的系统调用更加兼容。这也是首次&#xff0c;Linux kernel安装在Windows系统…

基本程序单元Activity—Activity生命周期之数据传递小程序

一、 实验目的 &#xff08;1&#xff09; 掌握Andriod Studio的基本使用方法&#xff1b; &#xff08;2&#xff09; 掌握Andriod Studio中常用的控件及其使用方法&#xff1b; 二、 实验内容 题目&#xff1a; 编写一个数据传递的小程序&#xff0c;要求在第一个界面输入…

Asp.Net Core+Dapper开发直播平台!

现在直播大热&#xff0c;从游戏直播到直播带货&#xff0c;这几年都是最热门的了。教育直播、视频会议、云点播等各种基于直播构建的业务模式&#xff0c;让众多企业也都开始配备自己的直播平台。14年在公司带队做了个游戏直播平台&#xff0c;疫情期间在家重构了下项目&#…

Magicodes.IE 在100万数据量下导入导出性能测试

原文作者&#xff1a;HueiFeng前言目前Magicodes.IE更新到了2.2.3&#xff0c;感谢大家的支持&#xff0c;同时建议大家在使用过程中如果遇到一些问题或者说需要一些额外的功能可以直接提issues&#xff0c;当然更建议大家提PR。‍近期更新2020.05.24 【Nuget】版本更新到2.2.2…

[JavaWeb-HTML]HTML文本标签

文本标签&#xff1a;和文本有关的标签 * 注释&#xff1a;<!-- 注释内容 -->* <h1> to <h6>&#xff1a;标题标签* h1~h6:字体大小逐渐递减* <p>&#xff1a;段落标签* <br>&#xff1a;换行标签* <hr>&#xff1a;展示一条水平线* 属性&…

我的『MVP.Blazor』快速创建与部署

‍最近一直在录Blog.Core相关的操作视频&#xff0c;也没有研究过什么新的东西&#xff0c;公司也各种项目迭代&#xff0c;特别是从Fwk迁移到NetCore&#xff0c;真的是不是一个容易的事&#xff0c;闲的时候&#xff0c;为了歇歇脑子&#xff0c;就抽出时间简单看了看又有哪些…