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 协同工作
Azure 资源管理器收到请求,要求在 VM 上启用系统分配托管标识。(图1)
Azure 资源管理器在 Azure AD 中创建与 VM 标识相对应的服务主体。 服务主体在此订阅信任的 Azure AD 租户中创建。
Azure 资源管理器通过使用服务主体客户端 ID 和证书更新 Azure 实例元数据服务标识终结点来配置 VM 上的标识。
VM 有了标识以后,请根据服务主体信息向 VM 授予对 Azure 资源的访问权限。 若要调用 Azure 资源管理器,请在 Azure AD 中使用基于角色的访问控制 (RBAC) 向 VM 服务主体分配相应的角色。 若要调用 Key Vault,请授予代码对 Key Vault 中特定机密或密钥的访问权限。
在 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 或更高版本。
- resource 参数指定了要向其发送令牌的服务。 若要向 Azure 资源管理器进行身份验证,请使用
调用了 Azure AD,以便使用在步骤 3 中配置的客户端 ID 和证书请求访问令牌(在步骤 5 中指定)。 Azure AD 返回 JSON Web 令牌 (JWT) 访问令牌。
代码在调用支持 Azure AD 身份验证的服务时发送访问令牌。
4,用户分配托管标识如何与 Azure VM 协同工作
Azure 资源管理器收到请求,要求创建用户分配托管标识。
Azure 资源管理器在 Azure AD 中创建与用户分配托管标识相对应的服务主体。 服务主体在此订阅信任的 Azure AD 租户中创建。
Azure 资源管理器收到在 VM 上配置用户分配的托管标识的请求,并使用用户分配的托管标识服务主体客户端 ID 和证书更新 Azure 实例元数据服务标识终结点。
创建用户分配托管标识以后,请根据服务主体信息向标识授予对 Azure 资源的访问权限。 若要调用 Azure 资源管理器,请在 Azure AD 中使用 RBAC 向用户分配标识的服务主体分配相应的角色。 若要调用 Key Vault,请授予代码对 Key Vault 中特定机密或密钥的访问权限。
备注
也可在步骤 3 之前执行此步骤。
在 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
或指定更高的版本。
- resource 参数指定了要向其发送令牌的服务。 若要向 Azure 资源管理器进行身份验证,请使用
调用了 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 的访问令牌
- 世纪互联版
- 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
- 全球版
- 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
版权:转载请在文章明显位置注明作者及出处。如发现错误,欢迎批评指正。
Azure AD(三)知识补充-Azure资源的托管标识的更多相关文章
- Azure AD(五)使用多租户应用程序模式让任何 Azure Active Directory 用户登录
一,引言 距离上次分享关于 “Azure AD" 的知识过去差不多2个多月了, 今天最近刚好也是学习,分享一下关于Azure AD 使用多租户应用程序模式让任何 Azure Active D ...
- Azure AD(六)添加自定义域名
一,引言 每当我们在 Azure Portal 上创建新的租户时,都会在设置租户的 "初始域名" 后加上 ".onmicrosoft.com",默认情况下 &q ...
- Azure AD(一)入门认识
一,引言(吹水) 距离上一次介绍Azure Functions的相关博文以及过期快一个月了,本来早早都想好已经规划好的Azure的相关的学习的路线,无奈还是由于自己文笔不好以及自身太懒,导致博文没有更 ...
- Azure AD(二)调用受Microsoft 标识平台保护的 ASP.NET Core Web API 上
一,引言 上一节讲到Azure AD的一些基础概念,以及Azure AD究竟可以用来做什么?本节就接着讲如何在我们的项目中集成Azure AD 包含我们的API资源(其实这里还可以在 SPA单页面应用 ...
- Azure AD(二)调用受Microsoft 标识平台保护的 ASP.NET Core Web API 下
一,引言 上一节讲到如何在我们的项目中集成Azure AD 保护我们的API资源,以及在项目中集成Swagger,并且如何把Swagger作为一个客户端进行认证和授权去访问我们的WebApi资源的?本 ...
- Azure AD B2C(二)使用Azure AD B2C为ASP.NET Core 应用设置社交帐户(邮箱)登录/注册
一,引言 上次关于Azure AD B2C 讲到一些概念,有介绍到,Azure AD B2C 也是一种身份验证的解决方案,但是它运行客户使用其首选的社交,企业或者本地账户标识对应用程序和API进行单一 ...
- Azure AD Domain Service(一)将 Azure VM 实例添加到域服务里
一,引言 有网友提到实际项目中如何将 Azuer VM 实例加入到 Azure AD 域,那我们今天就带着整个问题开始今天的分析!首先我们得了解什么是 Azure AD 域服务,Azure AD 域服 ...
- Windows Azure Active Directory (2) Windows Azure AD基础
<Windows Azure Platform 系列文章目录> Windows Azure AD (WAAD)是Windows Azure提供的一个REST风格的服务,为您的云服务提供了身 ...
- Azure AD B2C(一)初识
一,引言(上节回顾) 上一节讲到Azure AD的一些基础概念,以及如何运用 Azure AD 包含API资源,Azure AD 是微软提供的云端的身份标识和资源访问服务,帮助员工/用户/管理员访问一 ...
随机推荐
- 【面试题】String类、包装类的不可变性
不可变类的意思是创建该类的实例后,该实例的实例变量是不可改变的.Java提供的8个包装类和String类都是不可变类.因此String和8个包装类都具有不可变性. 就拿String类来说,通过阅读St ...
- 前端——Vue-cli 通过UI页面创建项目
在使用该教程创建项目时请先安装vue ui,具体安装方法请百度 1.打开CMD,输入vue ui 2.点击创建按钮,选择项目目录 3.填写项目名 4.配置项目 选择项目所需要的模块
- springboot关于webmvc配置问题记录
在之前的文章(springboot配置静态资源访问路径)中说过,springboot默认的加载静态资源的地方是在resources目录下的static文件夹下,其实除了resources目录下得sta ...
- 随笔 - B树算法实现
写代码之前,再回顾一下B树是什么,满足什么样的规则 B树规则: 排序方式:所有节点关键字是按递增次序排列,并遵循左小右大原则 子节点数:非叶节点的子节点数>1,且<=M ,且M>=2 ...
- [codeforces-315D div2]模拟
题目:给两个字符串a.b,问从a中删去若干字符后最多可以得到多少个b串的重复串(bb...b的形式,b的长度不超过100),其中a串是由一个长度不超过100的字符串s重复k次得到的 思路: 暴力匹配a ...
- 《学习笔记》.NET Core API搭建
1.创建 ASP.NET Core Web程序,记住取消HTTPS配置 2.此时一个简单的.NET Core API 架子搭建好了,细心的人可以发现Properties下面不是CS文件,确是launc ...
- chmod指令用法
指令名称 : chmod 使用权限 : 所有使用者 使用方式 : chmod [-cfvR] [--help] [--version] mode file... 说明 : Linux/Unix 的档案 ...
- bcdedit 替代easybcd 编辑grub
bcdedit这个命令是win7下,继续安装xubuntu时遇到的.当时xubuntu的语言设置为en-us,时区改为HK,可是仍有很多不太适应的地方.于是,删了xubuntu,重装它.同时,grub ...
- react+express实现跨域
1. 首先复习一下跨域的几种主要方式: a. jsonp b. cors c. 代理服务(开发环境下常用) 2. 代理服务器:可实现转发请求.即浏览器在3000端口发出请求,通过代理转发,将请求发送给 ...
- linux常用命令---打包压缩解压
打包压缩解压